1# Copyright (c) 2014 The Linux Foundation. All rights reserved. 2# 3include $(TOPDIR)/rules.mk 4include $(INCLUDE_DIR)/image.mk 5 6UBIFS_OPTS = -m 2048 -e 124KiB -c 4096 -U -F 7UBINIZE_OPTS = -m 2048 -p 128KiB 8 9KERNEL_LOADADDR := 0x42208000 10 11define Image/Prepare 12 $(CP) $(LINUX_DIR)/vmlinux $(KDIR)/$(IMG_PREFIX)-vmlinux.elf 13 mkimage -A arm -O linux -T filesystem -C none \ 14 -a $(KERNEL_LOADADDR) -e $(KERNEL_LOADADDR) \ 15 -n 'ARM OpenWrt fakeroot' \ 16 -s $(KDIR_TMP)/root.dummy-uImage.tmp 17 echo -ne '\xff' > $(KDIR_TMP)/root.dummy 18 cat $(KDIR_TMP)/root.dummy $(KDIR_TMP)/root.dummy-uImage.tmp > $(KDIR)/root.dummy 19endef 20 21define Image/BuildKernel 22 $(CP) $(KDIR)/$(IMG_PREFIX)-vmlinux.elf $(BIN_DIR) 23endef 24 25define Image/Build/squashfs 26 cp $(KDIR)/root.squashfs $(KDIR)/root.squashfs-raw 27 $(call prepare_generic_squashfs,$(KDIR)/root.squashfs) 28endef 29 30define Image/Build 31 $(call Image/Build/$(1),$(1)) 32 dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-root.img bs=2k conv=sync 33endef 34 35define Build/append-dtb 36 cat $(DTS_DIR)/$(DEVICE_DTS).dtb >> $@ 37endef 38 39define Build/append-file 40 cat $(1) >> $@ 41endef 42 43define Device/Default 44 PROFILES := Default 45 KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts) 46 KERNEL_INITRAMFS_PREFIX := $$(IMG_PREFIX)-$(1)-initramfs 47 DEVICE_DTS := 48 KERNEL_PREFIX := $$(IMAGE_PREFIX) 49 IMAGES := 50 KERNEL_IN_UBI := 51 BOARD_NAME := 52endef 53DEVICE_VARS += DEVICE_DTS KERNEL_IN_UBI BOARD_NAME 54 55define Device/LegacyImage 56 KERNEL_SUFFIX := -uImage 57 KERNEL = kernel-bin | append-dtb | uImage none 58 KERNEL_NAME := zImage 59endef 60 61define Device/FitImage 62 KERNEL_SUFFIX := -fit-uImage.itb 63 KERNEL = kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb 64 KERNEL_NAME := Image 65endef 66 67define Device/UbiFit 68 KERNEL_IN_UBI := 1 69 IMAGES := nand-factory.ubi nand-sysupgrade.tar 70 IMAGE/nand-factory.ubi := append-ubi 71 IMAGE/nand-sysupgrade.tar := sysupgrade-nand 72endef 73 74define Device/DniImage 75 PROFILES += $$(DEVICE_NAME) 76 FILESYSTEMS := squashfs 77 KERNEL_SUFFIX := -uImage 78 KERNEL_INITRAMFS := kernel-bin | append-dtb | uImage none 79 KERNEL = kernel-bin | append-dtb | pad-to $$$$(($$(KERNEL_SIZE)-2*64-1)) | uImage none | append-file $(KDIR)/root.dummy 80 KERNEL_NAME := zImage 81 NETGEAR_BOARD_ID := 82 NETGEAR_HW_ID := 83 IMAGES := factory.img sysupgrade.tar 84 IMAGE/factory.img := append-kernel | append-ubi | netgear-dni 85 IMAGE/sysupgrade.tar = sysupgrade-nand 86endef 87DEVICE_VARS += KERNEL_SIZE NETGEAR_BOARD_ID NETGEAR_HW_ID DEVICE_BLOCK_SIZE DEVICE_PAGE_SIZE 88 89define Device/TpSafeImage 90 PROFILES += $$(DEVICE_NAME) 91 FILESYSTEMS := squashfs 92 KERNEL_SUFFIX := -uImage 93 KERNEL = kernel-bin | append-dtb | uImage none 94 KERNEL_NAME := zImage 95 TPLINK_BOARD_NAME := 96 IMAGES := factory.bin sysupgrade.bin 97 IMAGE/factory.bin := append-rootfs | tplink-safeloader factory 98 IMAGE/sysupgrade.bin := append-rootfs | tplink-safeloader sysupgrade 99endef 100DEVICE_VARS += TPLINK_BOARD_NAME 101 102define Device/AP148 103 $(call Device/FitImage) 104 $(call Device/UbiFit) 105 DEVICE_DTS := qcom-ipq8064-ap148 106 BLOCKSIZE := 128KiB 107 PAGESIZE := 2048 108 BOARD_NAME := ap148 109 DEVICE_TITLE := Qualcomm AP148 110 DEVICE_PACKAGES := ath10k-firmware-qca99x0 111endef 112 113define Device/AP148-legacy 114 $(call Device/LegacyImage) 115 $(call Device/UbiFit) 116 DEVICE_DTS := qcom-ipq8064-ap148 117 BLOCKSIZE := 128KiB 118 PAGESIZE := 2048 119 BOARD_NAME := ap148 120 DEVICE_TITLE := Qualcomm AP148 (legacy) 121 DEVICE_PACKAGES := ath10k-firmware-qca99x0 122endef 123 124define Device/C2600 125 $(call Device/TpSafeImage) 126 DEVICE_DTS := qcom-ipq8064-c2600 127 BLOCKSIZE := 128KiB 128 PAGESIZE := 2048 129 BOARD_NAME := c2600 130 TPLINK_BOARD_NAME := C2600 131 DEVICE_TITLE := TP-Link Archer C2600 132 DEVICE_PACKAGES := ath10k-firmware-qca99x0 133endef 134 135define Device/D7800 136 $(call Device/DniImage) 137 DEVICE_DTS := qcom-ipq8064-d7800 138 KERNEL_SIZE := 2097152 139 NETGEAR_BOARD_ID := D7800 140 NETGEAR_HW_ID := 29764958+0+128+512+4x4+4x4 141 BLOCKSIZE := 128KiB 142 PAGESIZE := 2048 143 BOARD_NAME := d7800 144 DEVICE_TITLE := Netgear Nighthawk X4 D7800 145 DEVICE_PACKAGES := ath10k-firmware-qca99x0 146endef 147 148define Device/DB149 149 $(call Device/FitImage) 150 DEVICE_DTS := qcom-ipq8064-db149 151 KERNEL_INSTALL := 1 152 BOARD_NAME := db149 153 DEVICE_TITLE := Qualcomm DB149 154 DEVICE_PACKAGES := ath10k-firmware-qca99x0 155endef 156 157define Device/EA8500 158 $(call Device/LegacyImage) 159 DEVICE_DTS := qcom-ipq8064-ea8500 160 PAGESIZE := 2048 161 BLOCKSIZE := 128KiB 162 KERNEL_SIZE := 3145728 163 FILESYSTEMS := squashfs 164 KERNEL = kernel-bin | append-dtb | uImage none | append-file $(KDIR)/root.dummy 165 PROFILES += $$(DEVICE_NAME) 166 BOARD_NAME := ea8500 167 IMAGES := factory.bin sysupgrade.tar 168 IMAGE/factory.bin := append-kernel 3145728 | append-ubi 169 IMAGE/sysupgrade.tar := sysupgrade-nand 170 DEVICE_VARS += DEVICE_DTS KERNEL_SIZE PAGESIZE BLOCKSIZE SUBPAGESIZE 171 DEVICE_TITLE := Linksys EA8500 172 DEVICE_PACKAGES := ath10k-firmware-qca99x0 173endef 174 175define Device/R7500 176 $(call Device/DniImage) 177 DEVICE_DTS := qcom-ipq8064-r7500 178 KERNEL_SIZE := 2097152 179 NETGEAR_BOARD_ID := R7500 180 NETGEAR_HW_ID := 29764841+0+128+256+3x3+4x4 181 BLOCKSIZE := 128KiB 182 PAGESIZE := 2048 183 BOARD_NAME := r7500 184 DEVICE_TITLE := Netgear Nighthawk X4 R7500 185 DEVICE_PACKAGES := ath10k-firmware-qca99x0 186endef 187 188define Device/R7500v2 189 $(call Device/DniImage) 190 DEVICE_DTS := qcom-ipq8064-r7500v2 191 KERNEL_SIZE := 2097152 192 NETGEAR_BOARD_ID := R7500v2 193 NETGEAR_HW_ID := 29764958+0+128+512+3x3+4x4 194 BLOCKSIZE := 128KiB 195 PAGESIZE := 2048 196 BOARD_NAME := r7500v2 197 DEVICE_PACKAGES := ath10k-firmware-qca99x0 198endef 199 200define Device/R7800 201 $(call Device/DniImage) 202 DEVICE_DTS := qcom-ipq8065-r7800 203 KERNEL_SIZE := 2097152 204 NETGEAR_BOARD_ID := R7800 205 NETGEAR_HW_ID := 29764958+0+128+512+4x4+4x4+cascade 206 BLOCKSIZE := 128KiB 207 PAGESIZE := 2048 208 BOARD_NAME := r7800 209 DEVICE_TITLE := Netgear Nighthawk X4S R7800 210 DEVICE_PACKAGES := ath10k-firmware-qca9984 211endef 212 213TARGET_DEVICES += AP148 AP148-legacy C2600 D7800 DB149 EA8500 R7500 R7500v2 R7800 214 215$(eval $(call BuildImage)) 216