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