X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=target%2Flinux%2Fbcm53xx%2Fimage%2FMakefile;h=1c987dff52685b57029d8ba0dddce8081245e799;hp=968388380a10528b5f54b80a0c5f3a3611fcd959;hb=3b5d29b96e4df80dbfbcc5bbb8a5898a9390c683;hpb=78be7225c3d6741d8abfa9d9a7ac1f8e431a2cc5 diff --git a/target/linux/bcm53xx/image/Makefile b/target/linux/bcm53xx/image/Makefile index 968388380a..1c987dff52 100644 --- a/target/linux/bcm53xx/image/Makefile +++ b/target/linux/bcm53xx/image/Makefile @@ -11,69 +11,278 @@ define Image/Prepare rm -f $(KDIR)/fs_mark echo -ne '\xde\xad\xc0\xde' > $(KDIR)/fs_mark $(call prepare_generic_squashfs,$(KDIR)/fs_mark) + + # For UBI we want only one extra block + rm -f $(KDIR)/ubi_mark + echo -ne '\xde\xad\xc0\xde' > $(KDIR)/ubi_mark +endef + +define Build/lzma-d16 + $(STAGING_DIR_HOST)/bin/lzma e $@ -d16 $(1) $@.new + mv $@.new $@ +endef + +# Similar to Build/tplink-safeloader but uses TRX instead of clean kernel +define Build/bcm53xx-tplink-safeloader + $(STAGING_DIR_HOST)/bin/trx \ + -o $@.trx \ + -m 33554432 \ + -f $(IMAGE_KERNEL) -a 1024 + $(STAGING_DIR_HOST)/bin/tplink-safeloader \ + -B $(TPLINK_BOARD) \ + -k $@.trx \ + -r $@ \ + -j \ + -o $@.new + mv $@.new $@ + rm $@.trx +endef + +define Build/buffalo-wzr-header + $(eval product=$(word 1,$(1))) + $(eval region=$(word 2,$(1))) + ( \ + echo $(product)_$(BUFFALO_TAG_VERSION)_$(BUFFALO_TAG_MINOR)_$(region)_$(BUFFALO_TAG_PLATFORM); \ + echo filelen=$$(stat -c%s $@); \ + cat $@ \ + ) > $@.new + mv $@.new $@ +endef + +define Build/trx-serial + $(STAGING_DIR_HOST)/bin/trx \ + -o $@.new \ + -m 33554432 \ + -f $(IMAGE_KERNEL) -a 1024 \ + -f $@ -a 0x10000 -A $(KDIR)/fs_mark + mv $@.new $@ +endef + +define Build/trx-nand + # kernel: always use 4 MiB (-28 B or TRX header) to allow upgrades even + # if it grows up between releases + # root: UBI with one extra block containing UBI mark to trigger erasing + # rest of partition + $(STAGING_DIR_HOST)/bin/trx \ + -o $@.new \ + -m 33554432 \ + -f $(IMAGE_KERNEL) -a 0x20000 -b 0x400000 \ + -f $@ \ + -A $(KDIR)/ubi_mark -a 0x20000 + mv $@.new $@ +endef + +define Build/asus-trx + $(STAGING_DIR_HOST)/bin/asustrx \ + -p $(PRODUCTID) -i $@ -o $@.new + mv $@.new $@ +endef + +define Build/seama-nand + # Seama entity + $(STAGING_DIR_HOST)/bin/oseama \ + entity $@.entity \ + -m "dev=/dev/mtdblock/7" \ + -m "type=firmware" \ + -f $(IMAGE_KERNEL) \ + -b 0x400000 \ + -f $@ \ + -f $(KDIR)/ubi_mark + # Seama container + $(STAGING_DIR_HOST)/bin/seama \ + -s $@ \ + -m "signature=$(SIGNATURE)" \ + -i $@.entity +endef + +DEVICE_VARS += PRODUCTID SIGNATURE NETGEAR_BOARD_ID NETGEAR_REGION TPLINK_BOARD +DEVICE_VARS += BUFFALO_TAG_PLATFORM BUFFALO_TAG_VERSION BUFFALO_TAG_MINOR + +BRCMFMAC_43602A1 := kmod-brcmfmac brcmfmac-firmware-43602a1-pcie +BRCMFMAC_4366B1 := kmod-brcmfmac brcmfmac-firmware-4366b1-pcie +USB2_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-phy-bcm-ns-usb2 +USB2_PACKAGES += kmod-usb-ledtrig-usbport +USB3_PACKAGES := $(USB2_PACKAGES) kmod-usb3 kmod-phy-bcm-ns-usb3 + +define Device/Default + # .dtb files are prefixed by SoC type, e.g. bcm4708- which is not included in device/image names + # extract the full dtb name based on the device info + DEVICE_DTS := $(patsubst %.dtb,%,$(notdir $(wildcard $(if $(IB),$(KDIR),$(DTS_DIR))/*-$(1).dtb))) + KERNEL := kernel-bin | append-dtb | lzma-d16 + KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts) + FILESYSTEMS := squashfs + KERNEL_NAME := zImage + IMAGE_NAME = $$(IMAGE_PREFIX)-$$(1).$$(2) + IMAGES := trx + BLOCKSIZE := 128k + PAGESIZE := 2048 + IMAGE/trx := append-ubi | trx-nand +endef + +define Device/asus + IMAGES := trx + IMAGE/trx := append-ubi | trx-nand | asus-trx +endef + +define Device/asus-rt-ac56u + DEVICE_TITLE := Asus RT-AC56U + DEVICE_PACKAGES := kmod-b43 $(USB3_PACKAGES) endef +TARGET_DEVICES += asus-rt-ac56u -# $(1): dts filename (also used for the firmware file). -define Image/Build/initramfs/DTB - $(call Image/Build/DTB,zImage-initramfs,$(1)) - $(STAGING_DIR_HOST)/bin/trx -o $(KDIR)/$(IMG_PREFIX)-$(1)-initramfs.trx \ - -f $(KDIR)/zImage-initramfs-$(1).lzma +define Device/asus-rt-ac68u + DEVICE_TITLE := Asus RT-AC68U + DEVICE_PACKAGES := $(USB3_PACKAGES) endef +TARGET_DEVICES += asus-rt-ac68u -# $(1): dts filename (also used for the firmware file). -define Image/Build/squashfs/DTB - $(call Image/Build/DTB,zImage,$(1)) - $(STAGING_DIR_HOST)/bin/trx -o $(KDIR)/$(IMG_PREFIX)-$(1)-squashfs.trx \ - -f $(KDIR)/zImage-$(1).lzma \ - -a 1024 -f $(KDIR)/root.squashfs -a 0x10000 -A $(KDIR)/fs_mark +define Device/asus-rt-ac87u + DEVICE_TITLE := Asus RT-AC87U + DEVICE_PACKAGES := $(USB3_PACKAGES) endef +TARGET_DEVICES += asus-rt-ac87u -# $(1): kernel (Linux) image file -# $(2): dts filename (also used for the firmware file). -define Image/Build/DTB - rm -f $(KDIR)/$(1)-$(2).lzma - rm -f $(KDIR)/$(1)-$(2).dts - cat $(KDIR)/$(1) $(DTS_DIR)/$(2).dtb > $(KDIR)/$(1)-$(2).dts; - $(STAGING_DIR_HOST)/bin/lzma e $(KDIR)/$(1)-$(2).dts $(KDIR)/$(1)-$(2).lzma -d16 +define Device/asus-rt-n18u + DEVICE_TITLE := Asus RT-N18U + DEVICE_PACKAGES := $(USB3_PACKAGES) endef +TARGET_DEVICES += asus-rt-n18u -# $(1): filesystem type (e.g. squashfs, initramfs). -# $(2): dts filename (also used for the firmware file). -# $(3): device specific magic. -define Image/Build/AsusTrx - $(call Image/Build/$(1)/DTB,$(2)) - # TODO: Put magic in TRX file - cp $(KDIR)/$(IMG_PREFIX)-$(2)-$(1).trx $(BIN_DIR)/ +define Device/buffalo-wxr-1900dhp + DEVICE_TITLE := Buffalo WXR-1900DHP + DEVICE_PACKAGES := $(USB3_PACKAGES) endef +TARGET_DEVICES += buffalo-wxr-1900dhp -# $(1): filesystem type (e.g. squashfs, initramfs). -# $(2): dts filename (also used for the firmware file). -define Image/Build/Trx - $(call Image/Build/$(1)/DTB,$(2)) - cp $(KDIR)/$(IMG_PREFIX)-$(2)-$(1).trx $(BIN_DIR)/ +define Device/buffalo-wzr-600dhp2 + DEVICE_TITLE := Buffalo WZR-600DHP2 + DEVICE_PACKAGES := kmod-b43 $(USB2_PACKAGES) endef +TARGET_DEVICES += buffalo-wzr-600dhp2 -# $(1): filesystem type (e.g. squashfs, initramfs). -# $(2): dts filename (also used for the firmware file). -# $(3): board_id (device specific magic). -# $(4): region. -define Image/Build/Chk - $(call Image/Build/$(1)/DTB,$(2)) - $(STAGING_DIR_HOST)/bin/mkchkimg -o $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).chk -k $(KDIR)/$(IMG_PREFIX)-$(2)-$(1).trx -b $(3) -r $(4) +define Device/buffalo-wzr-900dhp + DEVICE_TITLE := Buffalo WZR-900DHP + DEVICE_PACKAGES := kmod-b43 $(USB3_PACKAGES) + BUFFALO_TAG_PLATFORM := bcm + BUFFALO_TAG_VERSION := 9.99 + BUFFALO_TAG_MINOR := 9.99 + IMAGES += factory-DHP-EU.bin factory-DHP2-JP.bin + IMAGE/factory-DHP-EU.bin := \ + append-ubi | trx-nand | buffalo-wzr-header WZR-900DHP EU | \ + buffalo-enc WZR-900DHP $$(BUFFALO_TAG_VERSION) | \ + buffalo-tag-dhp WZR-900DHP EU mlang20 | buffalo-enc-tag | \ + buffalo-dhp-image + IMAGE/factory-DHP2-JP.bin := \ + append-ubi | trx-nand | buffalo-wzr-header WZR-900DHP2 JP | \ + buffalo-enc WZR-900DHP2 $$(BUFFALO_TAG_VERSION) | \ + buffalo-tag-dhp WZR-900DHP2 JP jp | buffalo-enc-tag | \ + buffalo-dhp-image endef +TARGET_DEVICES += buffalo-wzr-900dhp -# $(1): filesystem type (e.g. squashfs, initramfs). -define Image/Build - $(call Image/Build/AsusTrx,$(1),bcm47081-asus-rt-n18u,RT-N18U) +define Device/buffalo-wzr-1750dhp + DEVICE_TITLE := Buffalo WZR-1750DHP + DEVICE_PACKAGES := kmod-b43 $(USB3_PACKAGES) +endef +TARGET_DEVICES += buffalo-wzr-1750dhp + +define Device/dlink + IMAGES := bin + IMAGE/bin := append-ubi | seama-nand +endef + +define Device/dlink-dir-885l + DEVICE_TITLE := D-Link DIR-885L + DEVICE_PACKAGES := $(BRCMFMAC_4366B1) $(USB3_PACKAGES) + $(Device/dlink) + SIGNATURE := wrgac42_dlink.2015_dir885l +endef +TARGET_DEVICES += dlink-dir-885l + +define Device/linksys-ea6300-v1 + DEVICE_TITLE := Linksys EA6300 V1 + DEVICE_PACKAGES := kmod-b43 $(USB3_PACKAGES) +endef +# Disabled due to problems with 2 TRX partitions +# TARGET_DEVICES += linksys-ea6300-v1 + +define Device/netgear + IMAGES := chk + IMAGE/chk := append-ubi | trx-nand | netgear-chk + NETGEAR_REGION := 1 +endef - $(call Image/Build/Trx,$(1),bcm4708-buffalo-wzr-1750dhp) +define Device/netgear-r6250 + DEVICE_TITLE := Netgear R6250 + DEVICE_PACKAGES := kmod-b43 $(USB3_PACKAGES) + $(Device/netgear) + NETGEAR_BOARD_ID := U12H245T00_NETGEAR +endef + +define Device/netgear-r6300-v2 + DEVICE_TITLE := Netgear R6300 V2 + DEVICE_PACKAGES := kmod-b43 $(USB3_PACKAGES) + $(Device/netgear) + NETGEAR_BOARD_ID := U12H240T00_NETGEAR +endef - $(call Image/Build/Chk,$(1),bcm4708-netgear-r6250,U12H245T00_NETGEAR,1) - $(call Image/Build/Chk,$(1),bcm4708-netgear-r6300-v2,U12H240T00_NETGEAR,1) +define Device/netgear-r7000 + DEVICE_TITLE := Netgear R7000 + DEVICE_PACKAGES := $(USB3_PACKAGES) + $(Device/netgear) + NETGEAR_BOARD_ID := U12H270T00_NETGEAR endef +TARGET_DEVICES += netgear-r7000 -define Image/Build/Initramfs - $(call Image/Build,initramfs) +define Device/netgear-r7900 + DEVICE_TITLE := Netgear R7900 + DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB3_PACKAGES) + $(Device/netgear) + NETGEAR_BOARD_ID := U12H315T30_NETGEAR endef +TARGET_DEVICES += netgear-r7900 + +define Device/netgear-r8000 + DEVICE_TITLE := Netgear R8000 + DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB3_PACKAGES) + $(Device/netgear) + NETGEAR_BOARD_ID := U12H315T00_NETGEAR +endef + +define Device/netgear-r8500 + DEVICE_TITLE := Netgear R8500 + DEVICE_PACKAGES := $(BRCMFMAC_4366B1) $(USB3_PACKAGES) + $(Device/netgear) + NETGEAR_BOARD_ID := U12H334T00_NETGEAR +endef +# TARGET_DEVICES += netgear-r8500 + +define Device/smartrg-sr400ac + DEVICE_TITLE := SmartRG SR400ac + DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB3_PACKAGES) + IMAGES := trx + IMAGE/trx := append-rootfs | trx-serial +endef + +define Device/tenda-ac9 + DEVICE_TITLE := Tenda AC9 + DEVICE_PACKAGES := kmod-b43 $(USB2_PACKAGES) + IMAGES := trx + IMAGE/trx := append-rootfs | trx-serial +endef +TARGET_DEVICES += tenda-ac9 + +define Device/tplink-archer-c9-v1 + DEVICE_TITLE := TP-LINK Archer C9 V1 + DEVICE_PACKAGES := $(USB3_PACKAGES) + IMAGES := bin + IMAGE/bin := append-rootfs | bcm53xx-tplink-safeloader + TPLINK_BOARD := ARCHERC9 +endef +TARGET_DEVICES += tplink-archer-c9-v1 + +TARGET_DEVICES += \ + netgear-r6250 netgear-r6300-v2 netgear-r8000 \ + smartrg-sr400ac $(eval $(call BuildImage))