2021-02-10 13:52:34 +00:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
#
|
2019-07-13 11:30:57 +00:00
|
|
|
# Copyright (C) 2012-2019 OpenWrt.org
|
2017-02-07 23:31:09 +00:00
|
|
|
# Copyright (C) 2016-2017 LEDE project
|
2021-02-10 13:52:34 +00:00
|
|
|
|
2012-07-24 20:39:17 +00:00
|
|
|
include $(TOPDIR)/rules.mk
|
|
|
|
include $(INCLUDE_DIR)/image.mk
|
|
|
|
|
|
|
|
FAT32_BLOCK_SIZE=1024
|
2018-12-27 20:56:28 +00:00
|
|
|
FAT32_BLOCKS=$(shell echo $$(($(CONFIG_TARGET_KERNEL_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE))))
|
2012-07-24 20:39:17 +00:00
|
|
|
|
2016-10-13 17:01:41 +00:00
|
|
|
define Build/Compile
|
|
|
|
$(CP) $(LINUX_DIR)/COPYING $(KDIR)/COPYING.linux
|
|
|
|
endef
|
|
|
|
|
2015-07-14 07:37:29 +00:00
|
|
|
### Image scripts ###
|
2019-07-13 11:33:44 +00:00
|
|
|
define Build/boot-common
|
2024-01-30 20:30:20 +00:00
|
|
|
echo $(IMG_PART_SIGNATURE) > $@-partuuid.txt
|
|
|
|
sed \
|
|
|
|
-e 's#@ROOT@#PARTUUID=$(IMG_PART_SIGNATURE)-02#g' \
|
|
|
|
cmdline.txt > $@-cmdline.txt
|
|
|
|
|
2015-07-14 07:37:29 +00:00
|
|
|
rm -f $@.boot
|
2020-05-09 11:39:51 +00:00
|
|
|
mkfs.fat -n boot -C $@.boot $(FAT32_BLOCKS)
|
2016-10-13 17:01:41 +00:00
|
|
|
mcopy -i $@.boot $(KDIR)/COPYING.linux ::
|
2015-07-14 07:37:29 +00:00
|
|
|
mcopy -i $@.boot $(KDIR)/LICENCE.broadcom ::
|
2024-01-30 20:30:20 +00:00
|
|
|
mcopy -i $@.boot $@-cmdline.txt ::cmdline.txt
|
2019-09-04 16:11:25 +00:00
|
|
|
mcopy -i $@.boot config.txt ::
|
2019-09-03 11:01:50 +00:00
|
|
|
mcopy -i $@.boot distroconfig.txt ::
|
2024-01-30 20:30:20 +00:00
|
|
|
mcopy -i $@.boot $@-partuuid.txt ::partuuid.txt
|
2017-02-07 23:38:21 +00:00
|
|
|
mcopy -i $@.boot $(IMAGE_KERNEL) ::$(KERNEL_IMG)
|
2015-11-24 18:27:43 +00:00
|
|
|
$(foreach dts,$(shell echo $(DEVICE_DTS)),mcopy -i $@.boot $(DTS_DIR)/$(dts).dtb ::;)
|
2015-10-11 16:23:18 +00:00
|
|
|
mmd -i $@.boot ::/overlays
|
2016-04-07 19:25:10 +00:00
|
|
|
mcopy -i $@.boot $(DTS_DIR)/overlays/*.dtbo ::/overlays/
|
2015-10-26 09:01:21 +00:00
|
|
|
mcopy -i $@.boot $(DTS_DIR)/overlays/README ::/overlays/
|
2015-07-14 07:37:29 +00:00
|
|
|
endef
|
|
|
|
|
2019-07-13 11:33:44 +00:00
|
|
|
define Build/boot-2708
|
2019-08-09 05:37:51 +00:00
|
|
|
mcopy -i $@.boot $(KDIR)/bootcode.bin ::
|
2019-07-13 11:33:44 +00:00
|
|
|
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
|
|
|
|
|
2019-08-02 18:35:59 +00:00
|
|
|
define Build/boot-2711
|
2019-07-13 11:33:44 +00:00
|
|
|
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
|
|
|
|
|
2015-07-14 07:37:29 +00:00
|
|
|
define Build/sdcard-img
|
2024-01-30 20:28:54 +00:00
|
|
|
SIGNATURE="$(IMG_PART_SIGNATURE)" \
|
2016-07-30 12:19:11 +00:00
|
|
|
./gen_rpi_sdcard_img.sh $@ $@.boot $(IMAGE_ROOTFS) \
|
2018-12-27 20:56:28 +00:00
|
|
|
$(CONFIG_TARGET_KERNEL_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
|
2012-07-24 20:39:17 +00:00
|
|
|
endef
|
|
|
|
|
2016-05-12 17:49:20 +00:00
|
|
|
### Devices ###
|
2015-07-14 07:37:29 +00:00
|
|
|
define Device/Default
|
2019-07-14 21:37:10 +00:00
|
|
|
DEVICE_VENDOR := Raspberry Pi
|
2019-12-27 16:24:14 +00:00
|
|
|
KERNEL := kernel-bin
|
2017-02-07 23:38:21 +00:00
|
|
|
KERNEL_IMG := kernel.img
|
2018-07-29 09:55:14 +00:00
|
|
|
IMAGES := factory.img.gz sysupgrade.img.gz
|
2019-07-13 11:33:44 +00:00
|
|
|
IMAGE/sysupgrade.img.gz := boot-common | boot-2708 | sdcard-img | gzip | append-metadata
|
|
|
|
IMAGE/factory.img.gz := boot-common | boot-2708 | sdcard-img | gzip
|
2015-07-14 07:37:29 +00:00
|
|
|
endef
|
2012-07-24 20:39:17 +00:00
|
|
|
|
2016-05-12 17:49:20 +00:00
|
|
|
define Device/rpi
|
2019-07-14 21:37:10 +00:00
|
|
|
DEVICE_MODEL := B/B+/CM/Zero/ZeroW
|
2019-09-19 15:32:44 +00:00
|
|
|
DEVICE_DTS := \
|
2021-02-19 06:56:58 +00:00
|
|
|
bcm2708-rpi-b bcm2708-rpi-b-rev1 bcm2708-rpi-b-plus \
|
2019-09-19 15:32:44 +00:00
|
|
|
bcm2708-rpi-cm \
|
|
|
|
bcm2708-rpi-zero bcm2708-rpi-zero-w
|
2018-11-10 11:03:18 +00:00
|
|
|
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
|
2019-07-13 11:30:57 +00:00
|
|
|
DEVICE_PACKAGES := \
|
2019-09-04 15:22:54 +00:00
|
|
|
cypress-firmware-43430-sdio \
|
2022-11-14 04:11:06 +00:00
|
|
|
brcmfmac-nvram-43430-sdio \
|
2022-12-28 04:44:11 +00:00
|
|
|
kmod-brcmfmac wpad-basic-mbedtls
|
2012-07-24 20:39:17 +00:00
|
|
|
endef
|
2016-05-18 11:43:57 +00:00
|
|
|
ifeq ($(SUBTARGET),bcm2708)
|
|
|
|
TARGET_DEVICES += rpi
|
|
|
|
endif
|
2012-07-24 20:39:17 +00:00
|
|
|
|
2016-05-12 17:49:20 +00:00
|
|
|
define Device/rpi-2
|
2020-11-06 19:54:20 +00:00
|
|
|
DEVICE_MODEL := 2B/2B 1.2
|
|
|
|
DEVICE_VARIANT := (32bit)
|
|
|
|
DEVICE_ALT0_VENDOR := Raspberry Pi
|
2022-10-22 15:09:19 +00:00
|
|
|
DEVICE_ALT0_MODEL := 3B/3B+/CM3
|
2020-11-06 19:54:20 +00:00
|
|
|
DEVICE_ALT0_VARIANT := (32bit)
|
|
|
|
DEVICE_ALT1_VENDOR := Raspberry Pi
|
2022-10-22 15:09:19 +00:00
|
|
|
DEVICE_ALT1_MODEL := 4B/400/CM4
|
2020-11-06 19:54:20 +00:00
|
|
|
DEVICE_ALT1_VARIANT := (32bit)
|
2019-09-19 15:32:44 +00:00
|
|
|
DEVICE_DTS := \
|
|
|
|
bcm2709-rpi-2-b bcm2710-rpi-2-b \
|
|
|
|
bcm2710-rpi-3-b bcm2710-rpi-3-b-plus \
|
2021-02-18 22:07:05 +00:00
|
|
|
bcm2711-rpi-4-b bcm2711-rpi-400 \
|
2021-11-01 21:39:48 +00:00
|
|
|
bcm2710-rpi-cm3 bcm2711-rpi-cm4 \
|
|
|
|
bcm2710-rpi-zero-2
|
2018-11-10 11:03:18 +00:00
|
|
|
SUPPORTED_DEVICES := \
|
2021-11-01 21:39:48 +00:00
|
|
|
rpi-2-b rpi-3-b rpi-3-b-plus rpi-cm rpi-zero-2 \
|
2019-09-19 15:32:44 +00:00
|
|
|
raspberrypi,2-model-b raspberrypi,2-model-b-rev2 \
|
2018-11-10 11:03:18 +00:00
|
|
|
raspberrypi,3-model-b raspberrypi,3-model-b-plus \
|
2019-08-02 18:35:59 +00:00
|
|
|
raspberrypi,3-compute-module raspberrypi,compute-module-3 \
|
2021-11-01 21:39:48 +00:00
|
|
|
raspberrypi,400 raspberrypi,4-compute-module raspberrypi,4-model-b \
|
|
|
|
raspberrypi,model-zero-2
|
2019-07-13 11:30:57 +00:00
|
|
|
DEVICE_PACKAGES := \
|
2019-09-04 15:22:54 +00:00
|
|
|
cypress-firmware-43430-sdio \
|
2022-11-14 04:11:06 +00:00
|
|
|
brcmfmac-nvram-43430-sdio \
|
2019-09-04 15:22:54 +00:00
|
|
|
cypress-firmware-43455-sdio \
|
2022-11-14 04:11:06 +00:00
|
|
|
brcmfmac-nvram-43455-sdio \
|
2022-12-28 04:44:11 +00:00
|
|
|
kmod-brcmfmac wpad-basic-mbedtls
|
2019-07-13 11:33:44 +00:00
|
|
|
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
|
2016-05-12 17:49:20 +00:00
|
|
|
endef
|
2016-05-20 17:07:36 +00:00
|
|
|
ifeq ($(SUBTARGET),bcm2709)
|
2016-05-18 11:43:57 +00:00
|
|
|
TARGET_DEVICES += rpi-2
|
|
|
|
endif
|
2016-03-08 18:11:55 +00:00
|
|
|
|
2016-05-12 17:49:20 +00:00
|
|
|
define Device/rpi-3
|
2022-10-22 15:09:19 +00:00
|
|
|
DEVICE_MODEL := 3B/3B+/CM3
|
2020-11-06 19:54:20 +00:00
|
|
|
DEVICE_VARIANT := (64bit)
|
|
|
|
DEVICE_ALT0_VENDOR := Raspberry Pi
|
|
|
|
DEVICE_ALT0_MODEL := 2B-1.2
|
|
|
|
DEVICE_ALT0_VARIANT := (64bit)
|
2017-02-07 23:38:21 +00:00
|
|
|
KERNEL_IMG := kernel8.img
|
2019-09-19 15:32:44 +00:00
|
|
|
DEVICE_DTS := \
|
|
|
|
broadcom/bcm2710-rpi-2-b \
|
|
|
|
broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus \
|
2021-11-01 21:39:48 +00:00
|
|
|
broadcom/bcm2710-rpi-cm3 \
|
|
|
|
broadcom/bcm2710-rpi-zero-2
|
2018-11-10 11:03:18 +00:00
|
|
|
SUPPORTED_DEVICES := \
|
2021-11-01 21:39:48 +00:00
|
|
|
rpi-3-b rpi-3-b-plus rpi-zero-2 \
|
2019-09-19 15:32:44 +00:00
|
|
|
raspberrypi,2-model-b-rev2 \
|
2018-11-10 11:03:18 +00:00
|
|
|
raspberrypi,3-model-b raspberrypi,3-model-b-plus \
|
2021-11-01 21:39:48 +00:00
|
|
|
raspberrypi,3-compute-module raspberrypi,compute-module-3 \
|
|
|
|
raspberrypi,model-zero-2
|
2019-07-13 11:30:57 +00:00
|
|
|
DEVICE_PACKAGES := \
|
2019-09-04 15:22:54 +00:00
|
|
|
cypress-firmware-43430-sdio \
|
2022-11-14 04:11:06 +00:00
|
|
|
brcmfmac-nvram-43430-sdio \
|
2019-09-04 15:22:54 +00:00
|
|
|
cypress-firmware-43455-sdio \
|
2022-11-14 04:11:06 +00:00
|
|
|
brcmfmac-nvram-43455-sdio \
|
2022-12-28 04:44:11 +00:00
|
|
|
kmod-brcmfmac wpad-basic-mbedtls
|
2016-05-12 17:49:20 +00:00
|
|
|
endef
|
2016-05-20 17:07:36 +00:00
|
|
|
ifeq ($(SUBTARGET),bcm2710)
|
2016-05-18 11:43:57 +00:00
|
|
|
TARGET_DEVICES += rpi-3
|
|
|
|
endif
|
2015-07-14 07:37:29 +00:00
|
|
|
|
2019-08-02 18:35:59 +00:00
|
|
|
define Device/rpi-4
|
2022-10-22 15:09:19 +00:00
|
|
|
DEVICE_MODEL := 4B/400/CM4
|
2020-11-06 19:54:20 +00:00
|
|
|
DEVICE_VARIANT := (64bit)
|
2019-08-02 18:35:59 +00:00
|
|
|
KERNEL_IMG := kernel8.img
|
2021-02-18 22:07:05 +00:00
|
|
|
DEVICE_DTS := \
|
|
|
|
broadcom/bcm2711-rpi-400 \
|
|
|
|
broadcom/bcm2711-rpi-4-b \
|
|
|
|
broadcom/bcm2711-rpi-cm4
|
2019-08-02 18:35:59 +00:00
|
|
|
SUPPORTED_DEVICES := \
|
2021-02-18 22:07:05 +00:00
|
|
|
raspberrypi,400 \
|
|
|
|
raspberrypi,4-compute-module \
|
2019-08-02 18:35:59 +00:00
|
|
|
raspberrypi,4-model-b
|
|
|
|
DEVICE_PACKAGES := \
|
2019-09-04 15:22:54 +00:00
|
|
|
cypress-firmware-43455-sdio \
|
2022-11-14 04:11:06 +00:00
|
|
|
brcmfmac-nvram-43455-sdio \
|
2022-12-28 04:44:11 +00:00
|
|
|
kmod-brcmfmac wpad-basic-mbedtls \
|
2022-12-12 14:39:58 +00:00
|
|
|
kmod-usb-net-lan78xx \
|
|
|
|
kmod-r8169
|
2019-08-03 06:17:29 +00:00
|
|
|
IMAGE/sysupgrade.img.gz := boot-common | boot-2711 | sdcard-img | gzip | append-metadata
|
|
|
|
IMAGE/factory.img.gz := boot-common | boot-2711 | sdcard-img | gzip
|
2019-08-02 18:35:59 +00:00
|
|
|
endef
|
|
|
|
ifeq ($(SUBTARGET),bcm2711)
|
|
|
|
TARGET_DEVICES += rpi-4
|
|
|
|
endif
|
|
|
|
|
bcm27xx: add new bcm2712 subtarget
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>
2024-01-18 14:52:22 +00:00
|
|
|
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 \
|
2024-01-29 09:11:40 +00:00
|
|
|
kmod-hwmon-pwmfan kmod-thermal
|
2024-02-01 10:54:22 +00:00
|
|
|
IMAGE/sysupgrade.img.gz := boot-common | sdcard-img | gzip | append-metadata
|
|
|
|
IMAGE/factory.img.gz := boot-common | sdcard-img | gzip
|
bcm27xx: add new bcm2712 subtarget
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>
2024-01-18 14:52:22 +00:00
|
|
|
endef
|
|
|
|
ifeq ($(SUBTARGET),bcm2712)
|
|
|
|
TARGET_DEVICES += rpi-5
|
|
|
|
endif
|
|
|
|
|
2012-07-24 20:39:17 +00:00
|
|
|
$(eval $(call BuildImage))
|