1config BCM2835 2 bool "Broadcom BCM2835 SoC support" 3 depends on ARCH_BCM283X 4 select CPU_ARM1176 5 6config BCM2836 7 bool "Broadcom BCM2836 SoC support" 8 depends on ARCH_BCM283X 9 select ARMV7_LPAE 10 select CPU_V7A 11 12config BCM2837 13 bool "Broadcom BCM2837 SoC support" 14 depends on ARCH_BCM283X 15 16config BCM2837_32B 17 bool "Broadcom BCM2837 SoC 32-bit support" 18 depends on ARCH_BCM283X 19 select BCM2837 20 select ARMV7_LPAE 21 select CPU_V7A 22 23config BCM2837_64B 24 bool "Broadcom BCM2837 SoC 64-bit support" 25 depends on ARCH_BCM283X 26 select BCM2837 27 select ARM64 28 29config BCM2711 30 bool "Broadcom BCM2711 SoC support" 31 depends on ARCH_BCM283X 32 33config BCM2711_32B 34 bool "Broadcom BCM2711 SoC 32-bit support" 35 depends on ARCH_BCM283X 36 select BCM2711 37 select ARMV7_LPAE 38 select CPU_V7A 39 40config BCM2711_64B 41 bool "Broadcom BCM2711 SoC 64-bit support" 42 depends on ARCH_BCM283X 43 select BCM2711 44 select ARM64 45 46menu "Broadcom BCM283X family" 47 depends on ARCH_BCM283X 48 49choice 50 prompt "Broadcom BCM283X board select" 51 optional 52 53config TARGET_RPI 54 bool "Raspberry Pi (all BCM2835 variants)" 55 help 56 Support for all ARM1176-/BCM2835-based Raspberry Pi variants, such as 57 the A, A+, B, B+, Compute Module, and Zero. This option cannot 58 support BCM2836/BCM2837-based Raspberry Pis such as the RPi 2 and 59 RPi 3 due to different peripheral address maps. 60 61 This option creates a build targeting the ARM1176 ISA. 62 select BCM2835 63 64config TARGET_RPI_0_W 65 bool "Raspberry Pi Zero W" 66 help 67 Support for all ARM1176-/BCM2835-based Raspberry Pi variants, such as 68 the RPi Zero model W. 69 70 This option assumes the VideoCore firmware is configured to use the 71 mini UART (rather than PL011) for the serial console. This is the 72 default on the RPi Zero W. To enable the UART console, the following 73 non-default option must be present in config.txt: enable_uart=1. 74 This is required for U-Boot to operate correctly, even if you only 75 care about the HDMI/usbkbd console. 76 77 This option creates a build targeting the ARMv7/AArch32 ISA. 78 select BCM2835 79 80config TARGET_RPI_2 81 bool "Raspberry Pi 2" 82 help 83 Support for all BCM2836-based Raspberry Pi variants, such as 84 the RPi 2 model B. 85 86 This option also supports BCM2837-based variants such as the RPi 3 87 Model B, when run in 32-bit mode, provided you have configured the 88 VideoCore firmware to select the PL011 UART for the console by: 89 a) config.txt should contain dtoverlay=pi3-miniuart-bt. 90 b) You should run the following to tell the VC FW to process DT when 91 booting, and copy u-boot.bin.img (rather than u-boot.bin) to the SD 92 card as the kernel image: 93 94 path/to/kernel/scripts/mkknlimg --dtok u-boot.bin u-boot.bin.img 95 96 This works as of firmware.git commit 046effa13ebc "firmware: 97 arm_loader: emmc clock depends on core clock See: 98 https://github.com/raspberrypi/firmware/issues/572". 99 100 This option creates a build targeting the ARMv7/AArch32 ISA. 101 select BCM2836 102 103config TARGET_RPI_3_32B 104 bool "Raspberry Pi 3 32-bit build" 105 help 106 Support for all BCM2837-based Raspberry Pi variants, such as 107 the RPi 3 model B, in AArch32 (32-bit) mode. 108 109 This option assumes the VideoCore firmware is configured to use the 110 mini UART (rather than PL011) for the serial console. This is the 111 default on the RPi 3. To enable the UART console, the following non- 112 default option must be present in config.txt: enable_uart=1. This is 113 required for U-Boot to operate correctly, even if you only care 114 about the HDMI/usbkbd console. 115 116 This option creates a build targeting the ARMv7/AArch32 ISA. 117 select BCM2837_32B 118 119config TARGET_RPI_3 120 bool "Raspberry Pi 3 64-bit build" 121 help 122 Support for all BCM2837-based Raspberry Pi variants, such as 123 the RPi 3 model B, in AArch64 (64-bit) mode. 124 125 This option assumes the VideoCore firmware is configured to use the 126 mini UART (rather than PL011) for the serial console. This is the 127 default on the RPi 3. To enable the UART console, the following non- 128 default option must be present in config.txt: enable_uart=1. This is 129 required for U-Boot to operate correctly, even if you only care 130 about the HDMI/usbkbd console. 131 132 At the time of writing, the VC FW requires a non-default option in 133 config.txt to request the ARM CPU boot in 64-bit mode: 134 arm_control=0x200 135 136 The VC FW typically provides ARM "stub" code to set up the CPU and 137 quiesce secondary SMP CPUs. This is not currently true in 64-bit 138 mode. In order to boot U-Boot before the VC FW is enhanced, please 139 see the commit description for the commit which added RPi3 support 140 for a workaround. Since the instructions are temporary, they are not 141 duplicated here. The VC FW enhancement is tracked in 142 https://github.com/raspberrypi/firmware/issues/579. 143 144 This option creates a build targeting the ARMv8/AArch64 ISA. 145 select BCM2837_64B 146 147config TARGET_RPI_4_32B 148 bool "Raspberry Pi 4 32-bit build" 149 help 150 Support for all BCM2711-based Raspberry Pi variants, such as 151 the RPi 4 model B, in AArch32 (32-bit) mode. 152 153 This option assumes the VideoCore firmware is configured to use the 154 mini UART (rather than PL011) for the serial console. This is the 155 default on the RPi 4. To enable the UART console, the following non- 156 default option must be present in config.txt: enable_uart=1. This is 157 required for U-Boot to operate correctly, even if you only care 158 about the HDMI/usbkbd console. 159 160 Due to hardware incompatibilities, this can't be used with 161 BCM283/5/6/7. 162 163 This option creates a build targeting the ARMv7/AArch32 ISA. 164 select BCM2711_32B 165 166config TARGET_RPI_4 167 bool "Raspberry Pi 4 64-bit build" 168 help 169 Support for all BCM2711-based Raspberry Pi variants, such as 170 the RPi 4 model B, in AArch64 (64-bit) mode. 171 172 This option assumes the VideoCore firmware is configured to use the 173 mini UART (rather than PL011) for the serial console. This is the 174 default on the RPi 4. To enable the UART console, the following non- 175 default option must be present in config.txt: enable_uart=1. This is 176 required for U-Boot to operate correctly, even if you only care 177 about the HDMI/usbkbd console. 178 179 Due to hardware incompatibilities, this can't be used with 180 BCM283/5/6/7. 181 182 Also, due to a bug in firmware, switching to 64bit mode doesn't 183 happen automatically based on the kernel's image filename. See 184 https://github.com/raspberrypi/firmware/issues/1193 for more details. 185 Until that is resolved, the configuration (config.txt) needs to 186 explicitly set: arm_64bit=1. 187 188 This option creates a build targeting the ARMv8/AArch64 ISA. 189 select BCM2711_64B 190 191config TARGET_RPI_ARM64 192 bool "Raspberry Pi one binary 64-bit build" 193 help 194 Support for all armv8 based Raspberry Pi variants, such as 195 the RPi 4 model B, in AArch64 (64-bit) mode. 196 select ARM64 197 198endchoice 199 200config SYS_BOARD 201 default "rpi" 202 203config SYS_VENDOR 204 default "raspberrypi" 205 206config SYS_SOC 207 default "bcm283x" 208 209config SYS_CONFIG_NAME 210 default "rpi" 211 212endmenu 213