Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save robimarko/57891df99fab9cf3238017dfe41913fe to your computer and use it in GitHub Desktop.
Save robimarko/57891df99fab9cf3238017dfe41913fe to your computer and use it in GitHub Desktop.
Orbi GPL Makefile
# Copyright (c) 2014 The Linux Foundation. All rights reserved.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk
MODULE_NAME=SRR60
MODULE_NAME_CC=SRS60
HW_VERSION=Orbi
FW_VERSION=2.1.3.2
LG_VERSION=V1.0.0.315
CLOUD_VERSION=20170912
HW_ID="29765352+0+4096+512+2x2+2x2+4x4"
ifndef FW_REGION
FW_REGION=""
endif
# 8M
#KERNEL_SIZE=3407872
KERNEL_SIZE=3932160
# 10.875M
ROOTFS_SIZE=27787264
UBIFS_OPTS = -m 2048 -e 124KiB -c 4096 -U -F
UBI_OPTS = -m 2048 -p 128KiB
E2SIZE=$(shell echo $$(($(CONFIG_TARGET_ROOTFS_PARTSIZE)*1024)))
define Image/Prepare
echo "$(MODULE_NAME)" > $(TARGET_DIR)/module_name
echo "$(HW_VERSION)" > $(TARGET_DIR)/hardware_version
echo "V$(FW_VERSION)" > $(TARGET_DIR)/firmware_version
echo "$(CLOUD_VERSION)" > $(TARGET_DIR)/cloud_version
echo "$(FW_REGION)" > $(TARGET_DIR)/firmware_region
echo "$(LG_VERSION)" > $(TARGET_DIR)/firmware_language_version
echo $(HW_ID) > $(TARGET_DIR)/hw_id
date > $(TARGET_DIR)/firmware_time
echo "1" > $(TARGET_DIR)/etc/init.d/.hidden_new_features
endef
ifneq ($(CONFIG_TARGET_ROOTFS_UBIFS),)
define Image/mkfs/ubifs_fit
$(call Image/mkfs/ubifs/generate,$(1))
$(call Image/Build,ubi,$(1))
$(call Image/UbiImage,$(1))
endef
endif
define Image/BuildKernel/FIT
$(CP) $(KDIR)/Image $(BIN_DIR)/$(IMG_PREFIX)-vmlinux.bin
gzip -9 -c $(KDIR)/Image > $(KDIR)/Image.gz
$(call CompressLzma,$(KDIR)/Image,$(KDIR)/Image.gz)
ifeq ($(3),compressed-dtb)
gzip -9 -c $(LINUX_DIR)/arch/arm/boot/dts/$(1).dtb > $(LINUX_DIR)/arch/arm/boot/dts/$(1).dtb.gz
$(call Image/BuildKernel/MkFIT,$(1), $(KDIR)/Image.gz, $(LINUX_DIR)/arch/arm/boot/dts/$(1).dtb.gz,gzip,$(2),$(2),,$(4))
else
$(call Image/BuildKernel/MkFIT,$(1), $(KDIR)/Image.gz, $(LINUX_DIR)/arch/arm/boot/dts/$(1).dtb,gzip,$(2),$(2))
endif
$(CP) $(KDIR)/fit-$(1).itb $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fit-uImage.itb
$(CP) $(LINUX_DIR)/arch/arm/boot/dts/$(1).dtb $(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb
mkdir -p $(BIN_DIR)/dtbs/
$(CP) $(LINUX_DIR)/arch/arm/boot/dts/qcom-ipq8064*.dtb $(BIN_DIR)/dtbs/
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
$(CP) $(KDIR)/Image-initramfs $(BIN_DIR)/$(IMG_PREFIX)-vmlinux-initramfs.bin
$(call Image/BuildKernel/MkFIT,$(1), $(KDIR)/Image-initramfs, $(LINUX_DIR)/arch/arm/boot/dts/$(1).dtb, none,$(2),$(2))
$(CP) $(KDIR)/fit-$(1).itb $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fit-uImage-initramfs.itb
endif
endef
define Image/BuildKernel/GenericFIT
$(CP) $(KDIR)/Image $(BIN_DIR)/$(IMG_PREFIX)-vmlinux.bin
gzip -9 -c $(KDIR)/Image > $(KDIR)/Image.gz
$(call CompressLzma,$(KDIR)/Image,$(KDIR)/Image.gz)
$(call Image/BuildKernel/MkFIT,$(1), $(KDIR)/Image.gz,,gzip,$(2),$(2))
$(CP) $(KDIR)/fit-$(1).itb $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fit-uImage.itb
endef
define Image/BuildKernel/MultiDTBFIT
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
$(CP) $(KDIR)/Image-initramfs $(BIN_DIR)/$(IMG_PREFIX)-vmlinux-initramfs.bin
$(call Image/BuildKernel/MkFITMulti,$(1),$(KDIR)/Image-initramfs,$(2),none,$(3),$(3))
$(CP) $(KDIR)/fit-$(1).itb $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fit-uImage-initramfs.itb
endif
$(CP) $(KDIR)/Image $(BIN_DIR)/$(IMG_PREFIX)-vmlinux.bin
gzip -9 -c $(KDIR)/Image > $(KDIR)/Image.gz
$(call CompressLzma,$(KDIR)/Image,$(KDIR)/Image.gz)
$(call Image/BuildKernel/MkFITMulti,$(1),$(KDIR)/Image.gz,$(2),gzip,$(3),$(3))
$(CP) $(KDIR)/fit-$(1).itb $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fit-uImage.itb
endef
define Image/BuildKernel
$(CP) $(KDIR)/vmlinux$(subst openwrt-ipq806x,,$(IMG_PREFIX)).debug $(BIN_DIR)/$(IMG_PREFIX)-vmlinux.elf
$(call Image/BuildKernel/MultiDTBFIT,qcom-ipq40xx-ap.dkxx,"qcom-ipq40xx-ap.dk04.1-c1 \
qcom-ipq40xx-ap.dk04.1-c2 \
qcom-ipq40xx-ap.dk04.1-c3 \
qcom-ipq40xx-ap.dk01.1-c1 \
qcom-ipq40xx-ap.dk01.1-c2 \
qcom-ipq40xx-db.dk01.1-c1 \
qcom-ipq40xx-db.dk02.1-c1 \
qcom-ipq40xx-ap.dk04.1-c4 \
qcom-ipq40xx-ap.dk06.1-c1"\
,0x80208000)
$(call Image/BuildKernel/MultiDTBFIT,qcom-ipq40xx-ap.dkxx_cc,"qcom-ipq40xx-ap.dk04.1-c1_cc \
qcom-ipq40xx-ap.dk04.1-c2_cc \
qcom-ipq40xx-ap.dk04.1-c3_cc \
qcom-ipq40xx-ap.dk01.1-c1_cc \
qcom-ipq40xx-ap.dk01.1-c2_cc \
qcom-ipq40xx-db.dk01.1-c1_cc \
qcom-ipq40xx-db.dk02.1-c1_cc \
qcom-ipq40xx-ap.dk04.1-c4_cc \
qcom-ipq40xx-ap.dk06.1-c1_cc"\
,0x80208000)
endef
define Image/UbiImage
ifeq ($(1),-ipq806x)
endif
endef
define Image/Build/squashfs
$(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
endef
KERNEL_IMG:=$(IMG_PREFIX)-qcom-ipq40xx-ap.dkxx-fit-uImage.itb
KERNEL_IMG_CC:=$(IMG_PREFIX)-qcom-ipq40xx-ap.dkxx_cc-fit-uImage.itb
ROOTFS_IMG:=$(IMG_PREFIX)-squashfs-root.img
ONE_IMAGE:=$(BIN_DIR)/oneimage.img
ONE_IMAGE_CC:=$(BIN_DIR)/oneimage_cc.img
DNI_IMAGE:=$(BIN_DIR)/$(MODULE_NAME)-V$(FW_VERSION)$(FW_REGION).img
DNI_IMAGE_CC:=$(BIN_DIR)/$(MODULE_NAME_CC)-V$(FW_VERSION)$(FW_REGION).img
ONE_IMAGE_FINAL:=$(BIN_DIR)/oneimage.img.final
ONE_IMAGE_FINAL_CC:=$(BIN_DIR)/oneimage_cc.img.final
define Image/Build/Orbi
echo "Generating $(2) Firmware"
test `cat $(BIN_DIR)/$(KERNEL_IMG) |wc -c` -le $(KERNEL_SIZE)
test `cat $(BIN_DIR)/$(ROOTFS_IMG) |wc -c` -le $(ROOTFS_SIZE)
rm -f $(ONE_IMAGE)
(\
dd if=$(BIN_DIR)/$(KERNEL_IMG) bs=$(KERNEL_SIZE) conv=sync; \
dd if=$(BIN_DIR)/$(ROOTFS_IMG) bs=64k; \
) > $(ONE_IMAGE)
$(STAGING_DIR_HOST)/bin/orbi $(BIN_DIR)/$(KERNEL_IMG) $(BIN_DIR)/$(KERNEL_IMG).normal
dd if=$(BIN_DIR)/$(KERNEL_IMG) bs=$(shell expr $(KERNEL_SIZE) - 64) conv=sync of=$(BIN_DIR)/$(KERNEL_IMG).final
$(call Image/BuildKernel/MkuImage,lzma,0x40908000,0x40908000,$(BIN_DIR)/$(ROOTFS_IMG),$(BIN_DIR)/$(ROOTFS_IMG).uImage)
$(STAGING_DIR_HOST)/bin/orbi $(BIN_DIR)/$(ROOTFS_IMG).uImage $(BIN_DIR)/$(ROOTFS_IMG).tmp
dd if=$(BIN_DIR)/$(ROOTFS_IMG).tmp bs=64 count=1 >> $(BIN_DIR)/$(KERNEL_IMG).final
(\
dd if=$(BIN_DIR)/$(KERNEL_IMG).final bs=$(KERNEL_SIZE) conv=sync; \
dd if=$(BIN_DIR)/$(ROOTFS_IMG) bs=64k; \
) > $(ONE_IMAGE_FINAL)
$(STAGING_DIR_HOST)/bin/mkdniimg \
-B $(MODULE_NAME) -v $(FW_VERSION) -r $(FW_REGION) -H $(HW_ID) \
-i $(ONE_IMAGE_FINAL) \
-o $(DNI_IMAGE)
-cd $(BIN_DIR) && md5sum $(MODULE_NAME)-V$(FW_VERSION)$(FW_REGION).img > $(MODULE_NAME)-V$(FW_VERSION)$(FW_REGION).img-MD5.txt
-cd $(BIN_DIR) && rm $(MODULE_NAME)-V$(FW_VERSION)$(FW_REGION).img.zip
-cd $(BIN_DIR) && zip $(MODULE_NAME)-V$(FW_VERSION)$(FW_REGION).img.zip $(MODULE_NAME)-V$(FW_VERSION)$(FW_REGION).img $(MODULE_NAME)-V$(FW_VERSION)$(FW_REGION).img-MD5.txt
echo "Generating $(2) Firmware"
test `cat $(BIN_DIR)/$(KERNEL_IMG_CC) |wc -c` -le $(KERNEL_SIZE)
test `cat $(BIN_DIR)/$(ROOTFS_IMG) |wc -c` -le $(ROOTFS_SIZE)
rm -f $(ONE_IMAGE_CC)
(\
dd if=$(BIN_DIR)/$(KERNEL_IMG_CC) bs=$(KERNEL_SIZE) conv=sync; \
dd if=$(BIN_DIR)/$(ROOTFS_IMG) bs=64k; \
) > $(ONE_IMAGE_CC)
$(STAGING_DIR_HOST)/bin/orbi $(BIN_DIR)/$(KERNEL_IMG_CC) $(BIN_DIR)/$(KERNEL_IMG_CC).normal
dd if=$(BIN_DIR)/$(KERNEL_IMG_CC) bs=$(shell expr $(KERNEL_SIZE) - 64) conv=sync of=$(BIN_DIR)/$(KERNEL_IMG_CC).final
$(call Image/BuildKernel/MkuImage,lzma,0x40908000,0x40908000,$(BIN_DIR)/$(ROOTFS_IMG),$(BIN_DIR)/$(ROOTFS_IMG).uImage)
$(STAGING_DIR_HOST)/bin/orbi $(BIN_DIR)/$(ROOTFS_IMG).uImage $(BIN_DIR)/$(ROOTFS_IMG).tmp
dd if=$(BIN_DIR)/$(ROOTFS_IMG).tmp bs=64 count=1 >> $(BIN_DIR)/$(KERNEL_IMG_CC).final
(\
dd if=$(BIN_DIR)/$(KERNEL_IMG_CC).final bs=$(KERNEL_SIZE) conv=sync; \
dd if=$(BIN_DIR)/$(ROOTFS_IMG) bs=64k; \
) > $(ONE_IMAGE_FINAL_CC)
$(STAGING_DIR_HOST)/bin/mkdniimg \
-B $(MODULE_NAME_CC) -v $(FW_VERSION) -r $(FW_REGION) -H $(HW_ID) \
-i $(ONE_IMAGE_FINAL_CC) \
-o $(DNI_IMAGE_CC)
-cd $(BIN_DIR) && md5sum $(MODULE_NAME_CC)-V$(FW_VERSION)$(FW_REGION).img > $(MODULE_NAME_CC)-V$(FW_VERSION)$(FW_REGION).img-MD5.txt
-cd $(BIN_DIR) && rm $(MODULE_NAME_CC)-V$(FW_VERSION)$(FW_REGION).img.zip
-cd $(BIN_DIR) && zip $(MODULE_NAME_CC)-V$(FW_VERSION)$(FW_REGION).img.zip $(MODULE_NAME_CC)-V$(FW_VERSION)$(FW_REGION).img $(MODULE_NAME_CC)-V$(FW_VERSION)$(FW_REGION).img-MD5.txt
endef
define Image/Build
$(call Image/Build/$(1),$(1))
dd if=$(KDIR)/root$(2).$(1) of=$(BIN_DIR)/$(IMG_PREFIX)$(2)-$(1)-root.img bs=128k conv=sync
$(call Image/Build/Orbi,$(1),orbi)
endef
$(eval $(call BuildImage))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment