summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-bcmbca/include/boot_blob.h
blob: 50f07724c57671334b80faa515a79515fdfb24a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/* SPDX-License-Identifier: GPL-2.0+
 *
 *  Copyright 2019 Broadcom Ltd.
 */

#ifndef _BOOT_BLOB_H
#define _BOOT_BLOB_H

#define BOOT_BLOB_SUCCESS		0
#define BOOT_BLOB_NOT_IN_HASTTBL	-1
#define BOOT_BLOB_INVALID_PARAM		-2
#define BOOT_BLOB_MAGIC_NOT_FOUND	-3
#define BOOT_BLOB_VERIFICATION_FAIL	-4

#define DPFE_MAGIC_MASK		0xffffff00
#define MCB_TABLE_MAGIC		0x00CB00CB
#define DDR3_TABLE_MAGIC	0x64447233
#define DDR4_TABLE_MAGIC	0x64447234
#define DPFE_DDR3_TABLE_MAGIC	0x64503300
#define DPFE_DDR4_TABLE_MAGIC	0x64503400
#define UBOOT_ENV_MAGIC		0x75456e76
#define TPL_TABLE_MAGIC		0x74506c21

#define IS_DPFE_DDR3_MAGIC(magic)	\
	(((magic)&DPFE_MAGIC_MASK) == DPFE_DDR3_TABLE_MAGIC)
#define IS_DPFE_DDR4_MAGIC(magic)	\
	(((magic)&DPFE_MAGIC_MASK) == DPFE_DDR4_TABLE_MAGIC)
#define IS_DPFE_MAGIC(magic)		\
	(IS_DPFE_DDR3_MAGIC(magic) || IS_DPFE_DDR4_MAGIC(magic))

#define BOOT_BLOB_MAX_MAGIC_SEARCH	6
#define BOOT_BLOB_MAX_MAGIC_NUMS	6
#define BOOT_BLOB_SEARCH_START_ADDR	0x0
#define BOOT_BLOB_SEARCH_END_ADDR	0x200000
#define BOOT_BLOB_SEARCH_BOUNDARY	0x1000
#define BOOT_BLOB_MAX_ENV_SIZE		0x10000

#if defined(CONFIG_BCM6846) || defined(CONFIG_BCM6878)
#define BOOT_BLOB_MAX_DDR_SIZE		0x8000
#else
#define BOOT_BLOB_MAX_DDR_SIZE		0x10000
#endif

struct overlays {
	uint32_t ovltype;
	uint32_t selector;
	uint32_t offset;
	uint32_t size;
	uint8_t sha[32];
};

typedef struct _boot_blob_hdr {
	uint32_t magic;
	uint32_t length;
	uint32_t crc;
}boot_blob_hdr;

int load_boot_blob(uint32_t magic, uint32_t sel, void *data, int* len);
void *load_spl_env(void *buffer);
struct overlays* get_boot_blob_hash_entry(int i);

#endif