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