mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-25 08:21:14 +00:00
8b63d9ac4a
This patch adds support for Raspberry Pi 5. Instead of using 16K pages like Raspberry Pi OS, OpenWrt uses 4K pages due to incompatibilities with F2FS and other applications. There are multiple RPi forum posts with different cases and users are forcing kernel8.img to workaround them, which is the 64 bit kernel of the RPi 4. However, this isn't possible in OpenWrt because we only ship one kernel and we would have to add RPi 5 support to bcm2711 subtarget (RPi 4) for that workaround to work in OpenWrt. Specification: - Processor Broadcom BCM2712 2.4GHz quad-core 64-bit Arm Cortex-A76 CPU, with cryptographic extension, 512KB L2 caches per core, 2048KB L3 cache Features: - VideoCore VII GPU, supports OpenGL ES 3.1, Vulkan 1.2 - Dual 4Kp60 HDMI display output with HDR support 4Kp60 HEVC decoder - LPDDR4X-4267 SDRAM 4GB and 8GB - Dual-band 802.11ac Wi-Fi - Bluetooth 5.0 / Bluetooth Low Energy - microSD card slot, with support for SDR104 high-speed mode - 2 x USB 3.0 ports - 2 x USB 2.0 ports - Gigabit Ethernet - 2 x 4 lane MIPI camera/display - PCIe 2.0 x1 - 5V/5A power via USB-C - Raspberry Pi standard 40-pin header - Real-time clock RTC - Power button Build system: x86_64 Build-tested: bcm2712 Run-tested: bcm2712/RPi5 Signed-off-by: Marty Jones <mj8263788@gmail.com> [Remove device variant, improve description] Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
194 lines
5.9 KiB
Makefile
194 lines
5.9 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# Copyright (C) 2012-2019 OpenWrt.org
|
|
# Copyright (C) 2016-2017 LEDE project
|
|
|
|
include $(TOPDIR)/rules.mk
|
|
include $(INCLUDE_DIR)/image.mk
|
|
|
|
FAT32_BLOCK_SIZE=1024
|
|
FAT32_BLOCKS=$(shell echo $$(($(CONFIG_TARGET_KERNEL_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE))))
|
|
|
|
define Build/Compile
|
|
$(CP) $(LINUX_DIR)/COPYING $(KDIR)/COPYING.linux
|
|
endef
|
|
|
|
### Image scripts ###
|
|
define Build/boot-common
|
|
rm -f $@.boot
|
|
mkfs.fat -n boot -C $@.boot $(FAT32_BLOCKS)
|
|
mcopy -i $@.boot $(KDIR)/COPYING.linux ::
|
|
mcopy -i $@.boot $(KDIR)/LICENCE.broadcom ::
|
|
mcopy -i $@.boot cmdline.txt ::
|
|
mcopy -i $@.boot config.txt ::
|
|
mcopy -i $@.boot distroconfig.txt ::
|
|
mcopy -i $@.boot $(IMAGE_KERNEL) ::$(KERNEL_IMG)
|
|
$(foreach dts,$(shell echo $(DEVICE_DTS)),mcopy -i $@.boot $(DTS_DIR)/$(dts).dtb ::;)
|
|
mmd -i $@.boot ::/overlays
|
|
mcopy -i $@.boot $(DTS_DIR)/overlays/*.dtbo ::/overlays/
|
|
mcopy -i $@.boot $(DTS_DIR)/overlays/README ::/overlays/
|
|
endef
|
|
|
|
define Build/boot-2708
|
|
mcopy -i $@.boot $(KDIR)/bootcode.bin ::
|
|
mcopy -i $@.boot $(KDIR)/start.elf ::
|
|
mcopy -i $@.boot $(KDIR)/start_cd.elf ::
|
|
mcopy -i $@.boot $(KDIR)/start_x.elf ::
|
|
mcopy -i $@.boot $(KDIR)/fixup.dat ::
|
|
mcopy -i $@.boot $(KDIR)/fixup_cd.dat ::
|
|
mcopy -i $@.boot $(KDIR)/fixup_x.dat ::
|
|
endef
|
|
|
|
define Build/boot-2711
|
|
mcopy -i $@.boot $(KDIR)/start4.elf ::
|
|
mcopy -i $@.boot $(KDIR)/start4cd.elf ::
|
|
mcopy -i $@.boot $(KDIR)/start4x.elf ::
|
|
mcopy -i $@.boot $(KDIR)/fixup4.dat ::
|
|
mcopy -i $@.boot $(KDIR)/fixup4cd.dat ::
|
|
mcopy -i $@.boot $(KDIR)/fixup4x.dat ::
|
|
endef
|
|
|
|
define Build/sdcard-img
|
|
./gen_rpi_sdcard_img.sh $@ $@.boot $(IMAGE_ROOTFS) \
|
|
$(CONFIG_TARGET_KERNEL_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
|
|
endef
|
|
|
|
### Devices ###
|
|
define Device/Default
|
|
DEVICE_VENDOR := Raspberry Pi
|
|
KERNEL := kernel-bin
|
|
KERNEL_IMG := kernel.img
|
|
IMAGES := factory.img.gz sysupgrade.img.gz
|
|
IMAGE/sysupgrade.img.gz := boot-common | boot-2708 | sdcard-img | gzip | append-metadata
|
|
IMAGE/factory.img.gz := boot-common | boot-2708 | sdcard-img | gzip
|
|
endef
|
|
|
|
define Device/rpi
|
|
DEVICE_MODEL := B/B+/CM/Zero/ZeroW
|
|
DEVICE_DTS := \
|
|
bcm2708-rpi-b bcm2708-rpi-b-rev1 bcm2708-rpi-b-plus \
|
|
bcm2708-rpi-cm \
|
|
bcm2708-rpi-zero bcm2708-rpi-zero-w
|
|
SUPPORTED_DEVICES := \
|
|
rpi-b rpi-b-plus rpi-cm rpi-zero rpi-zero-w \
|
|
raspberrypi,model-b raspberrypi,model-b-plus raspberrypi,model-b-rev2 \
|
|
raspberrypi,compute-module raspberrypi,compute-module-1 \
|
|
raspberrypi,model-zero raspberrypi,model-zero-w
|
|
DEVICE_PACKAGES := \
|
|
cypress-firmware-43430-sdio \
|
|
brcmfmac-nvram-43430-sdio \
|
|
kmod-brcmfmac wpad-basic-mbedtls
|
|
endef
|
|
ifeq ($(SUBTARGET),bcm2708)
|
|
TARGET_DEVICES += rpi
|
|
endif
|
|
|
|
define Device/rpi-2
|
|
DEVICE_MODEL := 2B/2B 1.2
|
|
DEVICE_VARIANT := (32bit)
|
|
DEVICE_ALT0_VENDOR := Raspberry Pi
|
|
DEVICE_ALT0_MODEL := 3B/3B+/CM3
|
|
DEVICE_ALT0_VARIANT := (32bit)
|
|
DEVICE_ALT1_VENDOR := Raspberry Pi
|
|
DEVICE_ALT1_MODEL := 4B/400/CM4
|
|
DEVICE_ALT1_VARIANT := (32bit)
|
|
DEVICE_DTS := \
|
|
bcm2709-rpi-2-b bcm2710-rpi-2-b \
|
|
bcm2710-rpi-3-b bcm2710-rpi-3-b-plus \
|
|
bcm2711-rpi-4-b bcm2711-rpi-400 \
|
|
bcm2710-rpi-cm3 bcm2711-rpi-cm4 \
|
|
bcm2710-rpi-zero-2
|
|
SUPPORTED_DEVICES := \
|
|
rpi-2-b rpi-3-b rpi-3-b-plus rpi-cm rpi-zero-2 \
|
|
raspberrypi,2-model-b raspberrypi,2-model-b-rev2 \
|
|
raspberrypi,3-model-b raspberrypi,3-model-b-plus \
|
|
raspberrypi,3-compute-module raspberrypi,compute-module-3 \
|
|
raspberrypi,400 raspberrypi,4-compute-module raspberrypi,4-model-b \
|
|
raspberrypi,model-zero-2
|
|
DEVICE_PACKAGES := \
|
|
cypress-firmware-43430-sdio \
|
|
brcmfmac-nvram-43430-sdio \
|
|
cypress-firmware-43455-sdio \
|
|
brcmfmac-nvram-43455-sdio \
|
|
kmod-brcmfmac wpad-basic-mbedtls
|
|
IMAGE/sysupgrade.img.gz := boot-common | boot-2708 | boot-2711 | sdcard-img | gzip | append-metadata
|
|
IMAGE/factory.img.gz := boot-common | boot-2708 | boot-2711 | sdcard-img | gzip
|
|
endef
|
|
ifeq ($(SUBTARGET),bcm2709)
|
|
TARGET_DEVICES += rpi-2
|
|
endif
|
|
|
|
define Device/rpi-3
|
|
DEVICE_MODEL := 3B/3B+/CM3
|
|
DEVICE_VARIANT := (64bit)
|
|
DEVICE_ALT0_VENDOR := Raspberry Pi
|
|
DEVICE_ALT0_MODEL := 2B-1.2
|
|
DEVICE_ALT0_VARIANT := (64bit)
|
|
KERNEL_IMG := kernel8.img
|
|
DEVICE_DTS := \
|
|
broadcom/bcm2710-rpi-2-b \
|
|
broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus \
|
|
broadcom/bcm2710-rpi-cm3 \
|
|
broadcom/bcm2710-rpi-zero-2
|
|
SUPPORTED_DEVICES := \
|
|
rpi-3-b rpi-3-b-plus rpi-zero-2 \
|
|
raspberrypi,2-model-b-rev2 \
|
|
raspberrypi,3-model-b raspberrypi,3-model-b-plus \
|
|
raspberrypi,3-compute-module raspberrypi,compute-module-3 \
|
|
raspberrypi,model-zero-2
|
|
DEVICE_PACKAGES := \
|
|
cypress-firmware-43430-sdio \
|
|
brcmfmac-nvram-43430-sdio \
|
|
cypress-firmware-43455-sdio \
|
|
brcmfmac-nvram-43455-sdio \
|
|
kmod-brcmfmac wpad-basic-mbedtls
|
|
endef
|
|
ifeq ($(SUBTARGET),bcm2710)
|
|
TARGET_DEVICES += rpi-3
|
|
endif
|
|
|
|
define Device/rpi-4
|
|
DEVICE_MODEL := 4B/400/CM4
|
|
DEVICE_VARIANT := (64bit)
|
|
KERNEL_IMG := kernel8.img
|
|
DEVICE_DTS := \
|
|
broadcom/bcm2711-rpi-400 \
|
|
broadcom/bcm2711-rpi-4-b \
|
|
broadcom/bcm2711-rpi-cm4
|
|
SUPPORTED_DEVICES := \
|
|
raspberrypi,400 \
|
|
raspberrypi,4-compute-module \
|
|
raspberrypi,4-model-b
|
|
DEVICE_PACKAGES := \
|
|
cypress-firmware-43455-sdio \
|
|
brcmfmac-nvram-43455-sdio \
|
|
kmod-brcmfmac wpad-basic-mbedtls \
|
|
kmod-usb-net-lan78xx \
|
|
kmod-r8169
|
|
IMAGE/sysupgrade.img.gz := boot-common | boot-2711 | sdcard-img | gzip | append-metadata
|
|
IMAGE/factory.img.gz := boot-common | boot-2711 | sdcard-img | gzip
|
|
endef
|
|
ifeq ($(SUBTARGET),bcm2711)
|
|
TARGET_DEVICES += rpi-4
|
|
endif
|
|
|
|
define Device/rpi-5
|
|
DEVICE_MODEL := 5
|
|
KERNEL_IMG := kernel_2712.img
|
|
DEVICE_DTS := broadcom/bcm2712-rpi-5-b
|
|
SUPPORTED_DEVICES := raspberrypi,5-model-b
|
|
DEVICE_PACKAGES := \
|
|
cypress-firmware-43455-sdio \
|
|
brcmfmac-nvram-43455-sdio \
|
|
kmod-brcmfmac wpad-basic-mbedtls \
|
|
kmod-hwmon-pwmfan kmod-thermal \
|
|
kmod-usb-dwc3 kmod-usb3
|
|
IMAGE/sysupgrade.img.gz := boot-common | boot-2711 | sdcard-img | gzip | append-metadata
|
|
IMAGE/factory.img.gz := boot-common | boot-2711 | sdcard-img | gzip
|
|
endef
|
|
ifeq ($(SUBTARGET),bcm2712)
|
|
TARGET_DEVICES += rpi-5
|
|
endif
|
|
|
|
$(eval $(call BuildImage))
|