1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * (C) Copyright 2018 Cisco Systems, Inc. 4 * 5 * Author: Thomas Fitzsimmons <fitzsim@fitzsim.org> 6 * 7 * Configuration settings for the Broadcom BCMSTB SoC family. 8 */ 9 10 #ifndef __BCMSTB_H 11 #define __BCMSTB_H 12 13 #include "version.h" 14 #include <linux/sizes.h> 15 16 #ifndef __ASSEMBLY__ 17 18 #include <linux/types.h> 19 20 struct bcmstb_boot_parameters { 21 u32 r0; 22 u32 r1; 23 u32 r2; 24 u32 r3; 25 u32 sp; 26 u32 lr; 27 }; 28 29 extern struct bcmstb_boot_parameters bcmstb_boot_parameters; 30 31 extern phys_addr_t prior_stage_fdt_address; 32 33 #endif /* __ASSEMBLY__ */ 34 35 /* 36 * CPU configuration. 37 */ 38 #define CONFIG_SKIP_LOWLEVEL_INIT 39 40 /* 41 * Memory configuration. 42 * 43 * The prior stage BOLT bootloader sets up memory for us. 44 * 45 * An example boot memory layout after loading everything is: 46 * 47 * 0x0000 8000 vmlinux.bin.gz 48 * : [~31 MiB uncompressed max] 49 * 0x01ef f000 FIT containing signed public key 50 * : [~2 KiB in size] 51 * 0x01f0 0000 DTB copied from prior-stage-provided region 52 * : [~1 MiB max] 53 * 0x0200 0000 FIT containing ramdisk and device tree 54 * : initramfs.cpio.gz 55 * : [~208 MiB uncompressed max, to CMA/bmem low address] 56 * : [~80 MiB compressed max, to PSB low address] 57 * : device tree binary 58 * : [~60 KiB] 59 * 0x0700 0000 Prior stage bootloader (PSB) 60 * : 61 * 0x0761 7000 Prior-stage-provided device tree binary (DTB) 62 * : [~40 KiB in size] 63 * 0x0f00 0000 Contiguous memory allocator (CMA/bmem) low address 64 * : 65 * 0x8010 0000 U-Boot code at ELF load address 66 * : [~500 KiB in size, stripped] 67 * 0xc000 0000 Top of RAM 68 * 69 * Setting gd->relocaddr to CONFIG_SYS_TEXT_BASE in dram_init_banksize 70 * prevents U-Boot from relocating itself when it is run as an ELF 71 * program by the prior stage bootloader. 72 * 73 * We want to keep the ramdisk and FDT in the FIT image in-place, to 74 * accommodate stblinux's bmem and CMA regions. To accomplish this, 75 * we set initrd_high and fdt_high to 0xffffffff, and the load and 76 * entry addresses of the FIT ramdisk entry to 0x0. 77 * 78 * Overwriting the prior stage bootloader causes memory instability, 79 * so the compressed initramfs needs to fit between the load address 80 * and the PSB low address. In BOLT's default configuration this 81 * limits the compressed size of the initramfs to approximately 80 82 * MiB. However, BOLT can be configured to allow loading larger 83 * initramfs images, in which case this limitation is eliminated. 84 */ 85 #define CONFIG_SYS_SDRAM_BASE 0x00000000 86 #define CONFIG_SYS_INIT_RAM_SIZE 0x100000 87 #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \ 88 CONFIG_SYS_INIT_RAM_SIZE - \ 89 GENERATED_GBL_DATA_SIZE) 90 #define CONFIG_SYS_LOAD_ADDR 0x2000000 91 92 /* 93 * CONFIG_SYS_LOAD_ADDR - 1 MiB. 94 */ 95 #define CONFIG_SYS_FDT_SAVE_ADDRESS 0x1f00000 96 #define CONFIG_SYS_CBSIZE 512 97 #define CONFIG_SYS_MAXARGS 32 98 99 /* 100 * Large kernel image bootm configuration. 101 */ 102 #define CONFIG_SYS_BOOTM_LEN SZ_64M 103 104 /* 105 * NS16550 configuration. 106 */ 107 #define V_NS16550_CLK 81000000 108 109 #define CONFIG_SYS_NS16550 110 #define CONFIG_SYS_NS16550_SERIAL 111 #define CONFIG_SYS_NS16550_REG_SIZE (-4) 112 #define CONFIG_SYS_NS16550_CLK V_NS16550_CLK 113 114 /* 115 * Serial console configuration. 116 */ 117 #define CONFIG_BAUDRATE 115200 118 #define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600, \ 119 115200} 120 121 /* 122 * Informational display configuration. 123 */ 124 #define CONFIG_REVISION_TAG 125 126 /* 127 * Command configuration. 128 */ 129 #define CONFIG_CMD_ASKENV 130 #define CONFIG_CMD_CACHE 131 #define CONFIG_CMD_EXT2 132 #define CONFIG_CMD_MMC 133 134 /* 135 * Flash configuration. 136 */ 137 #define CONFIG_ST_SMI 138 #define CONFIG_SPI_FLASH_STMICRO 139 #define CONFIG_SPI_FLASH_MACRONIX 140 141 /* 142 * Filesystem configuration. 143 */ 144 #define CONFIG_DOS_PARTITION 145 #define CONFIG_CMD_EXT4 146 #define CONFIG_FS_EXT4 147 #define CONFIG_CMD_FS_GENERIC 148 149 /* 150 * Environment configuration. 151 */ 152 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT 153 #define CONFIG_ENV_SIZE (64 << 10) /* 64 KiB */ 154 #define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE) 155 #define CONFIG_ENV_OVERWRITE 156 157 /* 158 * Save the prior stage provided DTB. 159 */ 160 #define CONFIG_PREBOOT \ 161 "fdt addr ${fdtcontroladdr};" \ 162 "fdt move ${fdtcontroladdr} ${fdtsaveaddr};" \ 163 "fdt addr ${fdtsaveaddr};" 164 /* 165 * Enable in-place RFS with this initrd_high setting. 166 */ 167 #define CONFIG_EXTRA_ENV_SETTINGS \ 168 "fdtsaveaddr=" __stringify(CONFIG_SYS_FDT_SAVE_ADDRESS) "\0" \ 169 "initrd_high=0xffffffff\0" \ 170 "fdt_high=0xffffffff\0" 171 172 /* 173 * Set fdtaddr to prior stage-provided DTB in board_late_init, when 174 * writeable environment is available. 175 */ 176 #define CONFIG_BOARD_LATE_INIT 177 178 #endif /* __BCMSTB_H */ 179