X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=arch%2Farm%2Fmach-bcm283x%2FKconfig;h=00419bf25495237093b2f67db02b3aa9ff9e84f1;hb=f5a122e2abe9a4a589a4ae30145b1fdf4f5207d1;hp=2315a134382dfd48e09d813e90d9ea1bf8a631dc;hpb=c9bb942e2f91d9f8e5f25ed1961eba2d64f65b8d;p=oweals%2Fu-boot.git diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig index 2315a13438..00419bf254 100644 --- a/arch/arm/mach-bcm283x/Kconfig +++ b/arch/arm/mach-bcm283x/Kconfig @@ -1,3 +1,48 @@ +config BCM2835 + bool "Broadcom BCM2835 SoC support" + depends on ARCH_BCM283X + select CPU_ARM1176 + +config BCM2836 + bool "Broadcom BCM2836 SoC support" + depends on ARCH_BCM283X + select ARMV7_LPAE + select CPU_V7A + +config BCM2837 + bool "Broadcom BCM2837 SoC support" + depends on ARCH_BCM283X + +config BCM2837_32B + bool "Broadcom BCM2837 SoC 32-bit support" + depends on ARCH_BCM283X + select BCM2837 + select ARMV7_LPAE + select CPU_V7A + +config BCM2837_64B + bool "Broadcom BCM2837 SoC 64-bit support" + depends on ARCH_BCM283X + select BCM2837 + select ARM64 + +config BCM2711 + bool "Broadcom BCM2711 SoC support" + depends on ARCH_BCM283X + +config BCM2711_32B + bool "Broadcom BCM2711 SoC 32-bit support" + depends on ARCH_BCM283X + select BCM2711 + select ARMV7_LPAE + select CPU_V7A + +config BCM2711_64B + bool "Broadcom BCM2711 SoC 64-bit support" + depends on ARCH_BCM283X + select BCM2711 + select ARM64 + menu "Broadcom BCM283X family" depends on ARCH_BCM283X @@ -6,18 +51,154 @@ choice optional config TARGET_RPI - bool "Raspberry Pi" - select CPU_ARM1176 + bool "Raspberry Pi (all BCM2835 variants)" + help + Support for all ARM1176-/BCM2835-based Raspberry Pi variants, such as + the A, A+, B, B+, Compute Module, and Zero. This option cannot + support BCM2836/BCM2837-based Raspberry Pis such as the RPi 2 and + RPi 3 due to different peripheral address maps. + + This option creates a build targeting the ARM1176 ISA. + select BCM2835 + +config TARGET_RPI_0_W + bool "Raspberry Pi Zero W" + help + Support for all ARM1176-/BCM2835-based Raspberry Pi variants, such as + the RPi Zero model W. + + This option assumes the VideoCore firmware is configured to use the + mini UART (rather than PL011) for the serial console. This is the + default on the RPi Zero W. To enable the UART console, the following + non-default option must be present in config.txt: enable_uart=1. + This is required for U-Boot to operate correctly, even if you only + care about the HDMI/usbkbd console. + + This option creates a build targeting the ARMv7/AArch32 ISA. + select BCM2835 config TARGET_RPI_2 bool "Raspberry Pi 2" - select CPU_V7 + help + Support for all BCM2836-based Raspberry Pi variants, such as + the RPi 2 model B. + + This option also supports BCM2837-based variants such as the RPi 3 + Model B, when run in 32-bit mode, provided you have configured the + VideoCore firmware to select the PL011 UART for the console by: + a) config.txt should contain dtoverlay=pi3-miniuart-bt. + b) You should run the following to tell the VC FW to process DT when + booting, and copy u-boot.bin.img (rather than u-boot.bin) to the SD + card as the kernel image: + + path/to/kernel/scripts/mkknlimg --dtok u-boot.bin u-boot.bin.img + + This works as of firmware.git commit 046effa13ebc "firmware: + arm_loader: emmc clock depends on core clock See: + https://github.com/raspberrypi/firmware/issues/572". + + This option creates a build targeting the ARMv7/AArch32 ISA. + select BCM2836 + +config TARGET_RPI_3_32B + bool "Raspberry Pi 3 32-bit build" + help + Support for all BCM2837-based Raspberry Pi variants, such as + the RPi 3 model B, in AArch32 (32-bit) mode. + + This option assumes the VideoCore firmware is configured to use the + mini UART (rather than PL011) for the serial console. This is the + default on the RPi 3. To enable the UART console, the following non- + default option must be present in config.txt: enable_uart=1. This is + required for U-Boot to operate correctly, even if you only care + about the HDMI/usbkbd console. + + This option creates a build targeting the ARMv7/AArch32 ISA. + select BCM2837_32B + +config TARGET_RPI_3 + bool "Raspberry Pi 3 64-bit build" + help + Support for all BCM2837-based Raspberry Pi variants, such as + the RPi 3 model B, in AArch64 (64-bit) mode. + + This option assumes the VideoCore firmware is configured to use the + mini UART (rather than PL011) for the serial console. This is the + default on the RPi 3. To enable the UART console, the following non- + default option must be present in config.txt: enable_uart=1. This is + required for U-Boot to operate correctly, even if you only care + about the HDMI/usbkbd console. + + At the time of writing, the VC FW requires a non-default option in + config.txt to request the ARM CPU boot in 64-bit mode: + arm_control=0x200 + + The VC FW typically provides ARM "stub" code to set up the CPU and + quiesce secondary SMP CPUs. This is not currently true in 64-bit + mode. In order to boot U-Boot before the VC FW is enhanced, please + see the commit description for the commit which added RPi3 support + for a workaround. Since the instructions are temporary, they are not + duplicated here. The VC FW enhancement is tracked in + https://github.com/raspberrypi/firmware/issues/579. + + This option creates a build targeting the ARMv8/AArch64 ISA. + select BCM2837_64B + +config TARGET_RPI_4_32B + bool "Raspberry Pi 4 32-bit build" + help + Support for all BCM2711-based Raspberry Pi variants, such as + the RPi 4 model B, in AArch32 (32-bit) mode. + + This option assumes the VideoCore firmware is configured to use the + mini UART (rather than PL011) for the serial console. This is the + default on the RPi 4. To enable the UART console, the following non- + default option must be present in config.txt: enable_uart=1. This is + required for U-Boot to operate correctly, even if you only care + about the HDMI/usbkbd console. + + Due to hardware incompatibilities, this can't be used with + BCM283/5/6/7. + + This option creates a build targeting the ARMv7/AArch32 ISA. + select BCM2711_32B + +config TARGET_RPI_4 + bool "Raspberry Pi 4 64-bit build" + help + Support for all BCM2711-based Raspberry Pi variants, such as + the RPi 4 model B, in AArch64 (64-bit) mode. + + This option assumes the VideoCore firmware is configured to use the + mini UART (rather than PL011) for the serial console. This is the + default on the RPi 4. To enable the UART console, the following non- + default option must be present in config.txt: enable_uart=1. This is + required for U-Boot to operate correctly, even if you only care + about the HDMI/usbkbd console. + + Due to hardware incompatibilities, this can't be used with + BCM283/5/6/7. + + Also, due to a bug in firmware, switching to 64bit mode doesn't + happen automatically based on the kernel's image filename. See + https://github.com/raspberrypi/firmware/issues/1193 for more details. + Until that is resolved, the configuration (config.txt) needs to + explicitly set: arm_64bit=1. + + This option creates a build targeting the ARMv8/AArch64 ISA. + select BCM2711_64B + +config TARGET_RPI_ARM64 + bool "Raspberry Pi one binary 64-bit build" + help + Support for all armv8 based Raspberry Pi variants, such as + the RPi 4 model B, in AArch64 (64-bit) mode. + select ARM64 endchoice config SYS_BOARD - default "rpi" if TARGET_RPI - default "rpi_2" if TARGET_RPI_2 + default "rpi" config SYS_VENDOR default "raspberrypi" @@ -26,7 +207,6 @@ config SYS_SOC default "bcm283x" config SYS_CONFIG_NAME - default "rpi" if TARGET_RPI - default "rpi_2" if TARGET_RPI_2 + default "rpi" endmenu