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 <linux/sizes.h> 14 15 #ifndef __ASSEMBLY__ 16 17 #include <linux/stringify.h> 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 39 /* 40 * Memory configuration. 41 * 42 * The prior stage BOLT bootloader sets up memory for us. 43 * 44 * An example boot memory layout after loading everything is: 45 * 46 * 0x0000 8000 vmlinux.bin.gz 47 * : [~31 MiB uncompressed max] 48 * 0x01ef f000 FIT containing signed public key 49 * : [~2 KiB in size] 50 * 0x01f0 0000 DTB copied from prior-stage-provided region 51 * : [~1 MiB max] 52 * 0x0200 0000 FIT containing ramdisk and device tree 53 * : initramfs.cpio.gz 54 * : [~208 MiB uncompressed max, to CMA/bmem low address] 55 * : [~80 MiB compressed max, to PSB low address] 56 * : device tree binary 57 * : [~60 KiB] 58 * 0x0700 0000 Prior stage bootloader (PSB) 59 * : 60 * 0x0761 7000 Prior-stage-provided device tree binary (DTB) 61 * : [~40 KiB in size] 62 * 0x0f00 0000 Contiguous memory allocator (CMA/bmem) low address 63 * : 64 * 0x8010 0000 U-Boot code at ELF load address 65 * : [~500 KiB in size, stripped] 66 * 0xc000 0000 Top of RAM 67 * 68 * Setting gd->relocaddr to CONFIG_SYS_TEXT_BASE in dram_init_banksize 69 * prevents U-Boot from relocating itself when it is run as an ELF 70 * program by the prior stage bootloader. 71 * 72 * We want to keep the ramdisk and FDT in the FIT image in-place, to 73 * accommodate stblinux's bmem and CMA regions. To accomplish this, 74 * we set initrd_high and fdt_high to 0xffffffff, and the load and 75 * entry addresses of the FIT ramdisk entry to 0x0. 76 * 77 * Overwriting the prior stage bootloader causes memory instability, 78 * so the compressed initramfs needs to fit between the load address 79 * and the PSB low address. In BOLT's default configuration this 80 * limits the compressed size of the initramfs to approximately 80 81 * MiB. However, BOLT can be configured to allow loading larger 82 * initramfs images, in which case this limitation is eliminated. 83 */ 84 #define CONFIG_SYS_SDRAM_BASE 0x00000000 85 #define CONFIG_SYS_INIT_RAM_SIZE 0x100000 86 #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \ 87 CONFIG_SYS_INIT_RAM_SIZE - \ 88 GENERATED_GBL_DATA_SIZE) 89 90 /* 91 * CONFIG_SYS_LOAD_ADDR - 1 MiB. 92 */ 93 #define CONFIG_SYS_FDT_SAVE_ADDRESS 0x1f00000 94 #define CONFIG_SYS_CBSIZE 512 95 #define CONFIG_SYS_MAXARGS 32 96 97 /* 98 * Large kernel image bootm configuration. 99 */ 100 #define CONFIG_SYS_BOOTM_LEN SZ_64M 101 102 /* 103 * NS16550 configuration. 104 */ 105 #define V_NS16550_CLK 81000000 106 107 #define CONFIG_SYS_NS16550 108 #define CONFIG_SYS_NS16550_SERIAL 109 #define CONFIG_SYS_NS16550_REG_SIZE (-4) 110 #define CONFIG_SYS_NS16550_CLK V_NS16550_CLK 111 112 /* 113 * Serial console configuration. 114 */ 115 #define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600, \ 116 115200} 117 118 /* 119 * Informational display configuration. 120 */ 121 122 /* 123 * Command configuration. 124 */ 125 126 /* 127 * Flash configuration. 128 */ 129 #define CONFIG_SPI_FLASH_STMICRO 130 #define CONFIG_SPI_FLASH_MACRONIX 131 132 /* 133 * Filesystem configuration. 134 */ 135 #define CONFIG_DOS_PARTITION 136 137 /* 138 * Environment configuration. 139 */ 140 141 /* 142 * Save the prior stage provided DTB. 143 */ 144 /* 145 * Enable in-place RFS with this initrd_high setting. 146 */ 147 #define CONFIG_EXTRA_ENV_SETTINGS \ 148 "fdtsaveaddr=" __stringify(CONFIG_SYS_FDT_SAVE_ADDRESS) "\0" \ 149 "initrd_high=0xffffffff\0" \ 150 "fdt_high=0xffffffff\0" 151 152 /* 153 * Set fdtaddr to prior stage-provided DTB in board_late_init, when 154 * writeable environment is available. 155 */ 156 157 #endif /* __BCMSTB_H */ 158