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