+# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2006-2015 OpenWrt.org
# Copyright (C) 2016 LEDE project
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
+
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk
KERNEL_LOADADDR = 0x80010000 # RAM start + 64K
LOADER_ENTRY = 0x80a00000 # RAM start + 10M, for relocate
-RAMSIZE = 0x02000000 # 32MB
-LZMA_TEXT_START = 0x81800000 # 32MB - 8MB
-
-LOADER_MAKEOPTS= \
- KDIR=$(KDIR) \
- LOADADDR=$(KERNEL_LOADADDR) \
- RAMSIZE=$(RAMSIZE) \
- LZMA_TEXT_START=$(LZMA_TEXT_START)
+LZMA_TEXT_START = 0x81800000 # RAM start + 24M
RELOCATE_MAKEOPTS= \
CACHELINE_SIZE=16 \
define Build/loader-lzma
rm -rf $@.src
$(MAKE) -C lzma-loader \
- $(LOADER_MAKEOPTS) \
+ KDIR=$(KDIR) \
+ LOADER_ADDR=$(if $(DEVICE_LOADADDR),$(DEVICE_LOADADDR),$(LOADER_ENTRY)) \
+ KERNEL_ADDR=$(KERNEL_LOADADDR) \
+ LZMA_TEXT_START=$(LZMA_TEXT_START) \
+ CHIP_ID=$(CHIP_ID) \
PKG_BUILD_DIR="$@.src" \
TARGET_DIR="$(dir $@)" \
LOADER_DATA="$@" \
define rootfspad/squashfs
endef
-define Image/LimitName16
-$(shell expr substr "$(1)" 1 16)
-endef
-
define Image/FileSystemStrip
$(firstword $(subst +,$(space),$(subst root.,,$(notdir $(1)))))
endef
-define Build/ad1018-jffs2-cferam
- mv $@ $@.kernel
-
- rm -rf $@-cferam
- mkdir -p $@-cferam
-
- # CFE RAM JFFS2 partition
- cp $(KDIR)/bcm63xx-cfe/$(CFE_RAM_FILE) $@-cferam/$(CFE_RAM_JFFS2_NAME)
- $(call Build/cfe-jffs2,$@-cferam)
- mv $@ $@.cferam
-
- # First block of CFE RAM 1 will be destroyed by MMAP
- dd if=$@.cferam bs=$(BLOCKSIZE) count=1 > $@
- dd if=$@.cferam >> $@
- $(call Build/pad-to,896k)
-
- # CFE RAM 2
- dd if=$@.cferam >> $@
-
- # Append kernel @ 4M
- $(call Build/pad-to,4096k)
- dd if=$@.kernel >> $@
- rm -f $@.kernel
-endef
-
define Build/cfe-bin
$(STAGING_DIR_HOST)/bin/imagetag -i $(IMAGE_KERNEL) -f $(IMAGE_ROOTFS) \
--output $@ --boardid $(CFE_BOARD_ID) --chipid $(CHIP_ID) \
--entry $(LOADER_ENTRY) --load-addr $(LOADER_ENTRY) \
- --info1 "$(call Image/LimitName16,$(DEVICE_NAME))" \
+ --info1 "$(call ModelNameLimit16,$(DEVICE_NAME))" \
--info2 "$(call Image/FileSystemStrip,$(IMAGE_ROOTFS))" \
$(call rootfspad/$(call Image/FileSystemStrip,$(IMAGE_ROOTFS))) \
$(CFE_EXTRAS) $(1)
# Some devices need padding between CFE RAM and kernel
$(if $(CFE_RAM_JFFS2_PAD),$(call Build/pad-to,$(CFE_RAM_JFFS2_PAD)))
+ # Add CFE partition tag
+ $(if $(CFE_PART_ID),$(call Build/cfe-part-tag))
+
# Append kernel
dd if=$@.kernel >> $@
rm -f $@.kernel
$(TOPDIR)/scripts/cfe-bin-header.py \
--input-file $@ \
--output-file $@-kernel/vmlinux.lz \
- --load-addr $(LOADER_ENTRY) \
- --entry-addr $(LOADER_ENTRY)
+ --load-addr $(if $(DEVICE_LOADADDR),$(DEVICE_LOADADDR),$(LOADER_ENTRY)) \
+ --entry-addr $(if $(DEVICE_LOADADDR),$(DEVICE_LOADADDR),$(LOADER_ENTRY))
# The JFFS2 partition creation should result in the following
# layout:
$(call Build/cfe-jffs2,$@-kernel)
endef
+define Build/cfe-part-tag
+ mv $@ $@.part
+
+ $(TOPDIR)/scripts/cfe-partition-tag.py \
+ --input-file $@.part \
+ --output-file $@ \
+ --flags $(CFE_PART_FLAGS) \
+ --id $(CFE_PART_ID) \
+ --name $(VERSION_CODE) \
+ --version $(DEVICE_NAME)
+
+ $(call Build/pad-to,$(BLOCKSIZE))
+
+ dd if=$@.part >> $@
+endef
+
+define Build/cfe-sercomm-part
+ $(TOPDIR)/scripts/sercomm-partition-tag.py \
+ --input-file $@ \
+ --output-file $@.kernel_rootfs \
+ --part-name kernel_rootfs \
+ --part-version OpenWrt \
+ --rootfs-version $(SERCOMM_VERSION)
+
+ rm -rf $@-rootfs_lib
+ mkdir -p $@-rootfs_lib
+ echo $(SERCOMM_VERSION) > $@-rootfs_lib/lib_ver
+ $(call Build/cfe-jffs2,$@-rootfs_lib)
+ $(call Build/pad-to,$(BLOCKSIZE))
+ $(TOPDIR)/scripts/sercomm-partition-tag.py \
+ --input-file $@ \
+ --output-file $@.rootfs_lib \
+ --part-name rootfs_lib \
+ --part-version $(SERCOMM_VERSION)
+
+ mv $@.kernel_rootfs $@
+ dd if=$@.rootfs_lib >> $@
+endef
+
+define Build/cfe-sercomm-load
+ $(TOPDIR)/scripts/sercomm-payload.py \
+ --input-file $@ \
+ --output-file $@.new \
+ --pid "$(SERCOMM_PID)"
+
+ mv $@.new $@
+endef
+
+define Build/cfe-sercomm-crypto
+ $(TOPDIR)/scripts/sercomm-crypto.py \
+ --input-file $@ \
+ --key-file $@.key \
+ --output-file $@.ser \
+ --version OpenWrt
+ $(STAGING_DIR_HOST)/bin/openssl enc -md md5 -aes-256-cbc \
+ -in $@ -out $@.enc \
+ -K `cat $@.key` \
+ -iv 00000000000000000000000000000000
+ dd if=$@.enc >> $@.ser
+ mv $@.ser $@
+ rm -f $@.enc $@.key
+endef
+
define Build/cfe-old-bin
$(TOPDIR)/scripts/brcmImage.pl -t -p \
-o $@ -b $(CFE_BOARD_ID) -c $(CHIP_ID) \
CHIP_ID :=
SOC = bcm$$(CHIP_ID)
DEVICE_DTS = $$(SOC)-$(subst _,-,$(1))
+ DEVICE_LOADADDR :=
endef
-DEVICE_VARS += CHIP_ID
+DEVICE_VARS += CHIP_ID DEVICE_LOADADDR
-ATH5K_PACKAGES := kmod-ath5k wpad-basic
-ATH9K_PACKAGES := kmod-ath9k wpad-basic
-B43_PACKAGES := kmod-b43 wpad-basic
+ATH5K_PACKAGES := kmod-ath5k wpad-basic-mbedtls
+ATH9K_PACKAGES := kmod-ath9k wpad-basic-mbedtls
+B43_PACKAGES := kmod-b43 wpad-basic-mbedtls
BRCMWL_PACKAGES := kmod-brcm-wl nas wlc
-RT28_PACKAGES := kmod-rt2800-pci wpad-basic
-RT61_PACKAGES := kmod-rt61-pci wpad-basic
+RT28_PACKAGES := kmod-rt2800-pci wpad-basic-mbedtls
+RT61_PACKAGES := kmod-rt61-pci wpad-basic-mbedtls
USB1_PACKAGES := kmod-usb-ohci kmod-usb-ledtrig-usbport
USB2_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport