1*4882a593Smuzhiyunconfig BCM2835 2*4882a593Smuzhiyun bool "Broadcom BCM2835 SoC support" 3*4882a593Smuzhiyun depends on ARCH_BCM283X 4*4882a593Smuzhiyun select CPU_ARM1176 5*4882a593Smuzhiyun 6*4882a593Smuzhiyunconfig BCM2836 7*4882a593Smuzhiyun bool "Broadcom BCM2836 SoC support" 8*4882a593Smuzhiyun depends on ARCH_BCM283X 9*4882a593Smuzhiyun select ARMV7_LPAE 10*4882a593Smuzhiyun select CPU_V7 11*4882a593Smuzhiyun 12*4882a593Smuzhiyunconfig BCM2837 13*4882a593Smuzhiyun bool "Broadcom BCM2837 SoC support" 14*4882a593Smuzhiyun depends on ARCH_BCM283X 15*4882a593Smuzhiyun 16*4882a593Smuzhiyunconfig BCM2837_32B 17*4882a593Smuzhiyun bool "Broadcom BCM2837 SoC 32-bit support" 18*4882a593Smuzhiyun depends on ARCH_BCM283X 19*4882a593Smuzhiyun select BCM2837 20*4882a593Smuzhiyun select ARMV7_LPAE 21*4882a593Smuzhiyun select CPU_V7 22*4882a593Smuzhiyun 23*4882a593Smuzhiyunconfig BCM2837_64B 24*4882a593Smuzhiyun bool "Broadcom BCM2837 SoC 64-bit support" 25*4882a593Smuzhiyun depends on ARCH_BCM283X 26*4882a593Smuzhiyun select BCM2837 27*4882a593Smuzhiyun select ARM64 28*4882a593Smuzhiyun 29*4882a593Smuzhiyunmenu "Broadcom BCM283X family" 30*4882a593Smuzhiyun depends on ARCH_BCM283X 31*4882a593Smuzhiyun 32*4882a593Smuzhiyunchoice 33*4882a593Smuzhiyun prompt "Broadcom BCM283X board select" 34*4882a593Smuzhiyun optional 35*4882a593Smuzhiyun 36*4882a593Smuzhiyunconfig TARGET_RPI 37*4882a593Smuzhiyun bool "Raspberry Pi (all BCM2835 variants)" 38*4882a593Smuzhiyun help 39*4882a593Smuzhiyun Support for all ARM1176-/BCM2835-based Raspberry Pi variants, such as 40*4882a593Smuzhiyun the A, A+, B, B+, Compute Module, and Zero. This option cannot 41*4882a593Smuzhiyun support BCM2836/BCM2837-based Raspberry Pis such as the RPi 2 and 42*4882a593Smuzhiyun RPi 3 due to different peripheral address maps. 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun This option creates a build targetting the ARM1176 ISA. 45*4882a593Smuzhiyun select BCM2835 46*4882a593Smuzhiyun 47*4882a593Smuzhiyunconfig TARGET_RPI_2 48*4882a593Smuzhiyun bool "Raspberry Pi 2" 49*4882a593Smuzhiyun help 50*4882a593Smuzhiyun Support for all BCM2836-based Raspberry Pi variants, such as 51*4882a593Smuzhiyun the RPi 2 model B. 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun This option also supports BCM2837-based variants such as the RPi 3 54*4882a593Smuzhiyun Model B, when run in 32-bit mode, provided you have configured the 55*4882a593Smuzhiyun VideoCore firmware to select the PL011 UART for the console by: 56*4882a593Smuzhiyun a) config.txt should contain dtoverlay=pi3-miniuart-bt. 57*4882a593Smuzhiyun b) You should run the following to tell the VC FW to process DT when 58*4882a593Smuzhiyun booting, and copy u-boot.bin.img (rather than u-boot.bin) to the SD 59*4882a593Smuzhiyun card as the kernel image: 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun path/to/kernel/scripts/mkknlimg --dtok u-boot.bin u-boot.bin.img 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun This works as of firmware.git commit 046effa13ebc "firmware: 64*4882a593Smuzhiyun arm_loader: emmc clock depends on core clock See: 65*4882a593Smuzhiyun https://github.com/raspberrypi/firmware/issues/572". 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun This option creates a build targetting the ARMv7/AArch32 ISA. 68*4882a593Smuzhiyun select BCM2836 69*4882a593Smuzhiyun 70*4882a593Smuzhiyunconfig TARGET_RPI_3_32B 71*4882a593Smuzhiyun bool "Raspberry Pi 3 32-bit build" 72*4882a593Smuzhiyun help 73*4882a593Smuzhiyun Support for all BCM2837-based Raspberry Pi variants, such as 74*4882a593Smuzhiyun the RPi 3 model B, in AArch32 (32-bit) mode. 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun This option assumes the VideoCore firmware is configured to use the 77*4882a593Smuzhiyun mini UART (rather than PL011) for the serial console. This is the 78*4882a593Smuzhiyun default on the RPi 3. To enable the UART console, the following non- 79*4882a593Smuzhiyun default option must be present in config.txt: enable_uart=1. This is 80*4882a593Smuzhiyun required for U-Boot to operate correctly, even if you only care 81*4882a593Smuzhiyun about the HDMI/usbkbd console. 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun This option creates a build targetting the ARMv7/AArch32 ISA. 84*4882a593Smuzhiyun select BCM2837_32B 85*4882a593Smuzhiyun 86*4882a593Smuzhiyunconfig TARGET_RPI_3 87*4882a593Smuzhiyun bool "Raspberry Pi 3 64-bit build" 88*4882a593Smuzhiyun help 89*4882a593Smuzhiyun Support for all BCM2837-based Raspberry Pi variants, such as 90*4882a593Smuzhiyun the RPi 3 model B, in AArch64 (64-bit) mode. 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun This option assumes the VideoCore firmware is configured to use the 93*4882a593Smuzhiyun mini UART (rather than PL011) for the serial console. This is the 94*4882a593Smuzhiyun default on the RPi 3. To enable the UART console, the following non- 95*4882a593Smuzhiyun default option must be present in config.txt: enable_uart=1. This is 96*4882a593Smuzhiyun required for U-Boot to operate correctly, even if you only care 97*4882a593Smuzhiyun about the HDMI/usbkbd console. 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun At the time of writing, the VC FW requires a non-default option in 100*4882a593Smuzhiyun config.txt to request the ARM CPU boot in 64-bit mode: 101*4882a593Smuzhiyun arm_control=0x200 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun The VC FW typically provides ARM "stub" code to set up the CPU and 104*4882a593Smuzhiyun quiesce secondary SMP CPUs. This is not currently true in 64-bit 105*4882a593Smuzhiyun mode. In order to boot U-Boot before the VC FW is enhanced, please 106*4882a593Smuzhiyun see the commit description for the commit which added RPi3 support 107*4882a593Smuzhiyun for a workaround. Since the instructions are temporary, they are not 108*4882a593Smuzhiyun duplicated here. The VC FW enhancement is tracked in 109*4882a593Smuzhiyun https://github.com/raspberrypi/firmware/issues/579. 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun This option creates a build targetting the ARMv8/AArch64 ISA. 112*4882a593Smuzhiyun select BCM2837_64B 113*4882a593Smuzhiyun 114*4882a593Smuzhiyunendchoice 115*4882a593Smuzhiyun 116*4882a593Smuzhiyunconfig SYS_BOARD 117*4882a593Smuzhiyun default "rpi" 118*4882a593Smuzhiyun 119*4882a593Smuzhiyunconfig SYS_VENDOR 120*4882a593Smuzhiyun default "raspberrypi" 121*4882a593Smuzhiyun 122*4882a593Smuzhiyunconfig SYS_SOC 123*4882a593Smuzhiyun default "bcm283x" 124*4882a593Smuzhiyun 125*4882a593Smuzhiyunconfig SYS_CONFIG_NAME 126*4882a593Smuzhiyun default "rpi" 127*4882a593Smuzhiyun 128*4882a593Smuzhiyunendmenu 129