Initial commit

This commit is contained in:
domenico
2025-06-24 16:03:39 +02:00
commit f3256cdaf2
6949 changed files with 1441681 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
#
# Copyright (C) 2008-2011 OpenWrt.org
#
# 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 = 0x80060000
DEVICE_VARS += BOARDNAME CMDLINE CONSOLE IMAGE_SIZE LOADER_TYPE
ifeq ($(SUBTARGET),generic)
include ./generic.mk
include ./generic-legacy-devices.mk
include ./generic-tp-link.mk
include ./generic-ubnt.mk
endif
ifeq ($(SUBTARGET),tiny)
include ./tiny.mk
include ./tiny-tp-link.mk
include ./tiny-legacy-devices.mk
include ./tiny-senao.mk
endif
ifeq ($(SUBTARGET),nand)
include ./nand.mk
endif
ifeq ($(SUBTARGET),mikrotik)
include ./mikrotik.mk
endif
include ./legacy.mk
define Build/loader-common
rm -rf $@.src
$(MAKE) -C lzma-loader \
PKG_BUILD_DIR="$@.src" \
TARGET_DIR="$(dir $@)" LOADER_NAME="$(notdir $@)" \
BOARD="$(BOARDNAME)" \
LZMA_TEXT_START=0x80a00000 LOADADDR=0x80060000 \
$(1) compile loader.$(LOADER_TYPE)
mv "$@.$(LOADER_TYPE)" "$@"
rm -rf $@.src
endef
define Build/loader-kernel
$(call Build/loader-common,LOADER_DATA="$@")
endef
define Build/loader-kernel-cmdline
$(call Build/loader-common,LOADER_DATA="$@" KERNEL_CMDLINE="$(CMDLINE)")
endef
define Device/Default
BOARDNAME :=
DEVICE_PROFILE = $$(BOARDNAME)
PROFILES = Default Minimal $$(DEVICE_PROFILE)
MTDPARTS :=
BLOCKSIZE := 64k
CONSOLE := ttyS0,115200
CMDLINE = $$(if $$(BOARDNAME),board=$$(BOARDNAME)) $$(if $$(MTDPARTS),mtdparts=$$(MTDPARTS)) $$(if $$(CONSOLE),console=$$(CONSOLE))
KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma
COMPILE :=
IMAGES := sysupgrade.bin
IMAGE/sysupgrade.bin = append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
endef
$(eval $(call BuildImage))

View File

@@ -0,0 +1,108 @@
DEVICE_VARS += LOADER_FLASH_OFFS TPLINK_BOARD_ID TPLINK_FLASHLAYOUT TPLINK_HEADER_VERSION TPLINK_HWID TPLINK_HWREV
# Arguments: <output name> <kernel offset>
define Build/loader-okli
dd if=$(KDIR)/loader-$(word 1,$(1)).$(LOADER_TYPE) bs=$(word 2,$(1)) conv=sync of="$@.new"
cat "$@" >> "$@.new"
mv "$@.new" "$@"
endef
define Build/loader-okli-compile
$(call Build/loader-common,FLASH_OFFS=$(LOADER_FLASH_OFFS) FLASH_MAX=0 KERNEL_CMDLINE="$(CMDLINE)")
endef
# combine kernel and rootfs into one image
# mktplinkfw <type> <optional extra arguments to mktplinkfw binary>
# <type> is "sysupgrade" or "factory"
#
# -a align the rootfs start on an <align> bytes boundary
# -j add jffs2 end-of-filesystem markers
# -s strip padding from end of the image
# -X reserve <size> bytes in the firmware image (hexval prefixed with 0x)
define Build/mktplinkfw
-$(STAGING_DIR_HOST)/bin/mktplinkfw \
-H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) -N OpenWrt -V $(REVISION) \
-m $(TPLINK_HEADER_VERSION) \
-k $(IMAGE_KERNEL) \
-r $@ \
-o $@.new \
-j -X 0x40000 \
-a $(call rootfs_align,$(FILESYSTEM)) \
$(wordlist 2,$(words $(1)),$(1)) \
$(if $(findstring sysupgrade,$(word 1,$(1))),-s) && mv $@.new $@ || rm -f $@
endef
define Build/uImageArcher
mkimage -A $(LINUX_KARCH) \
-O linux -T kernel \
-C $(1) -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
-n '$(call toupper,$(LINUX_KARCH)) OpenWrt Linux-$(LINUX_VERSION)' -d $@ $@.new
@mv $@.new $@
endef
define Device/tplink
TPLINK_HWREV := 0x1
TPLINK_HEADER_VERSION := 1
IMAGES := sysupgrade.bin factory.bin
endef
define Device/tplink-lzma
$(Device/tplink)
KERNEL := kernel-bin | patch-cmdline | lzma
KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | tplink-v1-header
IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade
IMAGE/factory.bin := append-rootfs | mktplinkfw factory
endef
define Device/tplink-nolzma
$(Device/tplink)
LOADER_TYPE := gz
LOADER_FLASH_OFFS := 0x22000
COMPILE := loader-$(1).gz
COMPILE/loader-$(1).gz := loader-okli-compile
KERNEL_NAME := vmlinux.bin.lzma
KERNEL := kernel-bin | uImage lzma -M 0x4f4b4c49 | loader-okli $(1) 7680
KERNEL_INITRAMFS_NAME := vmlinux-initramfs.bin.lzma
KERNEL_INITRAMFS := kernel-bin | loader-kernel-cmdline | tplink-v1-header
IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade
IMAGE/factory.bin := append-rootfs | mktplinkfw factory
endef
define Device/tplink-safeloader
$(Device/tplink)
KERNEL := kernel-bin | patch-cmdline | lzma | tplink-v1-header
IMAGE/sysupgrade.bin := append-rootfs | tplink-safeloader sysupgrade | \
append-metadata | check-size $$$$(IMAGE_SIZE)
IMAGE/factory.bin := append-rootfs | tplink-safeloader factory
endef
define Device/tplink-4m
$(Device/tplink-nolzma)
TPLINK_FLASHLAYOUT := 4M
IMAGE_SIZE := 3904k
endef
define Device/tplink-8m
$(Device/tplink-nolzma)
TPLINK_FLASHLAYOUT := 8M
IMAGE_SIZE := 7936k
endef
define Device/tplink-4mlzma
$(Device/tplink-lzma)
TPLINK_FLASHLAYOUT := 4Mlzma
IMAGE_SIZE := 3904k
endef
define Device/tplink-8mlzma
$(Device/tplink-lzma)
TPLINK_FLASHLAYOUT := 8Mlzma
IMAGE_SIZE := 7936k
endef
define Device/tplink-16mlzma
$(Device/tplink-lzma)
TPLINK_FLASHLAYOUT := 16Mlzma
IMAGE_SIZE := 15872k
endef

View File

@@ -0,0 +1,423 @@
define LegacyDevice/A60
DEVICE_TITLE := OpenMesh A40/A60
DEVICE_PACKAGES := om-watchdog kmod-ath10k-ct ath10k-firmware-qca988x-ct \
mod-usb-core kmod-usb2
endef
LEGACY_DEVICES += A60
define LegacyDevice/ALFANX
DEVICE_TITLE := ALFA Network N2/N5 board
endef
LEGACY_DEVICES += ALFANX
define LegacyDevice/HORNETUB
DEVICE_TITLE := ALFA Network Hornet-UB board (8MB flash, 32MB ram)
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += HORNETUB
define LegacyDevice/TUBE2H8M
DEVICE_TITLE := ALFA Network Tube2H board (8MB flash)
endef
LEGACY_DEVICES += TUBE2H8M
define LegacyDevice/AP96
DEVICE_TITLE := Atheros AP96 reference board
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
endef
LEGACY_DEVICES += AP96
define LegacyDevice/WNDAP360
DEVICE_TITLE := NETGEAR WNDAP360
endef
LEGACY_DEVICES += WNDAP360
define LegacyDevice/ALFAAP120C
DEVICE_TITLE := ALFA Network AP120C board
endef
LEGACY_DEVICES += ALFAAP120C
define LegacyDevice/ALFAAP96
DEVICE_TITLE := ALFA Network AP96 board
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-rtc-pcf2123
endef
LEGACY_DEVICES += ALFAAP96
define LegacyDevice/ALL0258N
DEVICE_TITLE := Allnet ALL0258N
DEVICE_PACKAGES := rssileds
endef
LEGACY_DEVICES += ALL0258N
define LegacyDevice/ALL0315N
DEVICE_TITLE := Allnet ALL0315N
DEVICE_PACKAGES := rssileds
endef
LEGACY_DEVICES += ALL0315N
define LegacyDevice/AP121_8M
DEVICE_TITLE := Atheros AP121 reference board (8MB flash)
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
endef
LEGACY_DEVICES += AP121_8M
define LegacyDevice/AP121_16M
DEVICE_TITLE := Atheros AP121 reference board (16MB flash)
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
endef
LEGACY_DEVICES += AP121_16M
define LegacyDevice/AP132
DEVICE_TITLE := Atheros AP132 reference board
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
endef
LEGACY_DEVICES += AP132
define LegacyDevice/AP135
DEVICE_TITLE := Atheros AP135 reference board
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
endef
LEGACY_DEVICES += AP135
define LegacyDevice/AP136_010
DEVICE_TITLE := Atheros AP136-010 reference board
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
endef
LEGACY_DEVICES += AP136_010
define LegacyDevice/AP136_020
DEVICE_TITLE := Atheros AP136-020 reference board
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
endef
LEGACY_DEVICES += AP136_020
define LegacyDevice/AP143_8M
DEVICE_TITLE := Qualcomm Atheros AP143 reference board (8MB flash)
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
endef
LEGACY_DEVICES += AP143_8M
define LegacyDevice/AP143_16M
DEVICE_TITLE := Qualcomm Atheros AP143 reference board (16MB flash)
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
endef
LEGACY_DEVICES += AP143_16M
define LegacyDevice/AP147_010
DEVICE_TITLE := Qualcomm Atheros AP147-010 reference board
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
endef
LEGACY_DEVICES += AP147_010
define LegacyDevice/AP152_16M
DEVICE_TITLE := Qualcomm Atheros AP152 reference board (16MB flash)
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
endef
LEGACY_DEVICES += AP152_16M
define LegacyDevice/BXU2000N2
DEVICE_TITLE := BHU BXU2000n-2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
endef
LEGACY_DEVICES += BXU2000N2
define LegacyDevice/CAP4200AG
DEVICE_TITLE := Senao CAP4200AG
endef
LEGACY_DEVICES += CAP4200AG
define LegacyDevice/DB120
DEVICE_TITLE := Atheros DB120 reference board
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
endef
LEGACY_DEVICES += DB120
define LegacyDevice/HORNETUBx2
DEVICE_TITLE := ALFA Network Hornet-UB-x2 board (16MB flash, 64MB ram)
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += HORNETUBx2
define LegacyDevice/TUBE2H16M
DEVICE_TITLE := ALFA Network Tube2H board (16MB flash)
endef
LEGACY_DEVICES += TUBE2H16M
define LegacyDevice/DIR505A1
DEVICE_TITLE := D-Link DIR-505 rev. A1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += DIR505A1
define LegacyDevice/DGL5500A1
DEVICE_TITLE := D-Link DGL-5500 rev. A1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca988x-ct
endef
LEGACY_DEVICES += DGL5500A1
define LegacyDevice/TEW823DRU
DEVICE_TITLE := TRENDNet TEW-823DRU
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca988x-ct
endef
LEGACY_DEVICES += TEW823DRU
define LegacyDevice/DHP1565A1
DEVICE_TITLE := D-Link DHP-1565 rev. A1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
endef
LEGACY_DEVICES += DHP1565A1
define LegacyDevice/DIR825C1
DEVICE_TITLE := D-Link DIR-825 rev. C1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += DIR825C1
define LegacyDevice/DIR835A1
DEVICE_TITLE := D-Link DIR-835 rev. A1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
endef
LEGACY_DEVICES += DIR835A1
define LegacyDevice/TEW732BR
DEVICE_TITLE := TRENDNet TEW-732BR
endef
LEGACY_DEVICES += TEW732BR
define LegacyDevice/WRT160NL
DEVICE_TITLE := Linksys WRT160NL
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
endef
LEGACY_DEVICES += WRT160NL
define LegacyDevice/MYNETREXT
DEVICE_TITLE := Western Digital My Net Wi-Fi Range Extender
DEVICE_PACKAGES := rssileds
endef
LEGACY_DEVICES += MYNETREXT
define LegacyDevice/DIR825B1
DEVICE_TITLE := D-Link DIR-825 rev. B1
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += DIR825B1
define LegacyDevice/TEW673GRU
DEVICE_TITLE := TRENDNet TEW-673GRU
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2
endef
LEGACY_DEVICES += TEW673GRU
define LegacyDevice/DLRTDEV01
DEVICE_TITLE := PowerCloud Systems dlrtdev01 model
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += DLRTDEV01
define LegacyDevice/dLAN_Hotspot
DEVICE_TITLE := devolo dLAN Hotspot
endef
LEGACY_DEVICES += dLAN_Hotspot
define LegacyDevice/dLAN_pro_500_wp
DEVICE_TITLE := devolo dLAN pro 500 Wireless+
endef
LEGACY_DEVICES += dLAN_pro_500_wp
define LegacyDevice/dLAN_pro_1200_ac
DEVICE_TITLE := devolo dLAN pro 1200+ WiFi ac
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
endef
LEGACY_DEVICES += dLAN_pro_1200_ac
define LegacyDevice/ESR900
DEVICE_TITLE := EnGenius ESR900
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += ESR900
define LegacyDevice/ESR1750
DEVICE_TITLE := EnGenius ESR1750
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage kmod-ath10k-ct ath10k-firmware-qca988x-ct
endef
LEGACY_DEVICES += ESR1750
define LegacyDevice/EPG5000
DEVICE_TITLE := EnGenius EPG5000
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage kmod-ath10k-ct ath10k-firmware-qca988x-ct
endef
LEGACY_DEVICES += EPG5000
define LegacyDevice/WP543_8M
DEVICE_TITLE := Compex WP543/WPJ543 (8MB flash)
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2
endef
LEGACY_DEVICES += WP543_8M
define LegacyDevice/WP543_16M
DEVICE_TITLE := Compex WP543/WPJ543 (16MB flash)
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2
endef
LEGACY_DEVICES += WP543_16M
define LegacyDevice/WPE72_8M
DEVICE_TITLE := Compex WPE72/WPE72NX (8MB flash)
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2
endef
LEGACY_DEVICES += WPE72_8M
define LegacyDevice/WPE72_16M
DEVICE_TITLE := Compex WPE72/WPE72NX (16MB flash)
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2
endef
LEGACY_DEVICES += WPE72_16M
define LegacyDevice/WNR2200
DEVICE_TITLE := NETGEAR WNR2200
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += WNR2200
define LegacyDevice/OM2P
DEVICE_TITLE := OpenMesh OM2P/OM2P-HS/OM2P-LC
DEVICE_PACKAGES := om-watchdog
endef
LEGACY_DEVICES += OM2P
define LegacyDevice/OM5P
DEVICE_TITLE := OpenMesh OM5P/OM5P-AN
DEVICE_PACKAGES := om-watchdog
endef
LEGACY_DEVICES += OM5P
define LegacyDevice/OM5PAC
DEVICE_TITLE := OpenMesh OM5P-AC
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct om-watchdog
endef
LEGACY_DEVICES += OM5PAC
define LegacyDevice/MR600
DEVICE_TITLE := OpenMesh MR600
DEVICE_PACKAGES := om-watchdog
endef
LEGACY_DEVICES += MR600
define LegacyDevice/MR900
DEVICE_TITLE := OpenMesh MR900
DEVICE_PACKAGES := om-watchdog
endef
LEGACY_DEVICES += MR900
define LegacyDevice/MR1750
DEVICE_TITLE := OpenMesh MR1750
DEVICE_PACKAGES := om-watchdog kmod-ath10k-ct ath10k-firmware-qca988x-ct
endef
LEGACY_DEVICES += MR1750
define LegacyDevice/ALL0305
DEVICE_TITLE := Allnet ALL0305
DEVICE_PACKAGES := fconfig kmod-ath5k -kmod-ath9k
endef
LEGACY_DEVICES += ALL0305
define LegacyDevice/EAP7660D
DEVICE_TITLE := Senao EAP7660D
endef
LEGACY_DEVICES += EAP7660D
define LegacyDevice/JA76PF
DEVICE_TITLE := jjPlus JA76PF
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-hwmon-core kmod-i2c-core kmod-hwmon-lm75
endef
LEGACY_DEVICES += JA76PF
define LegacyDevice/JA76PF2
DEVICE_TITLE := jjPlus JA76PF2
endef
LEGACY_DEVICES += JA76PF2
define LegacyDevice/JWAP003
DEVICE_TITLE := jjPlus JWAP003
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2
endef
LEGACY_DEVICES += JWAP003
define LegacyDevice/PB42
DEVICE_TITLE := Atheros PB42 reference board
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2
endef
LEGACY_DEVICES += PB42
define LegacyDevice/PB44
DEVICE_TITLE := Atheros PB44 reference board
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 \
vsc7385-ucode-pb44 vsc7395-ucode-pb44
endef
LEGACY_DEVICES += PB44
define LegacyDevice/MZKW04NU
DEVICE_TITLE := Planex MZK-W04NU
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += MZKW04NU
define LegacyDevice/MZKW300NH
DEVICE_TITLE := Planex MZK-W300NH
endef
LEGACY_DEVICES += MZKW300NH
define LegacyDevice/EAP300V2
DEVICE_TITLE := EnGenius EAP300V2
endef
LEGACY_DEVICES += EAP300V2
define LegacyDevice/WRT400N
DEVICE_TITLE := Linksys WRT400N
endef
LEGACY_DEVICES += WRT400N
define LegacyDevice/WZRHPG300NH
DEVICE_TITLE := Buffalo WZR-HP-G300NH
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += WZRHPG300NH
define LegacyDevice/WZRHPG300NH2
DEVICE_TITLE := Buffalo WZR-HP-G300NH2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += WZRHPG300NH2
define LegacyDevice/WZRHPAG300H
DEVICE_TITLE := Buffalo WZR-HP-AG300H
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += WZRHPAG300H
define LegacyDevice/WZRHPG450H
DEVICE_TITLE := Buffalo WZR-HP-G450H
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += WZRHPG450H
define LegacyDevice/WZR600DHP
DEVICE_TITLE := Buffalo WZR-600DHP
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += WZR600DHP
define LegacyDevice/WZR450HP2
DEVICE_TITLE := Buffalo WZR-450HP2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += WZR450HP2
define LegacyDevice/ZCN1523H28
DEVICE_TITLE := Zcomax ZCN-1523H-2-8
endef
LEGACY_DEVICES += ZCN1523H28
define LegacyDevice/ZCN1523H516
DEVICE_TITLE := Zcomax ZCN-1523H-5-16
endef
LEGACY_DEVICES += ZCN1523H516

View File

@@ -0,0 +1,544 @@
include ./common-tp-link.mk
define Device/archer-cxx
$(Device/tplink-safeloader)
KERNEL := kernel-bin | patch-cmdline | lzma | uImageArcher lzma
endef
define Device/archer-c25-v1
$(Device/archer-cxx)
DEVICE_TITLE := TP-LINK Archer C25 v1
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9887-ct
BOARDNAME := ARCHER-C25-V1
TPLINK_BOARD_ID := ARCHER-C25-V1
DEVICE_PROFILE := ARCHERC25V1
IMAGE_SIZE := 7808k
MTDPARTS := spi0.0:128k(factory-uboot)ro,64k(u-boot)ro,7808k(firmware),128k(config)ro,64k(art)ro
SUPPORTED_DEVICES := archer-c25-v1
endef
TARGET_DEVICES += archer-c25-v1
define Device/archer-c58-v1
$(Device/archer-cxx)
DEVICE_TITLE := TP-LINK Archer C58 v1
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct
BOARDNAME := ARCHER-C58-V1
TPLINK_BOARD_ID := ARCHER-C58-V1
DEVICE_PROFILE := ARCHERC58V1
IMAGE_SIZE := 7936k
MTDPARTS := spi0.0:64k(u-boot)ro,64k(mac)ro,7936k(firmware),64k(tplink)ro,64k(art)ro
SUPPORTED_DEVICES := archer-c58-v1
endef
TARGET_DEVICES += archer-c58-v1
define Device/archer-c59-v1
$(Device/archer-cxx)
DEVICE_TITLE := TP-LINK Archer C59 v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k-ct ath10k-firmware-qca9888-ct
BOARDNAME := ARCHER-C59-V1
TPLINK_BOARD_ID := ARCHER-C59-V1
DEVICE_PROFILE := ARCHERC59V1
IMAGE_SIZE := 14528k
MTDPARTS := spi0.0:64k(u-boot)ro,64k(mac)ro,14528k(firmware),1664k(tplink)ro,64k(art)ro
SUPPORTED_DEVICES := archer-c59-v1
endef
TARGET_DEVICES += archer-c59-v1
define Device/archer-c59-v2
$(Device/archer-c59-v1)
DEVICE_TITLE := TP-LINK Archer C59 v2
BOARDNAME := ARCHER-C59-V2
TPLINK_BOARD_ID := ARCHER-C59-V2
DEVICE_PROFILE := ARCHERC59V2
IMAGE_SIZE := 14400k
MTDPARTS := spi0.0:128k(factory-boot)ro,64k(u-boot)ro,64k(mac)ro,14400k(firmware),1664k(tplink)ro,64k@0xff0000(art)ro
SUPPORTED_DEVICES := archer-c59-v2
endef
TARGET_DEVICES += archer-c59-v2
define Device/archer-c60-v1
$(Device/archer-cxx)
DEVICE_TITLE := TP-LINK Archer C60 v1
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct
BOARDNAME := ARCHER-C60-V1
TPLINK_BOARD_ID := ARCHER-C60-V1
DEVICE_PROFILE := ARCHERC60V1
IMAGE_SIZE := 7936k
MTDPARTS := spi0.0:64k(u-boot)ro,64k(mac)ro,7936k(firmware),64k(tplink)ro,64k(art)ro
SUPPORTED_DEVICES := archer-c60-v1
endef
TARGET_DEVICES += archer-c60-v1
define Device/archer-c60-v2
$(Device/archer-c60-v1)
DEVICE_TITLE := TP-LINK Archer C60 v2
BOARDNAME := ARCHER-C60-V2
TPLINK_BOARD_ID := ARCHER-C60-V2
DEVICE_PROFILE := ARCHERC60V2
IMAGE_SIZE := 7808k
MTDPARTS := spi0.0:192k(u-boot)ro,7808k(firmware),128k(tplink)ro,64k(art)ro
SUPPORTED_DEVICES := archer-c60-v2
endef
TARGET_DEVICES += archer-c60-v2
define Device/archer-c5-v1
$(Device/tplink-16mlzma)
DEVICE_TITLE := TP-LINK Archer C5 v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k-ct ath10k-firmware-qca988x-ct
BOARDNAME := ARCHER-C5
DEVICE_PROFILE := ARCHERC7
TPLINK_HWID := 0xc5000001
endef
TARGET_DEVICES += archer-c5-v1
define Device/archer-c7-v1
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK Archer C7 v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := ARCHER-C7
DEVICE_PROFILE := ARCHERC7
TPLINK_HWID := 0x75000001
endef
TARGET_DEVICES += archer-c7-v1
define Device/archer-c7-v2
$(Device/tplink-16mlzma)
DEVICE_TITLE := TP-LINK Archer C7 v2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k-ct ath10k-firmware-qca988x-ct
BOARDNAME := ARCHER-C7-V2
DEVICE_PROFILE := ARCHERC7
TPLINK_HWID := 0xc7000002
IMAGES := sysupgrade.bin factory.bin factory-us.bin factory-eu.bin
IMAGE/factory-us.bin := append-rootfs | mktplinkfw factory -C US
IMAGE/factory-eu.bin := append-rootfs | mktplinkfw factory -C EU
endef
TARGET_DEVICES += archer-c7-v2
define Device/archer-c7-v2-il
$(Device/tplink-16mlzma)
DEVICE_TITLE := TP-LINK Archer C7 v2 (IL)
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k-ct ath10k-firmware-qca988x-ct
BOARDNAME := ARCHER-C7-V2
DEVICE_PROFILE := ARCHERC7
TPLINK_HWID := 0xc7000002
TPLINK_HWREV := 0x494c0001
endef
TARGET_DEVICES += archer-c7-v2-il
define Device/tl-wdr7500-v3
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK Archer C7 v3
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k-ct ath10k-firmware-qca988x-ct
BOARDNAME := ARCHER-C7
DEVICE_PROFILE := ARCHERC7
TPLINK_HWID := 0x75000003
endef
TARGET_DEVICES += tl-wdr7500-v3
define Device/archer-c7-v4
$(Device/archer-cxx)
DEVICE_TITLE := TP-LINK Archer C7 v4
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k-ct ath10k-firmware-qca988x-ct
BOARDNAME := ARCHER-C7-V4
TPLINK_BOARD_ID := ARCHER-C7-V4
IMAGE_SIZE := 15104k
MTDPARTS := spi0.0:128k(factory-uboot)ro,128k(u-boot)ro,15104k(firmware),960k(config)ro,64k(art)ro
SUPPORTED_DEVICES := archer-c7-v4
endef
TARGET_DEVICES += archer-c7-v4
define Device/archer-c7-v5
$(Device/archer-c7-v4)
DEVICE_TITLE := TP-LINK Archer C7 v5
BOARDNAME := ARCHER-C7-V5
TPLINK_BOARD_ID := ARCHER-C7-V5
IMAGE_SIZE := 15360k
MTDPARTS := spi0.0:128k(factory-uboot)ro,128k(u-boot)ro,64k@0x50000(art)ro,128k@0x60000(info)ro,15360k@0xc0000(firmware)
SUPPORTED_DEVICES := archer-c7-v5
endef
TARGET_DEVICES += archer-c7-v5
define Device/cpe510-520-v1
DEVICE_TITLE := TP-LINK CPE510/520 v1
BOARDNAME := CPE510
TPLINK_BOARD_ID := CPE510
LOADER_TYPE := elf
LOADER_FLASH_OFFS := 0x43000
COMPILE := loader-$(1).elf
COMPILE/loader-$(1).elf := loader-okli-compile
KERNEL := kernel-bin | lzma | uImage lzma -M 0x4f4b4c49 | loader-okli $(1) 12288
IMAGES += factory.bin
IMAGE/sysupgrade.bin := append-rootfs | tplink-safeloader sysupgrade
IMAGE/factory.bin := append-rootfs | tplink-safeloader factory
DEVICE_PACKAGES := rssileds
MTDPARTS := spi0.0:128k(u-boot)ro,64k(partition-table)ro,64k(product-info)ro,1792k(kernel),5888k(rootfs),192k(config)ro,64k(ART)ro,7680k@0x40000(firmware)
IMAGE_SIZE := 7680k
endef
TARGET_DEVICES += cpe510-520-v1
define Device/cpe510-v2
$(Device/cpe510-520-v1)
DEVICE_TITLE := TP-LINK CPE510 v2
BOARDNAME := CPE510V2
TPLINK_BOARD_ID := CPE510V2
endef
TARGET_DEVICES += cpe510-v2
define Device/cpe210-220-v1
$(Device/cpe510-520-v1)
DEVICE_TITLE := TP-LINK CPE210/220 v1
BOARDNAME := CPE210
TPLINK_BOARD_ID := CPE210
endef
TARGET_DEVICES += cpe210-220-v1
define Device/cpe210-v2
$(Device/tplink-safeloader)
DEVICE_TITLE := TP-LINK CPE210 v2
BOARDNAME := CPE210V2
TPLINK_BOARD_ID := CPE210V2
TPLINK_HWID := 0x0
TPLINK_HWREV := 0
MTDPARTS := spi0.0:128k(u-boot)ro,64k(partition-table)ro,64k(product-info)ro,7680k(firmware),192k(config)ro,64k(ART)ro
IMAGE_SIZE := 7680k
KERNEL := kernel-bin | patch-cmdline | lzma | tplink-v1-header -O
KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | tplink-v1-header
DEVICE_PACKAGES := rssileds
endef
TARGET_DEVICES += cpe210-v2
define Device/cpe210-v3
$(Device/tplink-safeloader)
DEVICE_TITLE := TP-LINK CPE210 v3
BOARDNAME := CPE210V3
TPLINK_BOARD_ID := CPE210V3
TPLINK_HWID := 0x0
TPLINK_HWREV := 0
MTDPARTS := spi0.0:128k(u-boot)ro,64k(partition-table)ro,64k(product-info)ro,7680k(firmware),192k(config)ro,64k(ART)ro
IMAGE_SIZE := 7680k
KERNEL := kernel-bin | patch-cmdline | lzma | tplink-v1-header -O
KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | tplink-v1-header
DEVICE_PACKAGES := rssileds
endef
TARGET_DEVICES += cpe210-v3
define Device/wbs210-v1
$(Device/cpe510-520-v1)
DEVICE_TITLE := TP-LINK WBS210 v1
BOARDNAME := WBS210
TPLINK_BOARD_ID := WBS210
endef
TARGET_DEVICES += wbs210-v1
define Device/wbs510-v1
$(Device/cpe510-520-v1)
DEVICE_TITLE := TP-LINK WBS510 v1
BOARDNAME := WBS510
TPLINK_BOARD_ID := WBS510
endef
TARGET_DEVICES += wbs510-v1
define Device/eap120-v1
DEVICE_TITLE := TP-LINK EAP120 v1
MTDPARTS := spi0.0:128k(u-boot)ro,64k(partition-table)ro,64k(product-info)ro,1536k(kernel),14336k(rootfs),192k(config)ro,64k(ART)ro,15872k@0x40000(firmware)
IMAGE_SIZE := 15872k
BOARDNAME := EAP120
TPLINK_BOARD_ID := EAP120
DEVICE_PROFILE := EAP120
LOADER_TYPE := elf
KERNEL := kernel-bin | patch-cmdline | lzma | loader-kernel
IMAGES := sysupgrade.bin factory.bin
IMAGE/sysupgrade.bin := append-rootfs | tplink-safeloader sysupgrade
IMAGE/factory.bin := append-rootfs | tplink-safeloader factory
endef
TARGET_DEVICES += eap120-v1
define Device/re355-v1
$(Device/tplink-safeloader)
DEVICE_TITLE := TP-LINK RE355 v1
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
MTDPARTS := spi0.0:128k(u-boot)ro,6016k(firmware),64k(partition-table)ro,64k(product-info)ro,1856k(config)ro,64k(art)ro
IMAGE_SIZE := 7936k
BOARDNAME := RE355
TPLINK_BOARD_ID := RE355
DEVICE_PROFILE := RE355
TPLINK_HWID := 0x0
TPLINK_HWREV := 0
KERNEL := kernel-bin | patch-cmdline | lzma | tplink-v1-header -O
KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | tplink-v1-header
endef
TARGET_DEVICES += re355-v1
define Device/re450-v1
$(Device/tplink-safeloader)
DEVICE_TITLE := TP-LINK RE450 v1
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
MTDPARTS := spi0.0:128k(u-boot)ro,6016k(firmware),64k(partition-table)ro,64k(product-info)ro,1856k(config)ro,64k(art)ro
IMAGE_SIZE := 7936k
BOARDNAME := RE450
TPLINK_BOARD_ID := RE450
DEVICE_PROFILE := RE450
TPLINK_HWID := 0x0
TPLINK_HWREV := 0
KERNEL := kernel-bin | patch-cmdline | lzma | tplink-v1-header -O
KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | tplink-v1-header
endef
TARGET_DEVICES += re450-v1
define Device/tl-mr6400-v1
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-MR6400 v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-net kmod-usb-net-rndis kmod-usb-serial kmod-usb-serial-option adb-enablemodem
BOARDNAME := TL-MR6400
DEVICE_PROFILE := TLMR6400
TPLINK_HWID := 0x64000001
endef
TARGET_DEVICES += tl-mr6400-v1
define Device/tl-wdr3500-v1
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-WDR3500 v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-WDR3500
DEVICE_PROFILE := TLWDR4300
TPLINK_HWID := 0x35000001
endef
TARGET_DEVICES += tl-wdr3500-v1
define Device/tl-wdr3600-v1
$(Device/tl-wdr3500-v1)
DEVICE_TITLE := TP-LINK TL-WDR3600 v1
BOARDNAME := TL-WDR4300
TPLINK_HWID := 0x36000001
IMAGE/factory.bin := append-rootfs | mktplinkfw factory -C US
endef
TARGET_DEVICES += tl-wdr3600-v1
define Device/tl-wdr4300-v1
$(Device/tl-wdr3600-v1)
DEVICE_TITLE := TP-LINK TL-WDR4300 v1
TPLINK_HWID := 0x43000001
endef
TARGET_DEVICES += tl-wdr4300-v1
define Device/tl-wdr4300-v1-il
$(Device/tl-wdr3500-v1)
DEVICE_TITLE := TP-LINK TL-WDR4300 v1 (IL)
BOARDNAME := TL-WDR4300
TPLINK_HWID := 0x43008001
endef
TARGET_DEVICES += tl-wdr4300-v1-il
define Device/tl-wdr4310-v1
$(Device/tl-wdr4300-v1-il)
DEVICE_TITLE := TP-LINK TL-WDR4310 v1
TPLINK_HWID := 0x43100001
endef
TARGET_DEVICES += tl-wdr4310-v1
define Device/tl-wdr4900-v2
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-WDR4900 v2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-WDR4900-v2
DEVICE_PROFILE := TLWDR4900V2
TPLINK_HWID := 0x49000002
endef
TARGET_DEVICES += tl-wdr4900-v2
define Device/tl-wdr6500-v2
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-WDR6500 v2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k-ct ath10k-firmware-qca988x-ct
KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma
KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | uImage lzma | tplink-v1-header
BOARDNAME := TL-WDR6500-v2
DEVICE_PROFILE := TLWDR6500V2
TPLINK_HWID := 0x65000002
TPLINK_HEADER_VERSION := 2
endef
TARGET_DEVICES += tl-wdr6500-v2
define Device/mw4530r-v1
$(Device/tl-wdr4300-v1)
DEVICE_TITLE := Mercury MW4530R v1
TPLINK_HWID := 0x45300001
endef
TARGET_DEVICES += mw4530r-v1
define Device/tl-wpa8630-v1
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-WPA8630 v1
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
BOARDNAME := TL-WPA8630
DEVICE_PROFILE := TL-WPA8630
TPLINK_HWID := 0x86300001
endef
TARGET_DEVICES += tl-wpa8630-v1
define Device/tl-wr1043n-v5
$(Device/archer-cxx)
DEVICE_TITLE := TP-LINK TL-WR1043N v5
BOARDNAME := TL-WR1043N-v5
SUPPORTED_DEVICES := tl-wr1043n-v5
DEVICE_PROFILE := TLWR1043
MTDPARTS := spi0.0:128k(factory-uboot)ro,128k(u-boot)ro,15104k(firmware),128k(product-info)ro,640k(config)ro,64k(partition-table)ro,128k(logs)ro,64k(art)ro
IMAGE_SIZE := 15104k
TPLINK_BOARD_ID := TLWR1043NV5
endef
TARGET_DEVICES += tl-wr1043n-v5
define Device/tl-wr1043nd-v1
$(Device/tplink-8m)
DEVICE_TITLE := TP-LINK TL-WR1043N/ND v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-WR1043ND
DEVICE_PROFILE := TLWR1043
TPLINK_HWID := 0x10430001
endef
TARGET_DEVICES += tl-wr1043nd-v1
define Device/tl-wr1043nd-v2
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-WR1043N/ND v2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-WR1043ND-v2
DEVICE_PROFILE := TLWR1043
TPLINK_HWID := 0x10430002
endef
TARGET_DEVICES += tl-wr1043nd-v2
define Device/tl-wr1043nd-v3
$(Device/tl-wr1043nd-v2)
DEVICE_TITLE := TP-LINK TL-WR1043N/ND v3
TPLINK_HWID := 0x10430003
endef
TARGET_DEVICES += tl-wr1043nd-v3
define Device/tl-wr1043nd-v4
$(Device/tplink-safeloader)
DEVICE_TITLE := TP-LINK TL-WR1043N/ND v4
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-WR1043ND-v4
DEVICE_PROFILE := TLWR1043
TPLINK_HWID := 0x10430004
MTDPARTS := spi0.0:128k(u-boot)ro,15552k(firmware),128k(product-info)ro,320k(config)ro,64k(partition-table)ro,128k(logs)ro,64k(ART)ro
IMAGE_SIZE := 15552k
TPLINK_BOARD_ID := TLWR1043NDV4
KERNEL := kernel-bin | patch-cmdline | lzma | tplink-v1-header -O
KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | tplink-v1-header
endef
TARGET_DEVICES += tl-wr1043nd-v4
define Device/tl-wr2543-v1
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-WR2543N/ND v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-WR2543N
DEVICE_PROFILE := TLWR2543
TPLINK_HWID := 0x25430001
IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade -v 3.13.99
IMAGE/factory.bin := append-rootfs | mktplinkfw factory -v 3.13.99
endef
TARGET_DEVICES += tl-wr2543-v1
define Device/tl-wr710n-v1
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-WR710N v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
BOARDNAME := TL-WR710N
DEVICE_PROFILE := TLWR710
TPLINK_HWID := 0x07100001
CONSOLE := ttyATH0,115200
IMAGE/factory.bin := append-rootfs | mktplinkfw factory -C US
endef
TARGET_DEVICES += tl-wr710n-v1
define Device/tl-wr710n-v2.1
$(Device/tl-wr710n-v1)
DEVICE_TITLE := TP-LINK TL-WR710N v2.1
TPLINK_HWID := 0x07100002
TPLINK_HWREV := 0x00000002
endef
TARGET_DEVICES += tl-wr710n-v2.1
define Device/tl-wr810n-v1
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-WR810N v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
BOARDNAME := TL-WR810N
DEVICE_PROFILE := TLWR810
TPLINK_HWID := 0x08100001
endef
TARGET_DEVICES += tl-wr810n-v1
define Device/tl-wr810n-v2
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-WR810N v2
BOARDNAME := TL-WR810N-v2
DEVICE_PROFILE := TLWR810
TPLINK_HWID := 0x08100002
endef
TARGET_DEVICES += tl-wr810n-v2
define Device/tl-wr842n-v1
$(Device/tplink-8m)
DEVICE_TITLE := TP-LINK TL-WR842N/ND v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-MR3420
DEVICE_PROFILE := TLWR842
TPLINK_HWID := 0x08420001
endef
TARGET_DEVICES += tl-wr842n-v1
define Device/tl-wr842n-v2
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-WR842N/ND v2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-WR842N-v2
DEVICE_PROFILE := TLWR842
TPLINK_HWID := 0x8420002
endef
TARGET_DEVICES += tl-wr842n-v2
define Device/tl-wr842n-v3
$(Device/tplink-16mlzma)
DEVICE_TITLE := TP-LINK TL-WR842N/ND v3
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-WR842N-v3
DEVICE_PROFILE := TLWR842
TPLINK_HWID := 0x08420003
endef
TARGET_DEVICES += tl-wr842n-v3
define Device/tl-wr902ac-v1
$(Device/tplink-safeloader)
DEVICE_TITLE := TP-LINK TL-WR902AC v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport \
kmod-ath10k-ct ath10k-firmware-qca9887-ct -swconfig -uboot-envtools
BOARDNAME := TL-WR902AC-V1
DEVICE_PROFILE := TLWR902
TPLINK_BOARD_ID := TL-WR902AC-V1
TPLINK_HWID := 0x0
TPLINK_HWREV := 0
SUPPORTED_DEVICES := tl-wr902ac-v1
IMAGE_SIZE := 7360k
MTDPARTS := spi0.0:128k(u-boot)ro,7360k(firmware),640k(tplink)ro,64k(art)ro
KERNEL := kernel-bin | patch-cmdline | lzma | tplink-v1-header -O
KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | tplink-v1-header
endef
TARGET_DEVICES += tl-wr902ac-v1
define Device/tl-wr942n-v1
$(Device/archer-cxx)
DEVICE_TITLE := TP-LINK TL-WR942N v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-WR942N-V1
TPLINK_BOARD_ID := TLWR942NV1
DEVICE_PROFILE := TLWR942
IMAGE_SIZE := 14464k
MTDPARTS := spi0.0:128k(u-boot)ro,14464k(firmware),64k(product-info)ro,64k(partition-table)ro,256k(oem-config)ro,1344k(oem-vars)ro,64k(ART)ro
SUPPORTED_DEVICES := tl-wr942n-v1
endef
TARGET_DEVICES += tl-wr942n-v1

View File

@@ -0,0 +1,319 @@
DEVICE_VARS += UBNT_BOARD UBNT_CHIP UBNT_TYPE UBNT_VERSION UBNT_REVISION
# On M (XW) devices the U-Boot as of version 1.1.4-s1039 doesn't like
# VERSION_DIST being on the place of major(?) version number, so we need to
# use some number.
UBNT_REVISION := $(VERSION_DIST)-$(REVISION)
# mkubntimage is using the kernel image direct
# routerboard creates partitions out of the ubnt header
define Build/mkubntimage
-$(STAGING_DIR_HOST)/bin/mkfwimage \
-B $(UBNT_BOARD) -v $(UBNT_TYPE).$(UBNT_CHIP).v6.0.0-$(VERSION_DIST)-$(REVISION) \
-k $(IMAGE_KERNEL) \
-r $@ \
-o $@
endef
# all UBNT XM device expect the kernel image to have 1024k while flash, when
# booting the image, the size doesn't matter.
define Build/mkubntimage-split
-[ -f $@ ] && ( \
dd if=$@ of=$@.old1 bs=1024k count=1; \
dd if=$@ of=$@.old2 bs=1024k skip=1; \
$(STAGING_DIR_HOST)/bin/mkfwimage \
-B $(UBNT_BOARD) -v $(UBNT_TYPE).$(UBNT_CHIP).v$(UBNT_VERSION)-$(UBNT_REVISION) \
-k $@.old1 \
-r $@.old2 \
-o $@; \
rm $@.old1 $@.old2 )
endef
define Build/mkubntimage2
-$(STAGING_DIR_HOST)/bin/mkfwimage2 -f 0x9f000000 \
-v $(UBNT_TYPE).$(UBNT_CHIP).v6.0.0-$(VERSION_DIST)-$(REVISION) \
-p jffs2:0x50000:0xf60000:0:0:$@ \
-o $@.new
@mv $@.new $@
endef
# UBNT_BOARD e.g. one of (XS2, XS5, RS, XM)
# UBNT_TYPE e.g. one of (BZ, XM, XW)
# UBNT_CHIP e.g. one of (ar7240, ar933x, ar934x)
# UBNT_VERSION e.g. one of (6.0.0, 8.5.0)
define Device/ubnt
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
DEVICE_PROFILE := UBNT
IMAGE_SIZE := 7552k
MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7552k(firmware),256k(cfg)ro,64k(EEPROM)ro
UBNT_BOARD := XM
UBNT_VERSION := 6.0.0
IMAGES := sysupgrade.bin factory.bin
IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
IMAGE/factory.bin := $$(IMAGE/sysupgrade.bin) | mkubntimage-split
endef
define Device/ubnt-xm
$(Device/ubnt)
DEVICE_PACKAGES += kmod-usb-ohci
UBNT_TYPE := XM
UBNT_CHIP := ar7240
KERNEL := kernel-bin | patch-cmdline | relocate-kernel | lzma | uImage lzma
endef
define Device/ubnt-xw
$(Device/ubnt)
UBNT_TYPE := XW
UBNT_CHIP := ar934x
UBNT_VERSION := 6.0.4
UBNT_REVISION := 42.$(UBNT_REVISION)
endef
define Device/ubnt-bz
$(Device/ubnt)
UBNT_TYPE := BZ
UBNT_CHIP := ar7240
endef
define Device/rw2458n
$(Device/ubnt-xm)
DEVICE_TITLE := Ubiquiti RW2458N
BOARDNAME := RW2458N
endef
TARGET_DEVICES += rw2458n
define Device/ubnt-airrouter
$(Device/ubnt-xm)
DEVICE_TITLE := Ubiquiti AirRouter
BOARDNAME := UBNT-AR
endef
TARGET_DEVICES += ubnt-airrouter
define Device/ubnt-bullet-m
$(Device/ubnt-xm)
DEVICE_TITLE := Ubiquiti Bullet-M
DEVICE_PACKAGES += rssileds
BOARDNAME := UBNT-BM
endef
TARGET_DEVICES += ubnt-bullet-m
define Device/ubnt-rocket-m
$(Device/ubnt-xm)
DEVICE_TITLE := Ubiquiti Rocket-M
DEVICE_PACKAGES += rssileds
BOARDNAME := UBNT-RM
endef
TARGET_DEVICES += ubnt-rocket-m
define Device/ubnt-nano-m
$(Device/ubnt-xm)
DEVICE_TITLE := Ubiquiti Nano-M
DEVICE_PACKAGES += rssileds
BOARDNAME := UBNT-NM
endef
TARGET_DEVICES += ubnt-nano-m
define Device/ubnt-unifi
$(Device/ubnt-bz)
DEVICE_TITLE := Ubiquiti UniFi
BOARDNAME := UBNT-UF
DEVICE_PROFILE += UBNTUNIFI
endef
TARGET_DEVICES += ubnt-unifi
define Device/ubnt-unifiac
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
DEVICE_PROFILE := UBNT
IMAGE_SIZE := 7744k
MTDPARTS := spi0.0:384k(u-boot)ro,64k(u-boot-env)ro,7744k(firmware),7744k(ubnt-airos)ro,128k(bs),256k(cfg)ro,64k(EEPROM)ro
IMAGES := sysupgrade.bin
IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
endef
define Device/ubnt-unifiac-lite
$(Device/ubnt-unifiac)
DEVICE_TITLE := Ubiquiti UniFi AC-Lite
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
DEVICE_PROFILE += UBNTUNIFIACLITE
BOARDNAME := UBNT-UF-AC-LITE
endef
TARGET_DEVICES += ubnt-unifiac-lite
define Device/ubnt-unifiac-lr
$(Device/ubnt-unifiac-lite)
DEVICE_TITLE := Ubiquiti UniFi AC-LR
endef
TARGET_DEVICES += ubnt-unifiac-lr
define Device/ubnt-unifiac-mesh
$(Device/ubnt-unifiac-lite)
DEVICE_TITLE := Ubiquiti UniFi AC-Mesh
endef
TARGET_DEVICES += ubnt-unifiac-mesh
define Device/ubnt-unifiac-pro
$(Device/ubnt-unifiac)
DEVICE_TITLE := Ubiquiti UniFi AC-Pro
DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct
DEVICE_PROFILE += UBNTUNIFIACPRO
BOARDNAME := UBNT-UF-AC-PRO
endef
TARGET_DEVICES += ubnt-unifiac-pro
define Device/ubnt-unifiac-mesh-pro
$(Device/ubnt-unifiac-pro)
DEVICE_TITLE := Ubiquiti UniFi AC-Mesh-Pro
endef
TARGET_DEVICES += ubnt-unifiac-mesh-pro
define Device/ubnt-unifi-outdoor
$(Device/ubnt-bz)
DEVICE_TITLE := Ubiquiti UniFi Outdoor
BOARDNAME := UBNT-U20
DEVICE_PROFILE += UBNTUNIFIOUTDOOR
endef
TARGET_DEVICES += ubnt-unifi-outdoor
define Device/ubnt-nano-m-xw
$(Device/ubnt-xw)
DEVICE_TITLE := Ubiquiti Nano M XW
DEVICE_PACKAGES += rssileds
BOARDNAME := UBNT-NM-XW
endef
TARGET_DEVICES += ubnt-nano-m-xw
define Device/ubnt-lbe-m5
$(Device/ubnt-xw)
DEVICE_TITLE := Ubiquiti Litebeam M5
BOARDNAME := UBNT-LBE-M5
endef
TARGET_DEVICES += ubnt-lbe-m5
define Device/ubnt-loco-m-xw
$(Device/ubnt-xw)
DEVICE_TITLE := Ubiquiti Loco XW
DEVICE_PACKAGES += rssileds
BOARDNAME := UBNT-LOCO-XW
endef
TARGET_DEVICES += ubnt-loco-m-xw
define Device/ubnt-bullet-m-xw
$(Device/ubnt-xw)
DEVICE_TITLE := Ubiquiti Bullet-M XW
DEVICE_PACKAGES += rssileds
BOARDNAME := UBNT-BM-XW
endef
TARGET_DEVICES += ubnt-bullet-m-xw
define Device/ubnt-rocket-m-xw
$(Device/ubnt-xw)
DEVICE_TITLE := Ubiquiti Rocket M XW
DEVICE_PACKAGES += rssileds
BOARDNAME := UBNT-RM-XW
endef
TARGET_DEVICES += ubnt-rocket-m-xw
define Device/ubnt-rocket-m-ti
$(Device/ubnt-xw)
DEVICE_TITLE := Ubiquiti Rocket M TI
DEVICE_PACKAGES += rssileds
BOARDNAME := UBNT-RM-TI
UBNT_TYPE := TI
endef
TARGET_DEVICES += ubnt-rocket-m-ti
define Device/ubnt-air-gateway
$(Device/ubnt-xm)
DEVICE_TITLE := Ubiquiti Air Gateway
BOARDNAME := UBNT-AGW
UBNT_TYPE := AirGW
UBNT_CHIP := ar933x
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += ubnt-air-gateway
define Device/ubnt-air-gateway-pro
$(Device/ubnt-xm)
DEVICE_TITLE := Ubiquiti Air Gateway Pro
BOARDNAME := UBNT-AGWP
UBNT_TYPE := AirGWP
UBNT_CHIP := ar934x
endef
TARGET_DEVICES += ubnt-air-gateway-pro
define Device/ubdev01
$(Device/ubnt-xm)
DEVICE_TITLE := Ubiquiti ubDEV01
MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7488k(firmware),64k(certs),256k(cfg)ro,64k(EEPROM)ro
BOARDNAME := UBNT-UF
UBNT_BOARD := UBDEV01
endef
TARGET_DEVICES += ubdev01
define Device/ubnt-routerstation
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2
DEVICE_PROFILE := UBNT
IMAGE_SIZE := 16128k
IMAGES := sysupgrade.bin factory.bin
IMAGE/factory.bin := append-rootfs | pad-rootfs | mkubntimage
IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | combined-image | check-size $$$$(IMAGE_SIZE)
KERNEL := kernel-bin | patch-cmdline | lzma | pad-to $$(BLOCKSIZE)
endef
define Device/ubnt-rs
$(Device/ubnt-routerstation)
DEVICE_TITLE := Ubiquiti RouterStation
BOARDNAME := UBNT-RS
DEVICE_PROFILE += UBNTRS
UBNT_BOARD := RS
UBNT_TYPE := RSx
UBNT_CHIP := ar7100
endef
TARGET_DEVICES += ubnt-rs
define Device/ubnt-rspro
$(Device/ubnt-routerstation)
DEVICE_TITLE := Ubiquiti RouterStation Pro
BOARDNAME := UBNT-RSPRO
DEVICE_PROFILE += UBNTRSPRO
UBNT_BOARD := RSPRO
UBNT_TYPE := RSPRO
UBNT_CHIP := ar7100pro
endef
TARGET_DEVICES += ubnt-rspro
define Device/ubnt-ls-sr71
$(Device/ubnt-routerstation)
DEVICE_TITLE := Ubiquiti LS-SR71
BOARDNAME := UBNT-LS-SR71
UBNT_BOARD := LS-SR71
UBNT_TYPE := LS-SR71
UBNT_CHIP := ar7100
endef
TARGET_DEVICES += ubnt-ls-sr71
define Device/ubnt-uap-pro
DEVICE_TITLE := Ubiquiti UAP Pro
KERNEL_SIZE := 2048k
IMAGE_SIZE := 15744k
MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,2048k(kernel),13696k(rootfs),256k(cfg)ro,64k(EEPROM)ro,15744k@0x50000(firmware)
UBNT_TYPE := BZ
UBNT_CHIP := ar934x
BOARDNAME := UAP-PRO
DEVICE_PROFILE := UBNT UAPPRO
KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma | jffs2 kernel0
IMAGES := sysupgrade.bin factory.bin
IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
IMAGE/factory.bin := $$(IMAGE/sysupgrade.bin) | mkubntimage2
endef
TARGET_DEVICES += ubnt-uap-pro
define Device/ubnt-unifi-outdoor-plus
$(Device/ubnt-uap-pro)
DEVICE_TITLE := Ubiquiti UniFi Outdoor Plus
UBNT_CHIP := ar7240
BOARDNAME := UBNT-UOP
DEVICE_PROFILE := UBNT
endef
TARGET_DEVICES += ubnt-unifi-outdoor-plus

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,70 @@
#
# Copyright (C) 2011 OpenWrt.org
# Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
LZMA_TEXT_START := 0x80a00000
LOADADDR := 0x80060000
LOADER := loader.bin
LOADER_NAME := $(basename $(notdir $(LOADER)))
LOADER_DATA :=
TARGET_DIR :=
FLASH_OFFS :=
FLASH_MAX :=
BOARD :=
ifeq ($(TARGET_DIR),)
TARGET_DIR := $(KDIR)
endif
LOADER_BIN := $(TARGET_DIR)/$(LOADER_NAME).bin
LOADER_GZ := $(TARGET_DIR)/$(LOADER_NAME).gz
LOADER_ELF := $(TARGET_DIR)/$(LOADER_NAME).elf
PKG_NAME := lzma-loader
PKG_BUILD_DIR := $(KDIR)/$(PKG_NAME)
.PHONY : loader-compile loader.bin loader.elf loader.gz
$(PKG_BUILD_DIR)/.prepared:
mkdir $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
touch $@
loader-compile: $(PKG_BUILD_DIR)/.prepared
$(MAKE) -C $(PKG_BUILD_DIR) CROSS_COMPILE="$(TARGET_CROSS)" \
LZMA_TEXT_START=$(LZMA_TEXT_START) \
LOADADDR=$(LOADADDR) \
LOADER_DATA=$(LOADER_DATA) \
FLASH_OFFS=$(FLASH_OFFS) \
FLASH_MAX=$(FLASH_MAX) \
BOARD="$(BOARD)" \
clean all
loader.gz: $(PKG_BUILD_DIR)/loader.bin
# Workaround for buggy bootloaders: Some devices
# (TP-Link TL-WR1043ND v1) don't work correctly when
# the uncompressed loader is too small (probably a cache
# invalidation issue)
dd if=$< bs=512K conv=sync | gzip -nc9 > $(LOADER_GZ)
loader.elf: $(PKG_BUILD_DIR)/loader.elf
$(CP) $< $(LOADER_ELF)
loader.bin: $(PKG_BUILD_DIR)/loader.bin
$(CP) $< $(LOADER_BIN)
download:
prepare: $(PKG_BUILD_DIR)/.prepared
compile: loader-compile
install:
clean:
rm -rf $(PKG_BUILD_DIR)

View File

@@ -0,0 +1,584 @@
/*
LzmaDecode.c
LZMA Decoder (optimized for Speed version)
LZMA SDK 4.40 Copyright (c) 1999-2006 Igor Pavlov (2006-05-01)
http://www.7-zip.org/
LZMA SDK is licensed under two licenses:
1) GNU Lesser General Public License (GNU LGPL)
2) Common Public License (CPL)
It means that you can select one of these two licenses and
follow rules of that license.
SPECIAL EXCEPTION:
Igor Pavlov, as the author of this Code, expressly permits you to
statically or dynamically link your Code (or bind by name) to the
interfaces of this file without subjecting your linked Code to the
terms of the CPL or GNU LGPL. Any modifications or additions
to this file, however, are subject to the LGPL or CPL terms.
*/
#include "LzmaDecode.h"
#define kNumTopBits 24
#define kTopValue ((UInt32)1 << kNumTopBits)
#define kNumBitModelTotalBits 11
#define kBitModelTotal (1 << kNumBitModelTotalBits)
#define kNumMoveBits 5
#define RC_READ_BYTE (*Buffer++)
#define RC_INIT2 Code = 0; Range = 0xFFFFFFFF; \
{ int i; for(i = 0; i < 5; i++) { RC_TEST; Code = (Code << 8) | RC_READ_BYTE; }}
#ifdef _LZMA_IN_CB
#define RC_TEST { if (Buffer == BufferLim) \
{ SizeT size; int result = InCallback->Read(InCallback, &Buffer, &size); if (result != LZMA_RESULT_OK) return result; \
BufferLim = Buffer + size; if (size == 0) return LZMA_RESULT_DATA_ERROR; }}
#define RC_INIT Buffer = BufferLim = 0; RC_INIT2
#else
#define RC_TEST { if (Buffer == BufferLim) return LZMA_RESULT_DATA_ERROR; }
#define RC_INIT(buffer, bufferSize) Buffer = buffer; BufferLim = buffer + bufferSize; RC_INIT2
#endif
#define RC_NORMALIZE if (Range < kTopValue) { RC_TEST; Range <<= 8; Code = (Code << 8) | RC_READ_BYTE; }
#define IfBit0(p) RC_NORMALIZE; bound = (Range >> kNumBitModelTotalBits) * *(p); if (Code < bound)
#define UpdateBit0(p) Range = bound; *(p) += (kBitModelTotal - *(p)) >> kNumMoveBits;
#define UpdateBit1(p) Range -= bound; Code -= bound; *(p) -= (*(p)) >> kNumMoveBits;
#define RC_GET_BIT2(p, mi, A0, A1) IfBit0(p) \
{ UpdateBit0(p); mi <<= 1; A0; } else \
{ UpdateBit1(p); mi = (mi + mi) + 1; A1; }
#define RC_GET_BIT(p, mi) RC_GET_BIT2(p, mi, ; , ;)
#define RangeDecoderBitTreeDecode(probs, numLevels, res) \
{ int i = numLevels; res = 1; \
do { CProb *p = probs + res; RC_GET_BIT(p, res) } while(--i != 0); \
res -= (1 << numLevels); }
#define kNumPosBitsMax 4
#define kNumPosStatesMax (1 << kNumPosBitsMax)
#define kLenNumLowBits 3
#define kLenNumLowSymbols (1 << kLenNumLowBits)
#define kLenNumMidBits 3
#define kLenNumMidSymbols (1 << kLenNumMidBits)
#define kLenNumHighBits 8
#define kLenNumHighSymbols (1 << kLenNumHighBits)
#define LenChoice 0
#define LenChoice2 (LenChoice + 1)
#define LenLow (LenChoice2 + 1)
#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
#define kNumLenProbs (LenHigh + kLenNumHighSymbols)
#define kNumStates 12
#define kNumLitStates 7
#define kStartPosModelIndex 4
#define kEndPosModelIndex 14
#define kNumFullDistances (1 << (kEndPosModelIndex >> 1))
#define kNumPosSlotBits 6
#define kNumLenToPosStates 4
#define kNumAlignBits 4
#define kAlignTableSize (1 << kNumAlignBits)
#define kMatchMinLen 2
#define IsMatch 0
#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax))
#define IsRepG0 (IsRep + kNumStates)
#define IsRepG1 (IsRepG0 + kNumStates)
#define IsRepG2 (IsRepG1 + kNumStates)
#define IsRep0Long (IsRepG2 + kNumStates)
#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax))
#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex)
#define LenCoder (Align + kAlignTableSize)
#define RepLenCoder (LenCoder + kNumLenProbs)
#define Literal (RepLenCoder + kNumLenProbs)
#if Literal != LZMA_BASE_SIZE
StopCompilingDueBUG
#endif
int LzmaDecodeProperties(CLzmaProperties *propsRes, const unsigned char *propsData, int size)
{
unsigned char prop0;
if (size < LZMA_PROPERTIES_SIZE)
return LZMA_RESULT_DATA_ERROR;
prop0 = propsData[0];
if (prop0 >= (9 * 5 * 5))
return LZMA_RESULT_DATA_ERROR;
{
for (propsRes->pb = 0; prop0 >= (9 * 5); propsRes->pb++, prop0 -= (9 * 5));
for (propsRes->lp = 0; prop0 >= 9; propsRes->lp++, prop0 -= 9);
propsRes->lc = prop0;
/*
unsigned char remainder = (unsigned char)(prop0 / 9);
propsRes->lc = prop0 % 9;
propsRes->pb = remainder / 5;
propsRes->lp = remainder % 5;
*/
}
#ifdef _LZMA_OUT_READ
{
int i;
propsRes->DictionarySize = 0;
for (i = 0; i < 4; i++)
propsRes->DictionarySize += (UInt32)(propsData[1 + i]) << (i * 8);
if (propsRes->DictionarySize == 0)
propsRes->DictionarySize = 1;
}
#endif
return LZMA_RESULT_OK;
}
#define kLzmaStreamWasFinishedId (-1)
int LzmaDecode(CLzmaDecoderState *vs,
#ifdef _LZMA_IN_CB
ILzmaInCallback *InCallback,
#else
const unsigned char *inStream, SizeT inSize, SizeT *inSizeProcessed,
#endif
unsigned char *outStream, SizeT outSize, SizeT *outSizeProcessed)
{
CProb *p = vs->Probs;
SizeT nowPos = 0;
Byte previousByte = 0;
UInt32 posStateMask = (1 << (vs->Properties.pb)) - 1;
UInt32 literalPosMask = (1 << (vs->Properties.lp)) - 1;
int lc = vs->Properties.lc;
#ifdef _LZMA_OUT_READ
UInt32 Range = vs->Range;
UInt32 Code = vs->Code;
#ifdef _LZMA_IN_CB
const Byte *Buffer = vs->Buffer;
const Byte *BufferLim = vs->BufferLim;
#else
const Byte *Buffer = inStream;
const Byte *BufferLim = inStream + inSize;
#endif
int state = vs->State;
UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3];
int len = vs->RemainLen;
UInt32 globalPos = vs->GlobalPos;
UInt32 distanceLimit = vs->DistanceLimit;
Byte *dictionary = vs->Dictionary;
UInt32 dictionarySize = vs->Properties.DictionarySize;
UInt32 dictionaryPos = vs->DictionaryPos;
Byte tempDictionary[4];
#ifndef _LZMA_IN_CB
*inSizeProcessed = 0;
#endif
*outSizeProcessed = 0;
if (len == kLzmaStreamWasFinishedId)
return LZMA_RESULT_OK;
if (dictionarySize == 0)
{
dictionary = tempDictionary;
dictionarySize = 1;
tempDictionary[0] = vs->TempDictionary[0];
}
if (len == kLzmaNeedInitId)
{
{
UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + vs->Properties.lp));
UInt32 i;
for (i = 0; i < numProbs; i++)
p[i] = kBitModelTotal >> 1;
rep0 = rep1 = rep2 = rep3 = 1;
state = 0;
globalPos = 0;
distanceLimit = 0;
dictionaryPos = 0;
dictionary[dictionarySize - 1] = 0;
#ifdef _LZMA_IN_CB
RC_INIT;
#else
RC_INIT(inStream, inSize);
#endif
}
len = 0;
}
while(len != 0 && nowPos < outSize)
{
UInt32 pos = dictionaryPos - rep0;
if (pos >= dictionarySize)
pos += dictionarySize;
outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos];
if (++dictionaryPos == dictionarySize)
dictionaryPos = 0;
len--;
}
if (dictionaryPos == 0)
previousByte = dictionary[dictionarySize - 1];
else
previousByte = dictionary[dictionaryPos - 1];
#else /* if !_LZMA_OUT_READ */
int state = 0;
UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1;
int len = 0;
const Byte *Buffer;
const Byte *BufferLim;
UInt32 Range;
UInt32 Code;
#ifndef _LZMA_IN_CB
*inSizeProcessed = 0;
#endif
*outSizeProcessed = 0;
{
UInt32 i;
UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + vs->Properties.lp));
for (i = 0; i < numProbs; i++)
p[i] = kBitModelTotal >> 1;
}
#ifdef _LZMA_IN_CB
RC_INIT;
#else
RC_INIT(inStream, inSize);
#endif
#endif /* _LZMA_OUT_READ */
while(nowPos < outSize)
{
CProb *prob;
UInt32 bound;
int posState = (int)(
(nowPos
#ifdef _LZMA_OUT_READ
+ globalPos
#endif
)
& posStateMask);
prob = p + IsMatch + (state << kNumPosBitsMax) + posState;
IfBit0(prob)
{
int symbol = 1;
UpdateBit0(prob)
prob = p + Literal + (LZMA_LIT_SIZE *
(((
(nowPos
#ifdef _LZMA_OUT_READ
+ globalPos
#endif
)
& literalPosMask) << lc) + (previousByte >> (8 - lc))));
if (state >= kNumLitStates)
{
int matchByte;
#ifdef _LZMA_OUT_READ
UInt32 pos = dictionaryPos - rep0;
if (pos >= dictionarySize)
pos += dictionarySize;
matchByte = dictionary[pos];
#else
matchByte = outStream[nowPos - rep0];
#endif
do
{
int bit;
CProb *probLit;
matchByte <<= 1;
bit = (matchByte & 0x100);
probLit = prob + 0x100 + bit + symbol;
RC_GET_BIT2(probLit, symbol, if (bit != 0) break, if (bit == 0) break)
}
while (symbol < 0x100);
}
while (symbol < 0x100)
{
CProb *probLit = prob + symbol;
RC_GET_BIT(probLit, symbol)
}
previousByte = (Byte)symbol;
outStream[nowPos++] = previousByte;
#ifdef _LZMA_OUT_READ
if (distanceLimit < dictionarySize)
distanceLimit++;
dictionary[dictionaryPos] = previousByte;
if (++dictionaryPos == dictionarySize)
dictionaryPos = 0;
#endif
if (state < 4) state = 0;
else if (state < 10) state -= 3;
else state -= 6;
}
else
{
UpdateBit1(prob);
prob = p + IsRep + state;
IfBit0(prob)
{
UpdateBit0(prob);
rep3 = rep2;
rep2 = rep1;
rep1 = rep0;
state = state < kNumLitStates ? 0 : 3;
prob = p + LenCoder;
}
else
{
UpdateBit1(prob);
prob = p + IsRepG0 + state;
IfBit0(prob)
{
UpdateBit0(prob);
prob = p + IsRep0Long + (state << kNumPosBitsMax) + posState;
IfBit0(prob)
{
#ifdef _LZMA_OUT_READ
UInt32 pos;
#endif
UpdateBit0(prob);
#ifdef _LZMA_OUT_READ
if (distanceLimit == 0)
#else
if (nowPos == 0)
#endif
return LZMA_RESULT_DATA_ERROR;
state = state < kNumLitStates ? 9 : 11;
#ifdef _LZMA_OUT_READ
pos = dictionaryPos - rep0;
if (pos >= dictionarySize)
pos += dictionarySize;
previousByte = dictionary[pos];
dictionary[dictionaryPos] = previousByte;
if (++dictionaryPos == dictionarySize)
dictionaryPos = 0;
#else
previousByte = outStream[nowPos - rep0];
#endif
outStream[nowPos++] = previousByte;
#ifdef _LZMA_OUT_READ
if (distanceLimit < dictionarySize)
distanceLimit++;
#endif
continue;
}
else
{
UpdateBit1(prob);
}
}
else
{
UInt32 distance;
UpdateBit1(prob);
prob = p + IsRepG1 + state;
IfBit0(prob)
{
UpdateBit0(prob);
distance = rep1;
}
else
{
UpdateBit1(prob);
prob = p + IsRepG2 + state;
IfBit0(prob)
{
UpdateBit0(prob);
distance = rep2;
}
else
{
UpdateBit1(prob);
distance = rep3;
rep3 = rep2;
}
rep2 = rep1;
}
rep1 = rep0;
rep0 = distance;
}
state = state < kNumLitStates ? 8 : 11;
prob = p + RepLenCoder;
}
{
int numBits, offset;
CProb *probLen = prob + LenChoice;
IfBit0(probLen)
{
UpdateBit0(probLen);
probLen = prob + LenLow + (posState << kLenNumLowBits);
offset = 0;
numBits = kLenNumLowBits;
}
else
{
UpdateBit1(probLen);
probLen = prob + LenChoice2;
IfBit0(probLen)
{
UpdateBit0(probLen);
probLen = prob + LenMid + (posState << kLenNumMidBits);
offset = kLenNumLowSymbols;
numBits = kLenNumMidBits;
}
else
{
UpdateBit1(probLen);
probLen = prob + LenHigh;
offset = kLenNumLowSymbols + kLenNumMidSymbols;
numBits = kLenNumHighBits;
}
}
RangeDecoderBitTreeDecode(probLen, numBits, len);
len += offset;
}
if (state < 4)
{
int posSlot;
state += kNumLitStates;
prob = p + PosSlot +
((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) <<
kNumPosSlotBits);
RangeDecoderBitTreeDecode(prob, kNumPosSlotBits, posSlot);
if (posSlot >= kStartPosModelIndex)
{
int numDirectBits = ((posSlot >> 1) - 1);
rep0 = (2 | ((UInt32)posSlot & 1));
if (posSlot < kEndPosModelIndex)
{
rep0 <<= numDirectBits;
prob = p + SpecPos + rep0 - posSlot - 1;
}
else
{
numDirectBits -= kNumAlignBits;
do
{
RC_NORMALIZE
Range >>= 1;
rep0 <<= 1;
if (Code >= Range)
{
Code -= Range;
rep0 |= 1;
}
}
while (--numDirectBits != 0);
prob = p + Align;
rep0 <<= kNumAlignBits;
numDirectBits = kNumAlignBits;
}
{
int i = 1;
int mi = 1;
do
{
CProb *prob3 = prob + mi;
RC_GET_BIT2(prob3, mi, ; , rep0 |= i);
i <<= 1;
}
while(--numDirectBits != 0);
}
}
else
rep0 = posSlot;
if (++rep0 == (UInt32)(0))
{
/* it's for stream version */
len = kLzmaStreamWasFinishedId;
break;
}
}
len += kMatchMinLen;
#ifdef _LZMA_OUT_READ
if (rep0 > distanceLimit)
#else
if (rep0 > nowPos)
#endif
return LZMA_RESULT_DATA_ERROR;
#ifdef _LZMA_OUT_READ
if (dictionarySize - distanceLimit > (UInt32)len)
distanceLimit += len;
else
distanceLimit = dictionarySize;
#endif
do
{
#ifdef _LZMA_OUT_READ
UInt32 pos = dictionaryPos - rep0;
if (pos >= dictionarySize)
pos += dictionarySize;
previousByte = dictionary[pos];
dictionary[dictionaryPos] = previousByte;
if (++dictionaryPos == dictionarySize)
dictionaryPos = 0;
#else
previousByte = outStream[nowPos - rep0];
#endif
len--;
outStream[nowPos++] = previousByte;
}
while(len != 0 && nowPos < outSize);
}
}
RC_NORMALIZE;
#ifdef _LZMA_OUT_READ
vs->Range = Range;
vs->Code = Code;
vs->DictionaryPos = dictionaryPos;
vs->GlobalPos = globalPos + (UInt32)nowPos;
vs->DistanceLimit = distanceLimit;
vs->Reps[0] = rep0;
vs->Reps[1] = rep1;
vs->Reps[2] = rep2;
vs->Reps[3] = rep3;
vs->State = state;
vs->RemainLen = len;
vs->TempDictionary[0] = tempDictionary[0];
#endif
#ifdef _LZMA_IN_CB
vs->Buffer = Buffer;
vs->BufferLim = BufferLim;
#else
*inSizeProcessed = (SizeT)(Buffer - inStream);
#endif
*outSizeProcessed = nowPos;
return LZMA_RESULT_OK;
}

View File

@@ -0,0 +1,113 @@
/*
LzmaDecode.h
LZMA Decoder interface
LZMA SDK 4.40 Copyright (c) 1999-2006 Igor Pavlov (2006-05-01)
http://www.7-zip.org/
LZMA SDK is licensed under two licenses:
1) GNU Lesser General Public License (GNU LGPL)
2) Common Public License (CPL)
It means that you can select one of these two licenses and
follow rules of that license.
SPECIAL EXCEPTION:
Igor Pavlov, as the author of this code, expressly permits you to
statically or dynamically link your code (or bind by name) to the
interfaces of this file without subjecting your linked code to the
terms of the CPL or GNU LGPL. Any modifications or additions
to this file, however, are subject to the LGPL or CPL terms.
*/
#ifndef __LZMADECODE_H
#define __LZMADECODE_H
#include "LzmaTypes.h"
/* #define _LZMA_IN_CB */
/* Use callback for input data */
/* #define _LZMA_OUT_READ */
/* Use read function for output data */
/* #define _LZMA_PROB32 */
/* It can increase speed on some 32-bit CPUs,
but memory usage will be doubled in that case */
/* #define _LZMA_LOC_OPT */
/* Enable local speed optimizations inside code */
#ifdef _LZMA_PROB32
#define CProb UInt32
#else
#define CProb UInt16
#endif
#define LZMA_RESULT_OK 0
#define LZMA_RESULT_DATA_ERROR 1
#ifdef _LZMA_IN_CB
typedef struct _ILzmaInCallback
{
int (*Read)(void *object, const unsigned char **buffer, SizeT *bufferSize);
} ILzmaInCallback;
#endif
#define LZMA_BASE_SIZE 1846
#define LZMA_LIT_SIZE 768
#define LZMA_PROPERTIES_SIZE 5
typedef struct _CLzmaProperties
{
int lc;
int lp;
int pb;
#ifdef _LZMA_OUT_READ
UInt32 DictionarySize;
#endif
}CLzmaProperties;
int LzmaDecodeProperties(CLzmaProperties *propsRes, const unsigned char *propsData, int size);
#define LzmaGetNumProbs(Properties) (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << ((Properties)->lc + (Properties)->lp)))
#define kLzmaNeedInitId (-2)
typedef struct _CLzmaDecoderState
{
CLzmaProperties Properties;
CProb *Probs;
#ifdef _LZMA_IN_CB
const unsigned char *Buffer;
const unsigned char *BufferLim;
#endif
#ifdef _LZMA_OUT_READ
unsigned char *Dictionary;
UInt32 Range;
UInt32 Code;
UInt32 DictionaryPos;
UInt32 GlobalPos;
UInt32 DistanceLimit;
UInt32 Reps[4];
int State;
int RemainLen;
unsigned char TempDictionary[4];
#endif
} CLzmaDecoderState;
#ifdef _LZMA_OUT_READ
#define LzmaDecoderInit(vs) { (vs)->RemainLen = kLzmaNeedInitId; }
#endif
int LzmaDecode(CLzmaDecoderState *vs,
#ifdef _LZMA_IN_CB
ILzmaInCallback *inCallback,
#else
const unsigned char *inStream, SizeT inSize, SizeT *inSizeProcessed,
#endif
unsigned char *outStream, SizeT outSize, SizeT *outSizeProcessed);
#endif

View File

@@ -0,0 +1,45 @@
/*
LzmaTypes.h
Types for LZMA Decoder
This file written and distributed to public domain by Igor Pavlov.
This file is part of LZMA SDK 4.40 (2006-05-01)
*/
#ifndef __LZMATYPES_H
#define __LZMATYPES_H
#ifndef _7ZIP_BYTE_DEFINED
#define _7ZIP_BYTE_DEFINED
typedef unsigned char Byte;
#endif
#ifndef _7ZIP_UINT16_DEFINED
#define _7ZIP_UINT16_DEFINED
typedef unsigned short UInt16;
#endif
#ifndef _7ZIP_UINT32_DEFINED
#define _7ZIP_UINT32_DEFINED
#ifdef _LZMA_UINT32_IS_ULONG
typedef unsigned long UInt32;
#else
typedef unsigned int UInt32;
#endif
#endif
/* #define _LZMA_NO_SYSTEM_SIZE_T */
/* You can use it, if you don't want <stddef.h> */
#ifndef _7ZIP_SIZET_DEFINED
#define _7ZIP_SIZET_DEFINED
#ifdef _LZMA_NO_SYSTEM_SIZE_T
typedef UInt32 SizeT;
#else
#include <stddef.h>
typedef size_t SizeT;
#endif
#endif
#endif

View File

@@ -0,0 +1,108 @@
#
# Makefile for the LZMA compressed kernel loader for
# Atheros AR7XXX/AR9XXX based boards
#
# Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
#
# Some parts of this file was based on the OpenWrt specific lzma-loader
# for the BCM47xx and ADM5120 based boards:
# Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org)
# Copyright (C) 2005 Mineharu Takahara <mtakahar@yahoo.com>
# Copyright (C) 2005 by Oleg I. Vdovikin <oleg@cs.msu.su>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 as published
# by the Free Software Foundation.
#
LOADADDR :=
LZMA_TEXT_START := 0x80a00000
LOADER_DATA :=
BOARD :=
FLASH_OFFS :=
FLASH_MAX :=
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld
OBJCOPY := $(CROSS_COMPILE)objcopy
OBJDUMP := $(CROSS_COMPILE)objdump
BIN_FLAGS := -O binary -R .reginfo -R .note -R .comment -R .mdebug \
-R .MIPS.abiflags -S
CFLAGS = -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -Os \
-fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 \
-mno-abicalls -fno-pic -ffunction-sections -pipe -mlong-calls \
-fno-common -ffreestanding -fhonour-copts -nostartfiles \
-mabi=32 -march=mips32r2 \
-Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap
CFLAGS += -D_LZMA_PROB32
CFLAGS += -flto
ASFLAGS = $(CFLAGS) -D__ASSEMBLY__
LDFLAGS = -static -Wl,--gc-sections -Wl,-no-warn-mismatch
LDFLAGS += -Wl,-e,startup -T loader.lds -Wl,-Ttext,$(LZMA_TEXT_START)
LDFLAGS += -flto -fwhole-program
O_FORMAT = $(shell $(OBJDUMP) -i | head -2 | grep elf32)
OBJECTS := head.o loader.o cache.o board.o printf.o LzmaDecode.o
ifneq ($(strip $(LOADER_DATA)),)
OBJECTS += data.o
CFLAGS += -DLZMA_WRAPPER=1 -DLOADADDR=$(LOADADDR)
endif
ifneq ($(strip $(KERNEL_CMDLINE)),)
CFLAGS += -DCONFIG_KERNEL_CMDLINE='"$(KERNEL_CMDLINE)"'
endif
ifneq ($(strip $(FLASH_OFFS)),)
CFLAGS += -DCONFIG_FLASH_OFFS=$(FLASH_OFFS)
endif
ifneq ($(strip $(FLASH_MAX)),)
CFLAGS += -DCONFIG_FLASH_MAX=$(FLASH_MAX)
endif
BOARD_DEF := $(shell echo $(strip $(BOARD)) | tr a-z A-Z | tr - _)
ifneq ($(BOARD_DEF),)
CFLAGS += -DCONFIG_BOARD_$(BOARD_DEF)
endif
all: loader.elf
# Don't build dependencies, this may die if $(CC) isn't gcc
dep:
install:
%.o : %.c
$(CC) $(CFLAGS) -c -o $@ $<
%.o : %.S
$(CC) $(ASFLAGS) -c -o $@ $<
data.o: $(LOADER_DATA)
$(LD) -r -b binary --oformat $(O_FORMAT) -T lzma-data.lds -o $@ $<
loader: $(OBJECTS)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJECTS)
loader.bin: loader
$(OBJCOPY) $(BIN_FLAGS) $< $@
loader2.o: loader.bin
$(LD) -r -b binary --oformat $(O_FORMAT) -o $@ $<
loader.elf: loader2.o
$(LD) -z max-page-size=0x1000 -e startup -T loader2.lds -Ttext $(LOADADDR) -o $@ $<
mrproper: clean
clean:
rm -f loader *.elf *.bin *.o

View File

@@ -0,0 +1,725 @@
/*
* Atheros AR71XX/AR724X/AR913X SoC register definitions
*
* Copyright (C) 2010-2011 Jaiganesh Narayanan <jnarayanan@atheros.com>
* Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
* Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
*
* Parts of this file are based on Atheros' 2.6.15/2.6.31 BSP
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*/
#ifndef __ASM_MACH_AR71XX_REGS_H
#define __ASM_MACH_AR71XX_REGS_H
#define BIT(_x) (1UL << (_x))
#define AR71XX_APB_BASE 0x18000000
#define AR71XX_GE0_BASE 0x19000000
#define AR71XX_GE0_SIZE 0x10000
#define AR71XX_GE1_BASE 0x1a000000
#define AR71XX_GE1_SIZE 0x10000
#define AR71XX_EHCI_BASE 0x1b000000
#define AR71XX_EHCI_SIZE 0x1000
#define AR71XX_OHCI_BASE 0x1c000000
#define AR71XX_OHCI_SIZE 0x1000
#define AR71XX_SPI_BASE 0x1f000000
#define AR71XX_SPI_SIZE 0x01000000
#define AR71XX_DDR_CTRL_BASE (AR71XX_APB_BASE + 0x00000000)
#define AR71XX_DDR_CTRL_SIZE 0x100
#define AR71XX_UART_BASE (AR71XX_APB_BASE + 0x00020000)
#define AR71XX_UART_SIZE 0x100
#define AR71XX_USB_CTRL_BASE (AR71XX_APB_BASE + 0x00030000)
#define AR71XX_USB_CTRL_SIZE 0x100
#define AR71XX_GPIO_BASE (AR71XX_APB_BASE + 0x00040000)
#define AR71XX_GPIO_SIZE 0x100
#define AR71XX_PLL_BASE (AR71XX_APB_BASE + 0x00050000)
#define AR71XX_PLL_SIZE 0x100
#define AR71XX_RESET_BASE (AR71XX_APB_BASE + 0x00060000)
#define AR71XX_RESET_SIZE 0x100
#define AR71XX_MII_BASE (AR71XX_APB_BASE + 0x00070000)
#define AR71XX_MII_SIZE 0x100
#define AR71XX_PCI_MEM_BASE 0x10000000
#define AR71XX_PCI_MEM_SIZE 0x07000000
#define AR71XX_PCI_WIN0_OFFS 0x10000000
#define AR71XX_PCI_WIN1_OFFS 0x11000000
#define AR71XX_PCI_WIN2_OFFS 0x12000000
#define AR71XX_PCI_WIN3_OFFS 0x13000000
#define AR71XX_PCI_WIN4_OFFS 0x14000000
#define AR71XX_PCI_WIN5_OFFS 0x15000000
#define AR71XX_PCI_WIN6_OFFS 0x16000000
#define AR71XX_PCI_WIN7_OFFS 0x07000000
#define AR71XX_PCI_CFG_BASE \
(AR71XX_PCI_MEM_BASE + AR71XX_PCI_WIN7_OFFS + 0x10000)
#define AR71XX_PCI_CFG_SIZE 0x100
#define AR7240_USB_CTRL_BASE (AR71XX_APB_BASE + 0x00030000)
#define AR7240_USB_CTRL_SIZE 0x100
#define AR7240_OHCI_BASE 0x1b000000
#define AR7240_OHCI_SIZE 0x1000
#define AR724X_PCI_MEM_BASE 0x10000000
#define AR724X_PCI_MEM_SIZE 0x04000000
#define AR724X_PCI_CFG_BASE 0x14000000
#define AR724X_PCI_CFG_SIZE 0x1000
#define AR724X_PCI_CRP_BASE (AR71XX_APB_BASE + 0x000c0000)
#define AR724X_PCI_CRP_SIZE 0x1000
#define AR724X_PCI_CTRL_BASE (AR71XX_APB_BASE + 0x000f0000)
#define AR724X_PCI_CTRL_SIZE 0x100
#define AR724X_EHCI_BASE 0x1b000000
#define AR724X_EHCI_SIZE 0x1000
#define AR913X_EHCI_BASE 0x1b000000
#define AR913X_EHCI_SIZE 0x1000
#define AR913X_WMAC_BASE (AR71XX_APB_BASE + 0x000C0000)
#define AR913X_WMAC_SIZE 0x30000
#define AR933X_UART_BASE (AR71XX_APB_BASE + 0x00020000)
#define AR933X_UART_SIZE 0x14
#define AR933X_GMAC_BASE (AR71XX_APB_BASE + 0x00070000)
#define AR933X_GMAC_SIZE 0x04
#define AR933X_WMAC_BASE (AR71XX_APB_BASE + 0x00100000)
#define AR933X_WMAC_SIZE 0x20000
#define AR933X_EHCI_BASE 0x1b000000
#define AR933X_EHCI_SIZE 0x1000
#define AR934X_GMAC_BASE (AR71XX_APB_BASE + 0x00070000)
#define AR934X_GMAC_SIZE 0x14
#define AR934X_WMAC_BASE (AR71XX_APB_BASE + 0x00100000)
#define AR934X_WMAC_SIZE 0x20000
#define AR934X_EHCI_BASE 0x1b000000
#define AR934X_EHCI_SIZE 0x200
#define QCA955X_PCI_MEM_BASE0 0x10000000
#define QCA955X_PCI_MEM_BASE1 0x12000000
#define QCA955X_PCI_MEM_SIZE 0x02000000
#define QCA955X_PCI_CFG_BASE0 0x14000000
#define QCA955X_PCI_CFG_BASE1 0x16000000
#define QCA955X_PCI_CFG_SIZE 0x1000
#define QCA955X_PCI_CRP_BASE0 (AR71XX_APB_BASE + 0x000c0000)
#define QCA955X_PCI_CRP_BASE1 (AR71XX_APB_BASE + 0x00250000)
#define QCA955X_PCI_CRP_SIZE 0x1000
#define QCA955X_PCI_CTRL_BASE0 (AR71XX_APB_BASE + 0x000f0000)
#define QCA955X_PCI_CTRL_BASE1 (AR71XX_APB_BASE + 0x00280000)
#define QCA955X_PCI_CTRL_SIZE 0x100
#define QCA955X_WMAC_BASE (AR71XX_APB_BASE + 0x00100000)
#define QCA955X_WMAC_SIZE 0x20000
#define QCA955X_EHCI0_BASE 0x1b000000
#define QCA955X_EHCI1_BASE 0x1b400000
#define QCA955X_EHCI_SIZE 0x1000
#define QCA955X_GMAC_BASE (AR71XX_APB_BASE + 0x00070000)
#define QCA955X_GMAC_SIZE 0x40
#define AR9300_OTP_BASE 0x14000
#define AR9300_OTP_STATUS 0x15f18
#define AR9300_OTP_STATUS_TYPE 0x7
#define AR9300_OTP_STATUS_VALID 0x4
#define AR9300_OTP_STATUS_ACCESS_BUSY 0x2
#define AR9300_OTP_STATUS_SM_BUSY 0x1
#define AR9300_OTP_READ_DATA 0x15f1c
/*
* DDR_CTRL block
*/
#define AR71XX_DDR_REG_PCI_WIN0 0x7c
#define AR71XX_DDR_REG_PCI_WIN1 0x80
#define AR71XX_DDR_REG_PCI_WIN2 0x84
#define AR71XX_DDR_REG_PCI_WIN3 0x88
#define AR71XX_DDR_REG_PCI_WIN4 0x8c
#define AR71XX_DDR_REG_PCI_WIN5 0x90
#define AR71XX_DDR_REG_PCI_WIN6 0x94
#define AR71XX_DDR_REG_PCI_WIN7 0x98
#define AR71XX_DDR_REG_FLUSH_GE0 0x9c
#define AR71XX_DDR_REG_FLUSH_GE1 0xa0
#define AR71XX_DDR_REG_FLUSH_USB 0xa4
#define AR71XX_DDR_REG_FLUSH_PCI 0xa8
#define AR724X_DDR_REG_FLUSH_GE0 0x7c
#define AR724X_DDR_REG_FLUSH_GE1 0x80
#define AR724X_DDR_REG_FLUSH_USB 0x84
#define AR724X_DDR_REG_FLUSH_PCIE 0x88
#define AR913X_DDR_REG_FLUSH_GE0 0x7c
#define AR913X_DDR_REG_FLUSH_GE1 0x80
#define AR913X_DDR_REG_FLUSH_USB 0x84
#define AR913X_DDR_REG_FLUSH_WMAC 0x88
#define AR933X_DDR_REG_FLUSH_GE0 0x7c
#define AR933X_DDR_REG_FLUSH_GE1 0x80
#define AR933X_DDR_REG_FLUSH_USB 0x84
#define AR933X_DDR_REG_FLUSH_WMAC 0x88
#define AR934X_DDR_REG_FLUSH_GE0 0x9c
#define AR934X_DDR_REG_FLUSH_GE1 0xa0
#define AR934X_DDR_REG_FLUSH_USB 0xa4
#define AR934X_DDR_REG_FLUSH_PCIE 0xa8
#define AR934X_DDR_REG_FLUSH_WMAC 0xac
/*
* PLL block
*/
#define AR71XX_PLL_REG_CPU_CONFIG 0x00
#define AR71XX_PLL_REG_SEC_CONFIG 0x04
#define AR71XX_PLL_REG_ETH0_INT_CLOCK 0x10
#define AR71XX_PLL_REG_ETH1_INT_CLOCK 0x14
#define AR71XX_PLL_DIV_SHIFT 3
#define AR71XX_PLL_DIV_MASK 0x1f
#define AR71XX_CPU_DIV_SHIFT 16
#define AR71XX_CPU_DIV_MASK 0x3
#define AR71XX_DDR_DIV_SHIFT 18
#define AR71XX_DDR_DIV_MASK 0x3
#define AR71XX_AHB_DIV_SHIFT 20
#define AR71XX_AHB_DIV_MASK 0x7
#define AR71XX_ETH0_PLL_SHIFT 17
#define AR71XX_ETH1_PLL_SHIFT 19
#define AR724X_PLL_REG_CPU_CONFIG 0x00
#define AR724X_PLL_REG_PCIE_CONFIG 0x18
#define AR724X_PLL_DIV_SHIFT 0
#define AR724X_PLL_DIV_MASK 0x3ff
#define AR724X_PLL_REF_DIV_SHIFT 10
#define AR724X_PLL_REF_DIV_MASK 0xf
#define AR724X_AHB_DIV_SHIFT 19
#define AR724X_AHB_DIV_MASK 0x1
#define AR724X_DDR_DIV_SHIFT 22
#define AR724X_DDR_DIV_MASK 0x3
#define AR7242_PLL_REG_ETH0_INT_CLOCK 0x2c
#define AR913X_PLL_REG_CPU_CONFIG 0x00
#define AR913X_PLL_REG_ETH_CONFIG 0x04
#define AR913X_PLL_REG_ETH0_INT_CLOCK 0x14
#define AR913X_PLL_REG_ETH1_INT_CLOCK 0x18
#define AR913X_PLL_DIV_SHIFT 0
#define AR913X_PLL_DIV_MASK 0x3ff
#define AR913X_DDR_DIV_SHIFT 22
#define AR913X_DDR_DIV_MASK 0x3
#define AR913X_AHB_DIV_SHIFT 19
#define AR913X_AHB_DIV_MASK 0x1
#define AR913X_ETH0_PLL_SHIFT 20
#define AR913X_ETH1_PLL_SHIFT 22
#define AR933X_PLL_CPU_CONFIG_REG 0x00
#define AR933X_PLL_CLOCK_CTRL_REG 0x08
#define AR933X_PLL_CPU_CONFIG_NINT_SHIFT 10
#define AR933X_PLL_CPU_CONFIG_NINT_MASK 0x3f
#define AR933X_PLL_CPU_CONFIG_REFDIV_SHIFT 16
#define AR933X_PLL_CPU_CONFIG_REFDIV_MASK 0x1f
#define AR933X_PLL_CPU_CONFIG_OUTDIV_SHIFT 23
#define AR933X_PLL_CPU_CONFIG_OUTDIV_MASK 0x7
#define AR933X_PLL_CLOCK_CTRL_BYPASS BIT(2)
#define AR933X_PLL_CLOCK_CTRL_CPU_DIV_SHIFT 5
#define AR933X_PLL_CLOCK_CTRL_CPU_DIV_MASK 0x3
#define AR933X_PLL_CLOCK_CTRL_DDR_DIV_SHIFT 10
#define AR933X_PLL_CLOCK_CTRL_DDR_DIV_MASK 0x3
#define AR933X_PLL_CLOCK_CTRL_AHB_DIV_SHIFT 15
#define AR933X_PLL_CLOCK_CTRL_AHB_DIV_MASK 0x7
#define AR934X_PLL_CPU_CONFIG_REG 0x00
#define AR934X_PLL_DDR_CONFIG_REG 0x04
#define AR934X_PLL_CPU_DDR_CLK_CTRL_REG 0x08
#define AR934X_PLL_ETH_XMII_CONTROL_REG 0x2c
#define AR934X_PLL_CPU_CONFIG_NFRAC_SHIFT 0
#define AR934X_PLL_CPU_CONFIG_NFRAC_MASK 0x3f
#define AR934X_PLL_CPU_CONFIG_NINT_SHIFT 6
#define AR934X_PLL_CPU_CONFIG_NINT_MASK 0x3f
#define AR934X_PLL_CPU_CONFIG_REFDIV_SHIFT 12
#define AR934X_PLL_CPU_CONFIG_REFDIV_MASK 0x1f
#define AR934X_PLL_CPU_CONFIG_OUTDIV_SHIFT 19
#define AR934X_PLL_CPU_CONFIG_OUTDIV_MASK 0x3
#define AR934X_PLL_DDR_CONFIG_NFRAC_SHIFT 0
#define AR934X_PLL_DDR_CONFIG_NFRAC_MASK 0x3ff
#define AR934X_PLL_DDR_CONFIG_NINT_SHIFT 10
#define AR934X_PLL_DDR_CONFIG_NINT_MASK 0x3f
#define AR934X_PLL_DDR_CONFIG_REFDIV_SHIFT 16
#define AR934X_PLL_DDR_CONFIG_REFDIV_MASK 0x1f
#define AR934X_PLL_DDR_CONFIG_OUTDIV_SHIFT 23
#define AR934X_PLL_DDR_CONFIG_OUTDIV_MASK 0x7
#define AR934X_PLL_CPU_DDR_CLK_CTRL_CPU_PLL_BYPASS BIT(2)
#define AR934X_PLL_CPU_DDR_CLK_CTRL_DDR_PLL_BYPASS BIT(3)
#define AR934X_PLL_CPU_DDR_CLK_CTRL_AHB_PLL_BYPASS BIT(4)
#define AR934X_PLL_CPU_DDR_CLK_CTRL_CPU_POST_DIV_SHIFT 5
#define AR934X_PLL_CPU_DDR_CLK_CTRL_CPU_POST_DIV_MASK 0x1f
#define AR934X_PLL_CPU_DDR_CLK_CTRL_DDR_POST_DIV_SHIFT 10
#define AR934X_PLL_CPU_DDR_CLK_CTRL_DDR_POST_DIV_MASK 0x1f
#define AR934X_PLL_CPU_DDR_CLK_CTRL_AHB_POST_DIV_SHIFT 15
#define AR934X_PLL_CPU_DDR_CLK_CTRL_AHB_POST_DIV_MASK 0x1f
#define AR934X_PLL_CPU_DDR_CLK_CTRL_CPUCLK_FROM_CPUPLL BIT(20)
#define AR934X_PLL_CPU_DDR_CLK_CTRL_DDRCLK_FROM_DDRPLL BIT(21)
#define AR934X_PLL_CPU_DDR_CLK_CTRL_AHBCLK_FROM_DDRPLL BIT(24)
#define QCA955X_PLL_CPU_CONFIG_REG 0x00
#define QCA955X_PLL_DDR_CONFIG_REG 0x04
#define QCA955X_PLL_CLK_CTRL_REG 0x08
#define QCA955X_PLL_CPU_CONFIG_NFRAC_SHIFT 0
#define QCA955X_PLL_CPU_CONFIG_NFRAC_MASK 0x3f
#define QCA955X_PLL_CPU_CONFIG_NINT_SHIFT 6
#define QCA955X_PLL_CPU_CONFIG_NINT_MASK 0x3f
#define QCA955X_PLL_CPU_CONFIG_REFDIV_SHIFT 12
#define QCA955X_PLL_CPU_CONFIG_REFDIV_MASK 0x1f
#define QCA955X_PLL_CPU_CONFIG_OUTDIV_SHIFT 19
#define QCA955X_PLL_CPU_CONFIG_OUTDIV_MASK 0x3
#define QCA955X_PLL_DDR_CONFIG_NFRAC_SHIFT 0
#define QCA955X_PLL_DDR_CONFIG_NFRAC_MASK 0x3ff
#define QCA955X_PLL_DDR_CONFIG_NINT_SHIFT 10
#define QCA955X_PLL_DDR_CONFIG_NINT_MASK 0x3f
#define QCA955X_PLL_DDR_CONFIG_REFDIV_SHIFT 16
#define QCA955X_PLL_DDR_CONFIG_REFDIV_MASK 0x1f
#define QCA955X_PLL_DDR_CONFIG_OUTDIV_SHIFT 23
#define QCA955X_PLL_DDR_CONFIG_OUTDIV_MASK 0x7
#define QCA955X_PLL_CLK_CTRL_CPU_PLL_BYPASS BIT(2)
#define QCA955X_PLL_CLK_CTRL_DDR_PLL_BYPASS BIT(3)
#define QCA955X_PLL_CLK_CTRL_AHB_PLL_BYPASS BIT(4)
#define QCA955X_PLL_CLK_CTRL_CPU_POST_DIV_SHIFT 5
#define QCA955X_PLL_CLK_CTRL_CPU_POST_DIV_MASK 0x1f
#define QCA955X_PLL_CLK_CTRL_DDR_POST_DIV_SHIFT 10
#define QCA955X_PLL_CLK_CTRL_DDR_POST_DIV_MASK 0x1f
#define QCA955X_PLL_CLK_CTRL_AHB_POST_DIV_SHIFT 15
#define QCA955X_PLL_CLK_CTRL_AHB_POST_DIV_MASK 0x1f
#define QCA955X_PLL_CLK_CTRL_CPUCLK_FROM_CPUPLL BIT(20)
#define QCA955X_PLL_CLK_CTRL_DDRCLK_FROM_DDRPLL BIT(21)
#define QCA955X_PLL_CLK_CTRL_AHBCLK_FROM_DDRPLL BIT(24)
/*
* USB_CONFIG block
*/
#define AR71XX_USB_CTRL_REG_FLADJ 0x00
#define AR71XX_USB_CTRL_REG_CONFIG 0x04
/*
* RESET block
*/
#define AR71XX_RESET_REG_TIMER 0x00
#define AR71XX_RESET_REG_TIMER_RELOAD 0x04
#define AR71XX_RESET_REG_WDOG_CTRL 0x08
#define AR71XX_RESET_REG_WDOG 0x0c
#define AR71XX_RESET_REG_MISC_INT_STATUS 0x10
#define AR71XX_RESET_REG_MISC_INT_ENABLE 0x14
#define AR71XX_RESET_REG_PCI_INT_STATUS 0x18
#define AR71XX_RESET_REG_PCI_INT_ENABLE 0x1c
#define AR71XX_RESET_REG_GLOBAL_INT_STATUS 0x20
#define AR71XX_RESET_REG_RESET_MODULE 0x24
#define AR71XX_RESET_REG_PERFC_CTRL 0x2c
#define AR71XX_RESET_REG_PERFC0 0x30
#define AR71XX_RESET_REG_PERFC1 0x34
#define AR71XX_RESET_REG_REV_ID 0x90
#define AR913X_RESET_REG_GLOBAL_INT_STATUS 0x18
#define AR913X_RESET_REG_RESET_MODULE 0x1c
#define AR913X_RESET_REG_PERF_CTRL 0x20
#define AR913X_RESET_REG_PERFC0 0x24
#define AR913X_RESET_REG_PERFC1 0x28
#define AR724X_RESET_REG_RESET_MODULE 0x1c
#define AR933X_RESET_REG_RESET_MODULE 0x1c
#define AR933X_RESET_REG_BOOTSTRAP 0xac
#define AR934X_RESET_REG_RESET_MODULE 0x1c
#define AR934X_RESET_REG_BOOTSTRAP 0xb0
#define AR934X_RESET_REG_PCIE_WMAC_INT_STATUS 0xac
#define QCA955X_RESET_REG_BOOTSTRAP 0xb0
#define QCA955X_RESET_REG_EXT_INT_STATUS 0xac
#define MISC_INT_ETHSW BIT(12)
#define MISC_INT_TIMER4 BIT(10)
#define MISC_INT_TIMER3 BIT(9)
#define MISC_INT_TIMER2 BIT(8)
#define MISC_INT_DMA BIT(7)
#define MISC_INT_OHCI BIT(6)
#define MISC_INT_PERFC BIT(5)
#define MISC_INT_WDOG BIT(4)
#define MISC_INT_UART BIT(3)
#define MISC_INT_GPIO BIT(2)
#define MISC_INT_ERROR BIT(1)
#define MISC_INT_TIMER BIT(0)
#define AR71XX_RESET_EXTERNAL BIT(28)
#define AR71XX_RESET_FULL_CHIP BIT(24)
#define AR71XX_RESET_CPU_NMI BIT(21)
#define AR71XX_RESET_CPU_COLD BIT(20)
#define AR71XX_RESET_DMA BIT(19)
#define AR71XX_RESET_SLIC BIT(18)
#define AR71XX_RESET_STEREO BIT(17)
#define AR71XX_RESET_DDR BIT(16)
#define AR71XX_RESET_GE1_MAC BIT(13)
#define AR71XX_RESET_GE1_PHY BIT(12)
#define AR71XX_RESET_USBSUS_OVERRIDE BIT(10)
#define AR71XX_RESET_GE0_MAC BIT(9)
#define AR71XX_RESET_GE0_PHY BIT(8)
#define AR71XX_RESET_USB_OHCI_DLL BIT(6)
#define AR71XX_RESET_USB_HOST BIT(5)
#define AR71XX_RESET_USB_PHY BIT(4)
#define AR71XX_RESET_PCI_BUS BIT(1)
#define AR71XX_RESET_PCI_CORE BIT(0)
#define AR7240_RESET_USB_HOST BIT(5)
#define AR7240_RESET_OHCI_DLL BIT(3)
#define AR724X_RESET_GE1_MDIO BIT(23)
#define AR724X_RESET_GE0_MDIO BIT(22)
#define AR724X_RESET_PCIE_PHY_SERIAL BIT(10)
#define AR724X_RESET_PCIE_PHY BIT(7)
#define AR724X_RESET_PCIE BIT(6)
#define AR724X_RESET_USB_HOST BIT(5)
#define AR724X_RESET_USB_PHY BIT(4)
#define AR724X_RESET_USBSUS_OVERRIDE BIT(3)
#define AR913X_RESET_AMBA2WMAC BIT(22)
#define AR913X_RESET_USBSUS_OVERRIDE BIT(10)
#define AR913X_RESET_USB_HOST BIT(5)
#define AR913X_RESET_USB_PHY BIT(4)
#define AR933X_RESET_GE1_MDIO BIT(23)
#define AR933X_RESET_GE0_MDIO BIT(22)
#define AR933X_RESET_GE1_MAC BIT(13)
#define AR933X_RESET_WMAC BIT(11)
#define AR933X_RESET_GE0_MAC BIT(9)
#define AR933X_RESET_USB_HOST BIT(5)
#define AR933X_RESET_USB_PHY BIT(4)
#define AR933X_RESET_USBSUS_OVERRIDE BIT(3)
#define AR934X_RESET_HOST BIT(31)
#define AR934X_RESET_SLIC BIT(30)
#define AR934X_RESET_HDMA BIT(29)
#define AR934X_RESET_EXTERNAL BIT(28)
#define AR934X_RESET_RTC BIT(27)
#define AR934X_RESET_PCIE_EP_INT BIT(26)
#define AR934X_RESET_CHKSUM_ACC BIT(25)
#define AR934X_RESET_FULL_CHIP BIT(24)
#define AR934X_RESET_GE1_MDIO BIT(23)
#define AR934X_RESET_GE0_MDIO BIT(22)
#define AR934X_RESET_CPU_NMI BIT(21)
#define AR934X_RESET_CPU_COLD BIT(20)
#define AR934X_RESET_HOST_RESET_INT BIT(19)
#define AR934X_RESET_PCIE_EP BIT(18)
#define AR934X_RESET_UART1 BIT(17)
#define AR934X_RESET_DDR BIT(16)
#define AR934X_RESET_USB_PHY_PLL_PWD_EXT BIT(15)
#define AR934X_RESET_NANDF BIT(14)
#define AR934X_RESET_GE1_MAC BIT(13)
#define AR934X_RESET_ETH_SWITCH_ANALOG BIT(12)
#define AR934X_RESET_USB_PHY_ANALOG BIT(11)
#define AR934X_RESET_HOST_DMA_INT BIT(10)
#define AR934X_RESET_GE0_MAC BIT(9)
#define AR934X_RESET_ETH_SWITCH BIT(8)
#define AR934X_RESET_PCIE_PHY BIT(7)
#define AR934X_RESET_PCIE BIT(6)
#define AR934X_RESET_USB_HOST BIT(5)
#define AR934X_RESET_USB_PHY BIT(4)
#define AR934X_RESET_USBSUS_OVERRIDE BIT(3)
#define AR934X_RESET_LUT BIT(2)
#define AR934X_RESET_MBOX BIT(1)
#define AR934X_RESET_I2S BIT(0)
#define AR933X_BOOTSTRAP_MDIO_GPIO_EN BIT(18)
#define AR933X_BOOTSTRAP_EEPBUSY BIT(4)
#define AR933X_BOOTSTRAP_REF_CLK_40 BIT(0)
#define AR934X_BOOTSTRAP_SW_OPTION8 BIT(23)
#define AR934X_BOOTSTRAP_SW_OPTION7 BIT(22)
#define AR934X_BOOTSTRAP_SW_OPTION6 BIT(21)
#define AR934X_BOOTSTRAP_SW_OPTION5 BIT(20)
#define AR934X_BOOTSTRAP_SW_OPTION4 BIT(19)
#define AR934X_BOOTSTRAP_SW_OPTION3 BIT(18)
#define AR934X_BOOTSTRAP_SW_OPTION2 BIT(17)
#define AR934X_BOOTSTRAP_SW_OPTION1 BIT(16)
#define AR934X_BOOTSTRAP_USB_MODE_DEVICE BIT(7)
#define AR934X_BOOTSTRAP_PCIE_RC BIT(6)
#define AR934X_BOOTSTRAP_EJTAG_MODE BIT(5)
#define AR934X_BOOTSTRAP_REF_CLK_40 BIT(4)
#define AR934X_BOOTSTRAP_BOOT_FROM_SPI BIT(2)
#define AR934X_BOOTSTRAP_SDRAM_DISABLED BIT(1)
#define AR934X_BOOTSTRAP_DDR1 BIT(0)
#define QCA955X_BOOTSTRAP_REF_CLK_40 BIT(4)
#define AR934X_PCIE_WMAC_INT_WMAC_MISC BIT(0)
#define AR934X_PCIE_WMAC_INT_WMAC_TX BIT(1)
#define AR934X_PCIE_WMAC_INT_WMAC_RXLP BIT(2)
#define AR934X_PCIE_WMAC_INT_WMAC_RXHP BIT(3)
#define AR934X_PCIE_WMAC_INT_PCIE_RC BIT(4)
#define AR934X_PCIE_WMAC_INT_PCIE_RC0 BIT(5)
#define AR934X_PCIE_WMAC_INT_PCIE_RC1 BIT(6)
#define AR934X_PCIE_WMAC_INT_PCIE_RC2 BIT(7)
#define AR934X_PCIE_WMAC_INT_PCIE_RC3 BIT(8)
#define AR934X_PCIE_WMAC_INT_WMAC_ALL \
(AR934X_PCIE_WMAC_INT_WMAC_MISC | AR934X_PCIE_WMAC_INT_WMAC_TX | \
AR934X_PCIE_WMAC_INT_WMAC_RXLP | AR934X_PCIE_WMAC_INT_WMAC_RXHP)
#define AR934X_PCIE_WMAC_INT_PCIE_ALL \
(AR934X_PCIE_WMAC_INT_PCIE_RC | AR934X_PCIE_WMAC_INT_PCIE_RC0 | \
AR934X_PCIE_WMAC_INT_PCIE_RC1 | AR934X_PCIE_WMAC_INT_PCIE_RC2 | \
AR934X_PCIE_WMAC_INT_PCIE_RC3)
#define QCA955X_EXT_INT_WMAC_MISC BIT(0)
#define QCA955X_EXT_INT_WMAC_TX BIT(1)
#define QCA955X_EXT_INT_WMAC_RXLP BIT(2)
#define QCA955X_EXT_INT_WMAC_RXHP BIT(3)
#define QCA955X_EXT_INT_PCIE_RC1 BIT(4)
#define QCA955X_EXT_INT_PCIE_RC1_INT0 BIT(5)
#define QCA955X_EXT_INT_PCIE_RC1_INT1 BIT(6)
#define QCA955X_EXT_INT_PCIE_RC1_INT2 BIT(7)
#define QCA955X_EXT_INT_PCIE_RC1_INT3 BIT(8)
#define QCA955X_EXT_INT_PCIE_RC2 BIT(12)
#define QCA955X_EXT_INT_PCIE_RC2_INT0 BIT(13)
#define QCA955X_EXT_INT_PCIE_RC2_INT1 BIT(14)
#define QCA955X_EXT_INT_PCIE_RC2_INT2 BIT(15)
#define QCA955X_EXT_INT_PCIE_RC2_INT3 BIT(16)
#define QCA955X_EXT_INT_USB1 BIT(24)
#define QCA955X_EXT_INT_USB2 BIT(28)
#define QCA955X_EXT_INT_WMAC_ALL \
(QCA955X_EXT_INT_WMAC_MISC | QCA955X_EXT_INT_WMAC_TX | \
QCA955X_EXT_INT_WMAC_RXLP | QCA955X_EXT_INT_WMAC_RXHP)
#define QCA955X_EXT_INT_PCIE_RC1_ALL \
(QCA955X_EXT_INT_PCIE_RC1 | QCA955X_EXT_INT_PCIE_RC1_INT0 | \
QCA955X_EXT_INT_PCIE_RC1_INT1 | QCA955X_EXT_INT_PCIE_RC1_INT2 | \
QCA955X_EXT_INT_PCIE_RC1_INT3)
#define QCA955X_EXT_INT_PCIE_RC2_ALL \
(QCA955X_EXT_INT_PCIE_RC2 | QCA955X_EXT_INT_PCIE_RC2_INT0 | \
QCA955X_EXT_INT_PCIE_RC2_INT1 | QCA955X_EXT_INT_PCIE_RC2_INT2 | \
QCA955X_EXT_INT_PCIE_RC2_INT3)
#define REV_ID_MAJOR_MASK 0xfff0
#define REV_ID_MAJOR_AR71XX 0x00a0
#define REV_ID_MAJOR_AR913X 0x00b0
#define REV_ID_MAJOR_AR7240 0x00c0
#define REV_ID_MAJOR_AR7241 0x0100
#define REV_ID_MAJOR_AR7242 0x1100
#define REV_ID_MAJOR_AR9330 0x0110
#define REV_ID_MAJOR_AR9331 0x1110
#define REV_ID_MAJOR_AR9341 0x0120
#define REV_ID_MAJOR_AR9342 0x1120
#define REV_ID_MAJOR_AR9344 0x2120
#define REV_ID_MAJOR_QCA9558 0x1130
#define AR71XX_REV_ID_MINOR_MASK 0x3
#define AR71XX_REV_ID_MINOR_AR7130 0x0
#define AR71XX_REV_ID_MINOR_AR7141 0x1
#define AR71XX_REV_ID_MINOR_AR7161 0x2
#define AR71XX_REV_ID_REVISION_MASK 0x3
#define AR71XX_REV_ID_REVISION_SHIFT 2
#define AR913X_REV_ID_MINOR_MASK 0x3
#define AR913X_REV_ID_MINOR_AR9130 0x0
#define AR913X_REV_ID_MINOR_AR9132 0x1
#define AR913X_REV_ID_REVISION_MASK 0x3
#define AR913X_REV_ID_REVISION_SHIFT 2
#define AR933X_REV_ID_REVISION_MASK 0x3
#define AR724X_REV_ID_REVISION_MASK 0x3
#define AR934X_REV_ID_REVISION_MASK 0xf
#define AR944X_REV_ID_REVISION_MASK 0xf
/*
* SPI block
*/
#define AR71XX_SPI_REG_FS 0x00 /* Function Select */
#define AR71XX_SPI_REG_CTRL 0x04 /* SPI Control */
#define AR71XX_SPI_REG_IOC 0x08 /* SPI I/O Control */
#define AR71XX_SPI_REG_RDS 0x0c /* Read Data Shift */
#define AR71XX_SPI_FS_GPIO BIT(0) /* Enable GPIO mode */
#define AR71XX_SPI_CTRL_RD BIT(6) /* Remap Disable */
#define AR71XX_SPI_CTRL_DIV_MASK 0x3f
#define AR71XX_SPI_IOC_DO BIT(0) /* Data Out pin */
#define AR71XX_SPI_IOC_CLK BIT(8) /* CLK pin */
#define AR71XX_SPI_IOC_CS(n) BIT(16 + (n))
#define AR71XX_SPI_IOC_CS0 AR71XX_SPI_IOC_CS(0)
#define AR71XX_SPI_IOC_CS1 AR71XX_SPI_IOC_CS(1)
#define AR71XX_SPI_IOC_CS2 AR71XX_SPI_IOC_CS(2)
#define AR71XX_SPI_IOC_CS_ALL (AR71XX_SPI_IOC_CS0 | AR71XX_SPI_IOC_CS1 | \
AR71XX_SPI_IOC_CS2)
/*
* GPIO block
*/
#define AR71XX_GPIO_REG_OE 0x00
#define AR71XX_GPIO_REG_IN 0x04
#define AR71XX_GPIO_REG_OUT 0x08
#define AR71XX_GPIO_REG_SET 0x0c
#define AR71XX_GPIO_REG_CLEAR 0x10
#define AR71XX_GPIO_REG_INT_MODE 0x14
#define AR71XX_GPIO_REG_INT_TYPE 0x18
#define AR71XX_GPIO_REG_INT_POLARITY 0x1c
#define AR71XX_GPIO_REG_INT_PENDING 0x20
#define AR71XX_GPIO_REG_INT_ENABLE 0x24
#define AR71XX_GPIO_REG_FUNC 0x28
#define AR934X_GPIO_REG_OUT_FUNC0 0x2c
#define AR934X_GPIO_REG_OUT_FUNC1 0x30
#define AR934X_GPIO_REG_OUT_FUNC2 0x34
#define AR934X_GPIO_REG_OUT_FUNC3 0x38
#define AR934X_GPIO_REG_OUT_FUNC4 0x3c
#define AR934X_GPIO_REG_OUT_FUNC5 0x40
#define AR934X_GPIO_REG_FUNC 0x6c
#define AR71XX_GPIO_COUNT 16
#define AR724X_GPIO_COUNT 18
#define AR913X_GPIO_COUNT 22
#define AR933X_GPIO_COUNT 30
#define AR934X_GPIO_COUNT 23
#define QCA955X_GPIO_COUNT 24
#define AR71XX_GPIO_FUNC_STEREO_EN BIT(17)
#define AR71XX_GPIO_FUNC_SLIC_EN BIT(16)
#define AR71XX_GPIO_FUNC_SPI_CS2_EN BIT(13)
#define AR71XX_GPIO_FUNC_SPI_CS1_EN BIT(12)
#define AR71XX_GPIO_FUNC_UART_EN BIT(8)
#define AR71XX_GPIO_FUNC_USB_OC_EN BIT(4)
#define AR71XX_GPIO_FUNC_USB_CLK_EN BIT(0)
#define AR724X_GPIO_FUNC_GE0_MII_CLK_EN BIT(19)
#define AR724X_GPIO_FUNC_SPI_EN BIT(18)
#define AR724X_GPIO_FUNC_SPI_CS_EN2 BIT(14)
#define AR724X_GPIO_FUNC_SPI_CS_EN1 BIT(13)
#define AR724X_GPIO_FUNC_CLK_OBS5_EN BIT(12)
#define AR724X_GPIO_FUNC_CLK_OBS4_EN BIT(11)
#define AR724X_GPIO_FUNC_CLK_OBS3_EN BIT(10)
#define AR724X_GPIO_FUNC_CLK_OBS2_EN BIT(9)
#define AR724X_GPIO_FUNC_CLK_OBS1_EN BIT(8)
#define AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN BIT(7)
#define AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN BIT(6)
#define AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN BIT(5)
#define AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN BIT(4)
#define AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN BIT(3)
#define AR724X_GPIO_FUNC_UART_RTS_CTS_EN BIT(2)
#define AR724X_GPIO_FUNC_UART_EN BIT(1)
#define AR724X_GPIO_FUNC_JTAG_DISABLE BIT(0)
#define AR913X_GPIO_FUNC_WMAC_LED_EN BIT(22)
#define AR913X_GPIO_FUNC_EXP_PORT_CS_EN BIT(21)
#define AR913X_GPIO_FUNC_I2S_REFCLKEN BIT(20)
#define AR913X_GPIO_FUNC_I2S_MCKEN BIT(19)
#define AR913X_GPIO_FUNC_I2S1_EN BIT(18)
#define AR913X_GPIO_FUNC_I2S0_EN BIT(17)
#define AR913X_GPIO_FUNC_SLIC_EN BIT(16)
#define AR913X_GPIO_FUNC_UART_RTSCTS_EN BIT(9)
#define AR913X_GPIO_FUNC_UART_EN BIT(8)
#define AR913X_GPIO_FUNC_USB_CLK_EN BIT(4)
#define AR933X_GPIO_FUNC_SPDIF2TCK BIT(31)
#define AR933X_GPIO_FUNC_SPDIF_EN BIT(30)
#define AR933X_GPIO_FUNC_I2SO_22_18_EN BIT(29)
#define AR933X_GPIO_FUNC_I2S_MCK_EN BIT(27)
#define AR933X_GPIO_FUNC_I2SO_EN BIT(26)
#define AR933X_GPIO_FUNC_ETH_SWITCH_LED_DUPL BIT(25)
#define AR933X_GPIO_FUNC_ETH_SWITCH_LED_COLL BIT(24)
#define AR933X_GPIO_FUNC_ETH_SWITCH_LED_ACT BIT(23)
#define AR933X_GPIO_FUNC_SPI_EN BIT(18)
#define AR933X_GPIO_FUNC_SPI_CS_EN2 BIT(14)
#define AR933X_GPIO_FUNC_SPI_CS_EN1 BIT(13)
#define AR933X_GPIO_FUNC_ETH_SWITCH_LED4_EN BIT(7)
#define AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN BIT(6)
#define AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN BIT(5)
#define AR933X_GPIO_FUNC_ETH_SWITCH_LED1_EN BIT(4)
#define AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN BIT(3)
#define AR933X_GPIO_FUNC_UART_RTS_CTS_EN BIT(2)
#define AR933X_GPIO_FUNC_UART_EN BIT(1)
#define AR933X_GPIO_FUNC_JTAG_DISABLE BIT(0)
#define AR934X_GPIO_FUNC_DDR_DQOE_EN BIT(17)
#define AR934X_GPIO_FUNC_SPI_CS_1_EN BIT(14)
#define AR934X_GPIO_FUNC_SPI_CS_0_EN BIT(13)
#define AR934X_GPIO_OUT_GPIO 0x00
/*
* MII_CTRL block
*/
#define AR71XX_MII_REG_MII0_CTRL 0x00
#define AR71XX_MII_REG_MII1_CTRL 0x04
#define AR71XX_MII_CTRL_IF_MASK 3
#define AR71XX_MII_CTRL_SPEED_SHIFT 4
#define AR71XX_MII_CTRL_SPEED_MASK 3
#define AR71XX_MII_CTRL_SPEED_10 0
#define AR71XX_MII_CTRL_SPEED_100 1
#define AR71XX_MII_CTRL_SPEED_1000 2
#define AR71XX_MII0_CTRL_IF_GMII 0
#define AR71XX_MII0_CTRL_IF_MII 1
#define AR71XX_MII0_CTRL_IF_RGMII 2
#define AR71XX_MII0_CTRL_IF_RMII 3
#define AR71XX_MII1_CTRL_IF_RGMII 0
#define AR71XX_MII1_CTRL_IF_RMII 1
/*
* AR933X GMAC interface
*/
#define AR933X_GMAC_REG_ETH_CFG 0x00
#define AR933X_ETH_CFG_RGMII_GE0 BIT(0)
#define AR933X_ETH_CFG_MII_GE0 BIT(1)
#define AR933X_ETH_CFG_GMII_GE0 BIT(2)
#define AR933X_ETH_CFG_MII_GE0_MASTER BIT(3)
#define AR933X_ETH_CFG_MII_GE0_SLAVE BIT(4)
#define AR933X_ETH_CFG_MII_GE0_ERR_EN BIT(5)
#define AR933X_ETH_CFG_SW_PHY_SWAP BIT(7)
#define AR933X_ETH_CFG_SW_PHY_ADDR_SWAP BIT(8)
#define AR933X_ETH_CFG_RMII_GE0 BIT(9)
#define AR933X_ETH_CFG_RMII_GE0_SPD_10 0
#define AR933X_ETH_CFG_RMII_GE0_SPD_100 BIT(10)
/*
* AR934X GMAC Interface
*/
#define AR934X_GMAC_REG_ETH_CFG 0x00
#define AR934X_ETH_CFG_RGMII_GMAC0 BIT(0)
#define AR934X_ETH_CFG_MII_GMAC0 BIT(1)
#define AR934X_ETH_CFG_GMII_GMAC0 BIT(2)
#define AR934X_ETH_CFG_MII_GMAC0_MASTER BIT(3)
#define AR934X_ETH_CFG_MII_GMAC0_SLAVE BIT(4)
#define AR934X_ETH_CFG_MII_GMAC0_ERR_EN BIT(5)
#define AR934X_ETH_CFG_SW_ONLY_MODE BIT(6)
#define AR934X_ETH_CFG_SW_PHY_SWAP BIT(7)
#define AR934X_ETH_CFG_SW_APB_ACCESS BIT(9)
#define AR934X_ETH_CFG_RMII_GMAC0 BIT(10)
#define AR933X_ETH_CFG_MII_CNTL_SPEED BIT(11)
#define AR934X_ETH_CFG_RMII_GMAC0_MASTER BIT(12)
#define AR933X_ETH_CFG_SW_ACC_MSB_FIRST BIT(13)
/*
* QCA955X GMAC Interface
*/
#define QCA955X_GMAC_REG_ETH_CFG 0x00
#define QCA955X_ETH_CFG_RGMII_GMAC0 BIT(0)
#define QCA955X_ETH_CFG_SGMII_GMAC0 BIT(6)
#endif /* __ASM_MACH_AR71XX_REGS_H */

View File

@@ -0,0 +1,56 @@
/*
* LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards
*
* Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*/
#include <stddef.h>
#include "config.h"
#include "ar71xx_regs.h"
#define READREG(r) *(volatile unsigned int *)(r)
#define WRITEREG(r,v) *(volatile unsigned int *)(r) = v
#define KSEG1ADDR(_x) (((_x) & 0x1fffffff) | 0xa0000000)
#define UART_BASE 0xb8020000
#define UART_TX 0
#define UART_LSR 5
#define UART_LSR_THRE 0x20
#define UART_READ(r) READREG(UART_BASE + 4 * (r))
#define UART_WRITE(r,v) WRITEREG(UART_BASE + 4 * (r), (v))
void board_putc(int ch)
{
while (((UART_READ(UART_LSR)) & UART_LSR_THRE) == 0);
UART_WRITE(UART_TX, ch);
while (((UART_READ(UART_LSR)) & UART_LSR_THRE) == 0);
}
#ifdef CONFIG_BOARD_TL_WR1043ND_V1
static void tlwr1043nd_init(void)
{
unsigned int reg = KSEG1ADDR(AR71XX_RESET_BASE);
unsigned int t;
t = READREG(reg + AR913X_RESET_REG_RESET_MODULE);
t |= AR71XX_RESET_GE0_PHY;
WRITEREG(reg + AR913X_RESET_REG_RESET_MODULE, t);
/* flush write */
t = READREG(reg + AR913X_RESET_REG_RESET_MODULE);
}
#else
static inline void tlwr1043nd_init(void) {}
#endif
void board_init(void)
{
tlwr1043nd_init();
}

View File

@@ -0,0 +1,43 @@
/*
* LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards
*
* Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
*
* The cache manipulation routine has been taken from the U-Boot project.
* (C) Copyright 2003
* Wolfgang Denk, DENX Software Engineering, <wd@denx.de>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*
*/
#include "cache.h"
#include "cacheops.h"
#include "config.h"
#define cache_op(op,addr) \
__asm__ __volatile__( \
" .set push \n" \
" .set noreorder \n" \
" .set mips3\n\t \n" \
" cache %0, %1 \n" \
" .set pop \n" \
: \
: "i" (op), "R" (*(unsigned char *)(addr)))
void flush_cache(unsigned long start_addr, unsigned long size)
{
unsigned long lsize = CONFIG_CACHELINE_SIZE;
unsigned long addr = start_addr & ~(lsize - 1);
unsigned long aend = (start_addr + size - 1) & ~(lsize - 1);
while (1) {
cache_op(Hit_Writeback_Inv_D, addr);
cache_op(Hit_Invalidate_I, addr);
if (addr == aend)
break;
addr += lsize;
}
}

View File

@@ -0,0 +1,17 @@
/*
* LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards
*
* Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*
*/
#ifndef __CACHE_H
#define __CACHE_H
void flush_cache(unsigned long start_addr, unsigned long size);
#endif /* __CACHE_H */

View File

@@ -0,0 +1,85 @@
/*
* Cache operations for the cache instruction.
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* (C) Copyright 1996, 97, 99, 2002, 03 Ralf Baechle
* (C) Copyright 1999 Silicon Graphics, Inc.
*/
#ifndef __ASM_CACHEOPS_H
#define __ASM_CACHEOPS_H
/*
* Cache Operations available on all MIPS processors with R4000-style caches
*/
#define Index_Invalidate_I 0x00
#define Index_Writeback_Inv_D 0x01
#define Index_Load_Tag_I 0x04
#define Index_Load_Tag_D 0x05
#define Index_Store_Tag_I 0x08
#define Index_Store_Tag_D 0x09
#if defined(CONFIG_CPU_LOONGSON2)
#define Hit_Invalidate_I 0x00
#else
#define Hit_Invalidate_I 0x10
#endif
#define Hit_Invalidate_D 0x11
#define Hit_Writeback_Inv_D 0x15
/*
* R4000-specific cacheops
*/
#define Create_Dirty_Excl_D 0x0d
#define Fill 0x14
#define Hit_Writeback_I 0x18
#define Hit_Writeback_D 0x19
/*
* R4000SC and R4400SC-specific cacheops
*/
#define Index_Invalidate_SI 0x02
#define Index_Writeback_Inv_SD 0x03
#define Index_Load_Tag_SI 0x06
#define Index_Load_Tag_SD 0x07
#define Index_Store_Tag_SI 0x0A
#define Index_Store_Tag_SD 0x0B
#define Create_Dirty_Excl_SD 0x0f
#define Hit_Invalidate_SI 0x12
#define Hit_Invalidate_SD 0x13
#define Hit_Writeback_Inv_SD 0x17
#define Hit_Writeback_SD 0x1b
#define Hit_Set_Virtual_SI 0x1e
#define Hit_Set_Virtual_SD 0x1f
/*
* R5000-specific cacheops
*/
#define R5K_Page_Invalidate_S 0x17
/*
* RM7000-specific cacheops
*/
#define Page_Invalidate_T 0x16
/*
* R10000-specific cacheops
*
* Cacheops 0x02, 0x06, 0x0a, 0x0c-0x0e, 0x16, 0x1a and 0x1e are unused.
* Most of the _S cacheops are identical to the R4000SC _SD cacheops.
*/
#define Index_Writeback_Inv_S 0x03
#define Index_Load_Tag_S 0x07
#define Index_Store_Tag_S 0x0B
#define Hit_Invalidate_S 0x13
#define Cache_Barrier 0x14
#define Hit_Writeback_Inv_S 0x17
#define Index_Load_Data_I 0x18
#define Index_Load_Data_D 0x19
#define Index_Load_Data_S 0x1b
#define Index_Store_Data_I 0x1c
#define Index_Store_Data_D 0x1d
#define Index_Store_Data_S 0x1f
#endif /* __ASM_CACHEOPS_H */

View File

@@ -0,0 +1,31 @@
/*
* LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards
*
* Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*
*/
#ifndef _CONFIG_H_
#define _CONFIG_H_
#define CONFIG_ICACHE_SIZE (32 * 1024)
#define CONFIG_DCACHE_SIZE (64 * 1024)
#define CONFIG_CACHELINE_SIZE 32
#ifndef CONFIG_FLASH_OFFS
#define CONFIG_FLASH_OFFS 0
#endif
#ifndef CONFIG_FLASH_MAX
#define CONFIG_FLASH_MAX 0
#endif
#ifndef CONFIG_FLASH_STEP
#define CONFIG_FLASH_STEP 0x1000
#endif
#endif /* _CONFIG_H_ */

View File

@@ -0,0 +1,39 @@
/*
* Copyright (C) 1994, 1995, 1996, 1997, 2000, 2001 by Ralf Baechle
*
* Copyright (C) 2001, Monta Vista Software
* Author: jsun@mvista.com or jsun@junsun.net
*/
#ifndef _cp0regdef_h_
#define _cp0regdef_h_
#define CP0_INDEX $0
#define CP0_RANDOM $1
#define CP0_ENTRYLO0 $2
#define CP0_ENTRYLO1 $3
#define CP0_CONTEXT $4
#define CP0_PAGEMASK $5
#define CP0_WIRED $6
#define CP0_BADVADDR $8
#define CP0_COUNT $9
#define CP0_ENTRYHI $10
#define CP0_COMPARE $11
#define CP0_STATUS $12
#define CP0_CAUSE $13
#define CP0_EPC $14
#define CP0_PRID $15
#define CP0_CONFIG $16
#define CP0_LLADDR $17
#define CP0_WATCHLO $18
#define CP0_WATCHHI $19
#define CP0_XCONTEXT $20
#define CP0_FRAMEMASK $21
#define CP0_DIAGNOSTIC $22
#define CP0_PERFORMANCE $25
#define CP0_ECC $26
#define CP0_CACHEERR $27
#define CP0_TAGLO $28
#define CP0_TAGHI $29
#define CP0_ERROREPC $30
#endif

View File

@@ -0,0 +1,134 @@
/*
* LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards
*
* Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
*
* Some parts of this code was based on the OpenWrt specific lzma-loader
* for the BCM47xx and ADM5120 based boards:
* Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org)
* Copyright (C) 2005 by Oleg I. Vdovikin <oleg@cs.msu.su>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*/
#include <asm/asm.h>
#include <asm/regdef.h>
#include "cp0regdef.h"
#include "cacheops.h"
#include "config.h"
#define KSEG0 0x80000000
.macro ehb
sll zero, 3
.endm
.text
LEAF(startup)
.set noreorder
.set mips32
mtc0 zero, CP0_WATCHLO # clear watch registers
mtc0 zero, CP0_WATCHHI
mtc0 zero, CP0_CAUSE # clear before writing status register
mfc0 t0, CP0_STATUS
li t1, 0x1000001f
or t0, t1
xori t0, 0x1f
mtc0 t0, CP0_STATUS
ehb
/*
* Some bootloaders set the 'Kseg0 coherency algorithm' to
* 'Cacheable, noncoherent, write-through, no write allocate'
* and this cause performance issues. Let's go and change it to
* 'Cacheable, noncoherent, write-back, write allocate'
*/
mfc0 t0, CP0_CONFIG
li t1, ~7 #~CONF_CM_CMASK
and t0, t1
ori t0, 3 #CONF_CM_CACHABLE_NONCOHERENT
mtc0 t0, CP0_CONFIG
nop
mtc0 zero, CP0_COUNT
mtc0 zero, CP0_COMPARE
ehb
la t0, __reloc_label # get linked address of label
bal __reloc_label # branch and link to label to
nop # get actual address
__reloc_label:
subu t0, ra, t0 # get reloc_delta
beqz t0, __reloc_done # if delta is 0 we are in the right place
nop
/* Copy our code to the right place */
la t1, _code_start # get linked address of _code_start
la t2, _code_end # get linked address of _code_end
addu t0, t0, t1 # calculate actual address of _code_start
__reloc_copy:
lw t3, 0(t0)
sw t3, 0(t1)
add t1, 4
blt t1, t2, __reloc_copy
add t0, 4
/* flush cache */
la t0, _code_start
la t1, _code_end
li t2, ~(CONFIG_CACHELINE_SIZE - 1)
and t0, t2
and t1, t2
li t2, CONFIG_CACHELINE_SIZE
b __flush_check
nop
__flush_line:
cache Hit_Writeback_Inv_D, 0(t0)
cache Hit_Invalidate_I, 0(t0)
add t0, t2
__flush_check:
bne t0, t1, __flush_line
nop
sync
__reloc_done:
/* clear bss */
la t0, _bss_start
la t1, _bss_end
b __bss_check
nop
__bss_fill:
sw zero, 0(t0)
addi t0, 4
__bss_check:
bne t0, t1, __bss_fill
nop
/* Setup new "C" stack */
la sp, _stack
/* reserve stack space for a0-a3 registers */
subu sp, 16
/* jump to the decompressor routine */
la t0, loader_main
jr t0
nop
.set reorder
END(startup)

View File

@@ -0,0 +1,264 @@
/*
* LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards
*
* Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
*
* Some parts of this code was based on the OpenWrt specific lzma-loader
* for the BCM47xx and ADM5120 based boards:
* Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org)
* Copyright (C) 2005 Mineharu Takahara <mtakahar@yahoo.com>
* Copyright (C) 2005 by Oleg I. Vdovikin <oleg@cs.msu.su>
*
* The image_header structure has been taken from the U-Boot project.
* (C) Copyright 2008 Semihalf
* (C) Copyright 2000-2005
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*/
#include <stddef.h>
#include <stdint.h>
#include "config.h"
#include "cache.h"
#include "printf.h"
#include "LzmaDecode.h"
#define AR71XX_FLASH_START 0x1f000000
#define AR71XX_FLASH_END 0x1fe00000
#define KSEG0 0x80000000
#define KSEG1 0xa0000000
#define KSEG1ADDR(a) ((((unsigned)(a)) & 0x1fffffffU) | KSEG1)
#undef LZMA_DEBUG
#ifdef LZMA_DEBUG
# define DBG(f, a...) printf(f, ## a)
#else
# define DBG(f, a...) do {} while (0)
#endif
#define IH_MAGIC_OKLI 0x4f4b4c49 /* 'OKLI' */
#define IH_NMLEN 32 /* Image Name Length */
typedef struct image_header {
uint32_t ih_magic; /* Image Header Magic Number */
uint32_t ih_hcrc; /* Image Header CRC Checksum */
uint32_t ih_time; /* Image Creation Timestamp */
uint32_t ih_size; /* Image Data Size */
uint32_t ih_load; /* Data Load Address */
uint32_t ih_ep; /* Entry Point Address */
uint32_t ih_dcrc; /* Image Data CRC Checksum */
uint8_t ih_os; /* Operating System */
uint8_t ih_arch; /* CPU architecture */
uint8_t ih_type; /* Image Type */
uint8_t ih_comp; /* Compression Type */
uint8_t ih_name[IH_NMLEN]; /* Image Name */
} image_header_t;
/* beyond the image end, size not known in advance */
extern unsigned char workspace[];
extern void board_init(void);
static CLzmaDecoderState lzma_state;
static unsigned char *lzma_data;
static unsigned long lzma_datasize;
static unsigned long lzma_outsize;
static unsigned long kernel_la;
#ifdef CONFIG_KERNEL_CMDLINE
#define kernel_argc 2
static const char kernel_cmdline[] = CONFIG_KERNEL_CMDLINE;
static const char *const kernel_argv[] = {
NULL,
kernel_cmdline,
NULL,
};
#endif /* CONFIG_KERNEL_CMDLINE */
static void halt(void)
{
printf("\nSystem halted!\n");
for(;;);
}
static __inline__ unsigned long get_be32(void *buf)
{
unsigned char *p = buf;
return (((unsigned long) p[0] << 24) +
((unsigned long) p[1] << 16) +
((unsigned long) p[2] << 8) +
(unsigned long) p[3]);
}
static __inline__ unsigned char lzma_get_byte(void)
{
unsigned char c;
lzma_datasize--;
c = *lzma_data++;
return c;
}
static int lzma_init_props(void)
{
unsigned char props[LZMA_PROPERTIES_SIZE];
int res;
int i;
/* read lzma properties */
for (i = 0; i < LZMA_PROPERTIES_SIZE; i++)
props[i] = lzma_get_byte();
/* read the lower half of uncompressed size in the header */
lzma_outsize = ((SizeT) lzma_get_byte()) +
((SizeT) lzma_get_byte() << 8) +
((SizeT) lzma_get_byte() << 16) +
((SizeT) lzma_get_byte() << 24);
/* skip rest of the header (upper half of uncompressed size) */
for (i = 0; i < 4; i++)
lzma_get_byte();
res = LzmaDecodeProperties(&lzma_state.Properties, props,
LZMA_PROPERTIES_SIZE);
return res;
}
static int lzma_decompress(unsigned char *outStream)
{
SizeT ip, op;
int ret;
lzma_state.Probs = (CProb *) workspace;
ret = LzmaDecode(&lzma_state, lzma_data, lzma_datasize, &ip, outStream,
lzma_outsize, &op);
if (ret != LZMA_RESULT_OK) {
int i;
DBG("LzmaDecode error %d at %08x, osize:%d ip:%d op:%d\n",
ret, lzma_data + ip, lzma_outsize, ip, op);
for (i = 0; i < 16; i++)
DBG("%02x ", lzma_data[ip + i]);
DBG("\n");
}
return ret;
}
#if (LZMA_WRAPPER)
static void lzma_init_data(void)
{
extern unsigned char _lzma_data_start[];
extern unsigned char _lzma_data_end[];
kernel_la = LOADADDR;
lzma_data = _lzma_data_start;
lzma_datasize = _lzma_data_end - _lzma_data_start;
}
#else
static void lzma_init_data(void)
{
struct image_header *hdr = NULL;
unsigned char *flash_base;
unsigned long flash_ofs;
unsigned long kernel_ofs;
unsigned long kernel_size;
flash_base = (unsigned char *) KSEG1ADDR(AR71XX_FLASH_START);
printf("Looking for OpenWrt image... ");
for (flash_ofs = CONFIG_FLASH_OFFS;
flash_ofs <= (CONFIG_FLASH_OFFS + CONFIG_FLASH_MAX);
flash_ofs += CONFIG_FLASH_STEP) {
unsigned long magic;
unsigned char *p;
p = flash_base + flash_ofs;
magic = get_be32(p);
if (magic == IH_MAGIC_OKLI) {
hdr = (struct image_header *) p;
break;
}
}
if (hdr == NULL) {
printf("not found!\n");
halt();
}
printf("found at 0x%08x\n", flash_base + flash_ofs);
kernel_ofs = sizeof(struct image_header);
kernel_size = get_be32(&hdr->ih_size);
kernel_la = get_be32(&hdr->ih_load);
lzma_data = flash_base + flash_ofs + kernel_ofs;
lzma_datasize = kernel_size;
}
#endif /* (LZMA_WRAPPER) */
void loader_main(unsigned long reg_a0, unsigned long reg_a1,
unsigned long reg_a2, unsigned long reg_a3)
{
void (*kernel_entry) (unsigned long, unsigned long, unsigned long,
unsigned long);
int res;
board_init();
printf("\n\nOpenWrt kernel loader for AR7XXX/AR9XXX\n");
printf("Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>\n");
lzma_init_data();
res = lzma_init_props();
if (res != LZMA_RESULT_OK) {
printf("Incorrect LZMA stream properties!\n");
halt();
}
printf("Decompressing kernel... ");
res = lzma_decompress((unsigned char *) kernel_la);
if (res != LZMA_RESULT_OK) {
printf("failed, ");
switch (res) {
case LZMA_RESULT_DATA_ERROR:
printf("data error!\n");
break;
default:
printf("unknown error %d!\n", res);
}
halt();
} else {
printf("done!\n");
}
flush_cache(kernel_la, lzma_outsize);
printf("Starting kernel at %08x...\n\n", kernel_la);
#ifdef CONFIG_KERNEL_CMDLINE
reg_a0 = kernel_argc;
reg_a1 = (unsigned long) kernel_argv;
reg_a2 = 0;
reg_a3 = 0;
#endif
kernel_entry = (void *) kernel_la;
kernel_entry(reg_a0, reg_a1, reg_a2, reg_a3);
}

View File

@@ -0,0 +1,34 @@
OUTPUT_ARCH(mips)
SECTIONS {
.text : {
_code_start = .;
*(.text)
*(.text.*)
*(.rodata)
*(.rodata.*)
*(.data.lzma)
}
. = ALIGN(32);
.data : {
*(.data)
*(.data.*)
}
. = ALIGN(32);
_code_end = .;
_bss_start = .;
.bss : {
*(.bss)
*(.bss.*)
}
. = ALIGN(32);
_bss_end = .;
. = . + 8192;
_stack = .;
workspace = .;
}

View File

@@ -0,0 +1,10 @@
OUTPUT_ARCH(mips)
SECTIONS {
.text : {
startup = .;
*(.text)
*(.text.*)
*(.data)
*(.data.*)
}
}

View File

@@ -0,0 +1,8 @@
OUTPUT_ARCH(mips)
SECTIONS {
.data.lzma : {
_lzma_data_start = .;
*(.data)
_lzma_data_end = .;
}
}

View File

@@ -0,0 +1,350 @@
/*
* Copyright (C) 2001 MontaVista Software Inc.
* Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
*/
#include "printf.h"
extern void board_putc(int ch);
/* this is the maximum width for a variable */
#define LP_MAX_BUF 256
/* macros */
#define IsDigit(x) ( ((x) >= '0') && ((x) <= '9') )
#define Ctod(x) ( (x) - '0')
/* forward declaration */
static int PrintChar(char *, char, int, int);
static int PrintString(char *, char *, int, int);
static int PrintNum(char *, unsigned long, int, int, int, int, char, int);
/* private variable */
static const char theFatalMsg[] = "fatal error in lp_Print!";
/* -*-
* A low level printf() function.
*/
static void
lp_Print(void (*output)(void *, char *, int),
void * arg,
char *fmt,
va_list ap)
{
#define OUTPUT(arg, s, l) \
{ if (((l) < 0) || ((l) > LP_MAX_BUF)) { \
(*output)(arg, (char*)theFatalMsg, sizeof(theFatalMsg)-1); for(;;); \
} else { \
(*output)(arg, s, l); \
} \
}
char buf[LP_MAX_BUF];
char c;
char *s;
long int num;
int longFlag;
int negFlag;
int width;
int prec;
int ladjust;
char padc;
int length;
for(;;) {
{
/* scan for the next '%' */
char *fmtStart = fmt;
while ( (*fmt != '\0') && (*fmt != '%')) {
fmt ++;
}
/* flush the string found so far */
OUTPUT(arg, fmtStart, fmt-fmtStart);
/* are we hitting the end? */
if (*fmt == '\0') break;
}
/* we found a '%' */
fmt ++;
/* check for long */
if (*fmt == 'l') {
longFlag = 1;
fmt ++;
} else {
longFlag = 0;
}
/* check for other prefixes */
width = 0;
prec = -1;
ladjust = 0;
padc = ' ';
if (*fmt == '-') {
ladjust = 1;
fmt ++;
}
if (*fmt == '0') {
padc = '0';
fmt++;
}
if (IsDigit(*fmt)) {
while (IsDigit(*fmt)) {
width = 10 * width + Ctod(*fmt++);
}
}
if (*fmt == '.') {
fmt ++;
if (IsDigit(*fmt)) {
prec = 0;
while (IsDigit(*fmt)) {
prec = prec*10 + Ctod(*fmt++);
}
}
}
/* check format flag */
negFlag = 0;
switch (*fmt) {
case 'b':
if (longFlag) {
num = va_arg(ap, long int);
} else {
num = va_arg(ap, int);
}
length = PrintNum(buf, num, 2, 0, width, ladjust, padc, 0);
OUTPUT(arg, buf, length);
break;
case 'd':
case 'D':
if (longFlag) {
num = va_arg(ap, long int);
} else {
num = va_arg(ap, int);
}
if (num < 0) {
num = - num;
negFlag = 1;
}
length = PrintNum(buf, num, 10, negFlag, width, ladjust, padc, 0);
OUTPUT(arg, buf, length);
break;
case 'o':
case 'O':
if (longFlag) {
num = va_arg(ap, long int);
} else {
num = va_arg(ap, int);
}
length = PrintNum(buf, num, 8, 0, width, ladjust, padc, 0);
OUTPUT(arg, buf, length);
break;
case 'u':
case 'U':
if (longFlag) {
num = va_arg(ap, long int);
} else {
num = va_arg(ap, int);
}
length = PrintNum(buf, num, 10, 0, width, ladjust, padc, 0);
OUTPUT(arg, buf, length);
break;
case 'x':
if (longFlag) {
num = va_arg(ap, long int);
} else {
num = va_arg(ap, int);
}
length = PrintNum(buf, num, 16, 0, width, ladjust, padc, 0);
OUTPUT(arg, buf, length);
break;
case 'X':
if (longFlag) {
num = va_arg(ap, long int);
} else {
num = va_arg(ap, int);
}
length = PrintNum(buf, num, 16, 0, width, ladjust, padc, 1);
OUTPUT(arg, buf, length);
break;
case 'c':
c = (char)va_arg(ap, int);
length = PrintChar(buf, c, width, ladjust);
OUTPUT(arg, buf, length);
break;
case 's':
s = (char*)va_arg(ap, char *);
length = PrintString(buf, s, width, ladjust);
OUTPUT(arg, buf, length);
break;
case '\0':
fmt --;
break;
default:
/* output this char as it is */
OUTPUT(arg, fmt, 1);
} /* switch (*fmt) */
fmt ++;
} /* for(;;) */
/* special termination call */
OUTPUT(arg, "\0", 1);
}
/* --------------- local help functions --------------------- */
static int
PrintChar(char * buf, char c, int length, int ladjust)
{
int i;
if (length < 1) length = 1;
if (ladjust) {
*buf = c;
for (i=1; i< length; i++) buf[i] = ' ';
} else {
for (i=0; i< length-1; i++) buf[i] = ' ';
buf[length - 1] = c;
}
return length;
}
static int
PrintString(char * buf, char* s, int length, int ladjust)
{
int i;
int len=0;
char* s1 = s;
while (*s1++) len++;
if (length < len) length = len;
if (ladjust) {
for (i=0; i< len; i++) buf[i] = s[i];
for (i=len; i< length; i++) buf[i] = ' ';
} else {
for (i=0; i< length-len; i++) buf[i] = ' ';
for (i=length-len; i < length; i++) buf[i] = s[i-length+len];
}
return length;
}
static int
PrintNum(char * buf, unsigned long u, int base, int negFlag,
int length, int ladjust, char padc, int upcase)
{
/* algorithm :
* 1. prints the number from left to right in reverse form.
* 2. fill the remaining spaces with padc if length is longer than
* the actual length
* TRICKY : if left adjusted, no "0" padding.
* if negtive, insert "0" padding between "0" and number.
* 3. if (!ladjust) we reverse the whole string including paddings
* 4. otherwise we only reverse the actual string representing the num.
*/
int actualLength =0;
char *p = buf;
int i;
do {
int tmp = u %base;
if (tmp <= 9) {
*p++ = '0' + tmp;
} else if (upcase) {
*p++ = 'A' + tmp - 10;
} else {
*p++ = 'a' + tmp - 10;
}
u /= base;
} while (u != 0);
if (negFlag) {
*p++ = '-';
}
/* figure out actual length and adjust the maximum length */
actualLength = p - buf;
if (length < actualLength) length = actualLength;
/* add padding */
if (ladjust) {
padc = ' ';
}
if (negFlag && !ladjust && (padc == '0')) {
for (i = actualLength-1; i< length-1; i++) buf[i] = padc;
buf[length -1] = '-';
} else {
for (i = actualLength; i< length; i++) buf[i] = padc;
}
/* prepare to reverse the string */
{
int begin = 0;
int end;
if (ladjust) {
end = actualLength - 1;
} else {
end = length -1;
}
while (end > begin) {
char tmp = buf[begin];
buf[begin] = buf[end];
buf[end] = tmp;
begin ++;
end --;
}
}
/* adjust the string pointer */
return length;
}
static void printf_output(void *arg, char *s, int l)
{
int i;
// special termination call
if ((l==1) && (s[0] == '\0')) return;
for (i=0; i< l; i++) {
board_putc(s[i]);
if (s[i] == '\n') board_putc('\r');
}
}
void printf(char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
lp_Print(printf_output, 0, fmt, ap);
va_end(ap);
}

View File

@@ -0,0 +1,18 @@
/*
* Copyright (C) 2001 MontaVista Software Inc.
* Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
*/
#ifndef _printf_h_
#define _printf_h_
#include <stdarg.h>
void printf(char *fmt, ...);
#endif /* _printf_h_ */

View File

@@ -0,0 +1,61 @@
define Device/mikrotik
PROFILES := Default
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-usb-ledtrig-usbport
BOARD_NAME := routerboard
LOADER_TYPE := elf
KERNEL_NAME := vmlinux.bin.lzma
KERNEL := kernel-bin | loader-kernel
KERNEL_INITRAMFS_NAME := vmlinux-initramfs.bin.lzma
MIKROTIK_CHUNKSIZE :=
IMAGE/sysupgrade.bin/squashfs :=
endef
DEVICE_VARS += MIKROTIK_CHUNKSIZE
define Device/mikrotik-nand
$(Device/mikrotik)
IMAGE/sysupgrade.bin/squashfs = append-kernel | \
kernel2minor -s $$(MIKROTIK_CHUNKSIZE) -e -c | sysupgrade-tar kernel=$$$$@
endef
define Device/nand-64m
$(Device/mikrotik-nand)
MIKROTIK_CHUNKSIZE := 512
DEVICE_TITLE := MikroTik RouterBoard (64 MB NAND)
endef
TARGET_DEVICES += nand-64m
define Device/nand-large
$(Device/mikrotik-nand)
MIKROTIK_CHUNKSIZE := 2048
DEVICE_TITLE := MikroTik RouterBoard (>= 128 MB NAND)
endef
TARGET_DEVICES += nand-large
define Device/nand-large-ac
$(Device/mikrotik-nand)
MIKROTIK_CHUNKSIZE := 2048
DEVICE_TITLE := MikroTik RouterBoard (>= 128 MB NAND, 802.11ac)
DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct
SUPPORTED_DEVICES := rb-921gs-5hpacd-r2 rb-922uags-5hpacd
endef
TARGET_DEVICES += nand-large-ac
define Device/rb-nor-flash-16M
$(Device/mikrotik)
DEVICE_TITLE := MikroTik RouterBoard (16 MB SPI NOR)
DEVICE_PACKAGES := rbcfg rssileds -nand-utils kmod-ledtrig-gpio
IMAGE_SIZE := 16000k
KERNEL_INSTALL := 1
SUPPORTED_DEVICES := rb-750-r2 rb-750up-r2 rb-750p-pbr2 rb-911-2hn rb-911-5hn rb-931-2nd rb-941-2nd rb-951ui-2nd rb-952ui-5ac2nd rb-962uigs-5hact2hnt rb-lhg-5nd rb-map-2nd rb-mapl-2nd rb-wap-2nd rb-wapr-2nd rb-sxt-2nd-r3
IMAGE/sysupgrade.bin := append-kernel | kernel2minor -s 1024 -e | pad-to $$$$(BLOCKSIZE) | \
append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
endef
TARGET_DEVICES += rb-nor-flash-16M
define Device/rb-nor-flash-16M-ac
$(Device/rb-nor-flash-16M)
DEVICE_TITLE := MikroTik RouterBoard (16 MB SPI NOR, 802.11ac)
DEVICE_PACKAGES += kmod-ath10k-ct-smallbuffers ath10k-firmware-qca988x-ct ath10k-firmware-qca9887-ct kmod-usb-ehci
SUPPORTED_DEVICES += rb-wapg-5hact2hnd
endef
TARGET_DEVICES += rb-nor-flash-16M-ac

View File

@@ -0,0 +1,137 @@
define Build/MerakiNAND
-$(STAGING_DIR_HOST)/bin/mkmerakifw \
-B $(BOARDNAME) -s \
-i $@ \
-o $@.new
@mv $@.new $@
endef
define Build/MerakiNAND-old
-$(STAGING_DIR_HOST)/bin/mkmerakifw-old \
-B $(BOARDNAME) -s \
-i $@ \
-o $@.new
@mv $@.new $@
endef
define Device/c-60
DEVICE_TITLE := AirTight C-60
DEVICE_PACKAGES := kmod-spi-gpio kmod-usb-core kmod-usb2 kmod-ath9k
BOARDNAME := C-60
BLOCKSIZE := 64k
KERNEL_SIZE := 3648k
IMAGE_SIZE := 32m
IMAGES := sysupgrade.tar
MTDPARTS := spi0.0:256k(u-boot)ro,128k(u-boot-env)ro,3648k(kernel),64k(art)ro;ar934x-nfc:32m(ubi)
KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma
IMAGE/sysupgrade.tar := sysupgrade-tar
endef
TARGET_DEVICES += c-60
define Device/domywifi-dw33d
DEVICE_TITLE := DomyWifi DW33D
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage kmod-usb-ledtrig-usbport kmod-ath10k-ct ath10k-firmware-qca988x-ct
BOARDNAME := DW33D
IMAGE_SIZE := 16000k
MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14528k(rootfs),1472k(kernel),64k(art)ro,16000k@0x50000(firmware);ar934x-nfc:96m(rootfs_data),32m(backup)ro
IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 14528k | append-kernel | check-size $$$$(IMAGE_SIZE)
endef
TARGET_DEVICES += domywifi-dw33d
define Device/hiveap-121
DEVICE_TITLE := Aerohive HiveAP-121
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-i2c-gpio-custom kmod-spi-gpio kmod-ath9k kmod-tpm-i2c-atmel
BOARDNAME := HiveAP-121
BLOCKSIZE := 128k
PAGESIZE := 2048
IMAGE_SIZE := 115m
KERNEL_SIZE := 5120k
UBINIZE_OPTS := -E 5
CONSOLE := ttyS0,9600
MTDPARTS := spi0.0:512k(u-boot)ro,64k(u-boot-env),64k(hw-info)ro,64k(boot-info)ro,64k(boot-sinfo)ro;ar934x-nfc:4096k(u-boot-1),4096k(u-boot-env-1),5m(kernel),111m(ubi),4096k(wifi-info)ro
IMAGES := sysupgrade.tar factory.bin
KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | check-size $$$$(IMAGE_SIZE)
IMAGE/sysupgrade.tar := sysupgrade-tar
endef
TARGET_DEVICES += hiveap-121
define Device/mr18
DEVICE_TITLE := Meraki MR18
DEVICE_PACKAGES := kmod-spi-gpio kmod-ath9k
BOARDNAME := MR18
BLOCKSIZE := 64k
MTDPARTS := ar934x-nfc:512k(nandloader)ro,8M(kernel),8M(recovery),113664k(ubi),128k@130944k(odm-caldata)ro
IMAGES := sysupgrade.tar
KERNEL := kernel-bin | patch-cmdline | MerakiNAND
KERNEL_INITRAMFS := kernel-bin | patch-cmdline | MerakiNAND
IMAGE/sysupgrade.tar := sysupgrade-tar
endef
TARGET_DEVICES += mr18
define Device/rambutan
DEVICE_TITLE := 8devices Rambutan
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
BOARDNAME := RAMBUTAN
BLOCKSIZE := 128KiB
MTDPARTS := ar934x-nfc:3M(u-boot)ro,2M(u-boot-env),1M(art),122M(ubi)
PAGESIZE := 2048
KERNEL_IN_UBI := 1
IMAGES := factory.ubi sysupgrade.tar
IMAGE/sysupgrade.tar := sysupgrade-tar
IMAGE/factory.ubi := append-ubi
endef
TARGET_DEVICES += rambutan
define Device/wi2a-ac200i
SUPPORTED_DEVICES = $(1)
DEVICE_TITLE := Nokia WI2A-AC200i
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath9k kmod-ath10k-ct ath10k-firmware-qca988x-ct
BOARDNAME := WI2A-AC200i
BLOCKSIZE := 64k
KERNEL_SIZE := 3648k
IMAGE_SIZE := 32m
IMAGES := sysupgrade.tar
MTDPARTS := spi0.0:256k(u-boot)ro,64k(envFacA)ro,64k(envFacB)ro,64k(ART)ro,128k(u-boot-env)
KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma
IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata
endef
TARGET_DEVICES += wi2a-ac200i
define Device/z1
DEVICE_TITLE := Meraki Z1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-spi-gpio kmod-ath9k kmod-owl-loader
BOARDNAME := Z1
BLOCKSIZE := 64k
MTDPARTS := ar934x-nfc:128K(loader1)ro,8064K(kernel),128K(loader2)ro,8064K(recovery),114560K(ubi),128K(origcaldata)ro
IMAGES := sysupgrade.tar
KERNEL := kernel-bin | patch-cmdline | MerakiNAND-old
KERNEL_INITRAMFS := kernel-bin | patch-cmdline | MerakiNAND-old
IMAGE/sysupgrade.tar := sysupgrade-tar
endef
TARGET_DEVICES += z1
define LegacyDevice/R6100
DEVICE_TITLE := NETGEAR R6100
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += R6100
define LegacyDevice/WNDR3700V4
DEVICE_TITLE := NETGEAR WNDR3700v4
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += WNDR3700V4
define LegacyDevice/WNDR4300V1
DEVICE_TITLE := NETGEAR WNDR4300v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
endef
LEGACY_DEVICES += WNDR4300V1
define LegacyDevice/NBG6716
DEVICE_TITLE := Zyxel NBG 6716
DEVICE_PACKAGES := kmod-rtc-pcf8563 kmod-ath10k-ct ath10k-firmware-qca988x-ct
endef
LEGACY_DEVICES += NBG6716

View File

@@ -0,0 +1,164 @@
define LegacyDevice/F9K1115V2
DEVICE_TITLE := Belkin AC1750DB (F9K1115V2)
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb3 kmod-usb-ledtrig-usbport \
kmod-ath10k-ct ath10k-firmware-qca988x-ct
endef
LEGACY_DEVICES += F9K1115V2
define LegacyDevice/DIR600A1
DEVICE_TITLE := D-Link DIR-600 rev. A1
endef
LEGACY_DEVICES += DIR600A1
define LegacyDevice/DIR601A1
DEVICE_TITLE := D-Link DIR-601 rev. A1
endef
LEGACY_DEVICES += DIR601A1
define LegacyDevice/FR54RTR
DEVICE_TITLE := Frys FR-54RTR
endef
LEGACY_DEVICES += FR54RTR
define LegacyDevice/EBR2310C1
DEVICE_TITLE := D-Link EBR-2310 rev. C1
endef
LEGACY_DEVICES += EBR2310C1
define LegacyDevice/DIR615E1
DEVICE_TITLE := D-Link DIR-615 rev. E1
endef
LEGACY_DEVICES += DIR615E1
define LegacyDevice/DIR615E4
DEVICE_TITLE := D-Link DIR-615 rev. E4
endef
LEGACY_DEVICES += DIR615E4
define LegacyDevice/DIR615I1
DEVICE_TITLE := D-Link DIR-615 rev. I1
endef
LEGACY_DEVICES += DIR615I1
define LegacyDevice/DIR615I3
DEVICE_TITLE := D-Link DIR-615 rev. I3
endef
LEGACY_DEVICES += DIR615I3
define LegacyDevice/A02RBW300N
DEVICE_TITLE := Atlantis-Land A02-RB-W300N
endef
LEGACY_DEVICES += A02RBW300N
define LegacyDevice/DIR615C1
DEVICE_TITLE := D-Link DIR-615 rev. C1
endef
LEGACY_DEVICES += DIR615C1
define LegacyDevice/TEW632BRP
DEVICE_TITLE := TRENDNet TEW-632BRP
endef
LEGACY_DEVICES += TEW632BRP
define LegacyDevice/TEW652BRP_FW
DEVICE_TITLE := TRENDNet TEW-652BRP
endef
LEGACY_DEVICES += TEW652BRP_FW
define LegacyDevice/TEW652BRP_RECOVERY
DEVICE_TITLE := TRENDNet TEW-652BRP (recovery)
endef
LEGACY_DEVICES += TEW652BRP_RECOVERY
define LegacyDevice/TEW712BR
DEVICE_TITLE := TRENDNet TEW-712BR
endef
LEGACY_DEVICES += TEW712BR
define LegacyDevice/DIR601B1
DEVICE_TITLE := D-Link DIR-601 rev. B1
endef
LEGACY_DEVICES += DIR601B1
define LegacyDevice/WP543_4M
DEVICE_TITLE := Compex WP543/WPJ543 (4MB flash)
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2
endef
LEGACY_DEVICES += WP543_4M
define LegacyDevice/WPE72_4M
DEVICE_TITLE := Compex WPE72/WPE72NX (4MB flash)
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2
endef
LEGACY_DEVICES += WPE72_4M
define LegacyDevice/WNR2000
DEVICE_TITLE := NETGEAR WNR2000V1
endef
LEGACY_DEVICES += WNR2000
define LegacyDevice/WNR2000V3
DEVICE_TITLE := NETGEAR WNR2000V3
endef
LEGACY_DEVICES += WNR2000V3
define LegacyDevice/WNR2000V4
DEVICE_TITLE := NETGEAR WNR2000V4
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
DEFAULT := n
endef
LEGACY_DEVICES += WNR2000V4
define LegacyDevice/REALWNR612V2
DEVICE_TITLE := NETGEAR WNR612V2
DEFAULT := n
endef
LEGACY_DEVICES += REALWNR612V2
define LegacyDevice/N150R
DEVICE_TITLE := On Networks N150
DEFAULT := n
endef
LEGACY_DEVICES += N150R
define LegacyDevice/REALWNR1000V2
DEVICE_TITLE := NETGEAR WNR1000V2
endef
LEGACY_DEVICES += REALWNR1000V2
define LegacyDevice/WNR1000V2_VC
DEVICE_TITLE := NETGEAR WNR1000V2-VC
endef
LEGACY_DEVICES += WNR1000V2_VC
define LegacyDevice/WPN824N
DEVICE_TITLE := NETGEAR WPN824N
endef
LEGACY_DEVICES += WPN824N
define LegacyDevice/WHRG301N
DEVICE_TITLE := Buffalo WHR-G301N
endef
LEGACY_DEVICES += WHRG301N
define LegacyDevice/WHRHPG300N
DEVICE_TITLE := Buffalo WHR-HP-G300N
endef
LEGACY_DEVICES += WHRHPG300N
define LegacyDevice/WHRHPGN
DEVICE_TITLE := Buffalo WHR-HP-GN
endef
LEGACY_DEVICES += WHRHPGN
define LegacyDevice/WLAEAG300N
DEVICE_TITLE := Buffalo WLAE-AG300N
DEVICE_PACKAGES := kmod-ledtrig-netdev
endef
LEGACY_DEVICES += WLAEAG300N
define LegacyDevice/NBG_460N_550N_550NH
DEVICE_TITLE := ZyXEL NBG 460N/550N/550NH
DEVICE_PACKAGES := kmod-rtc-pcf8563
endef
LEGACY_DEVICES += NBG_460N_550N_550NH

View File

@@ -0,0 +1,28 @@
define Build/senao-factory-image
mkdir -p $@.senao
touch $@.senao/FWINFO-OpenWrt-$(REVISION)-$(1)
$(CP) $(IMAGE_KERNEL) $@.senao/openwrt-senao-$(1)-uImage-lzma.bin
$(CP) $@ $@.senao/openwrt-senao-$(1)-root.squashfs
$(TAR) -c \
--numeric-owner --owner=0 --group=0 --sort=name \
$(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \
-C $@.senao . | gzip -9nc > $@
rm -rf $@.senao
endef
define Device/ens202ext
DEVICE_TITLE := EnGenius ENS202EXT
BOARDNAME := ENS202EXT
DEVICE_PACKAGES := rssileds
KERNEL_SIZE := 1536k
IMAGE_SIZE := 13632k
IMAGES += factory.bin
MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),320k(custom)ro,1536k(kernel),12096k(rootfs),2048k(failsafe)ro,64k(art)ro,13632k@0xa0000(firmware)
IMAGE/factory.bin := append-rootfs | pad-rootfs | senao-factory-image ens202ext
IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
endef
TARGET_DEVICES += ens202ext

View File

@@ -0,0 +1,699 @@
include ./common-tp-link.mk
define Device/tl-mr10u-v1
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-MR10U v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
BOARDNAME := TL-MR10U
DEVICE_PROFILE := TLMR10U
TPLINK_HWID := 0x00100101
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-mr10u-v1
define Device/tl-mr11u-v1
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-MR11U v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-MR11U
DEVICE_PROFILE := TLMR11U
TPLINK_HWID := 0x00110101
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-mr11u-v1
define Device/tl-mr11u-v2
$(Device/tl-mr11u-v1)
DEVICE_TITLE := TP-LINK TL-MR11U v2
TPLINK_HWID := 0x00110102
endef
TARGET_DEVICES += tl-mr11u-v2
define Device/tl-mr12u-v1
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-MR12U v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-MR13U
DEVICE_PROFILE := TLMR12U
TPLINK_HWID := 0x00120101
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-mr12u-v1
define Device/tl-mr13u-v1
$(Device/tl-mr12u-v1)
DEVICE_TITLE := TP-LINK TL-MR13U v1
DEVICE_PROFILE := TLMR13U
TPLINK_HWID := 0x00130101
endef
TARGET_DEVICES += tl-mr13u-v1
define Device/tl-mr3020-v1
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-MR3020 v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-MR3020
DEVICE_PROFILE := TLMR3020
TPLINK_HWID := 0x30200001
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-mr3020-v1
define Device/tl-mr3040-v1
$(Device/tl-mr3020-v1)
DEVICE_TITLE := TP-LINK TL-MR3040 v1
BOARDNAME := TL-MR3040
DEVICE_PROFILE := TLMR3040
TPLINK_HWID := 0x30400001
endef
TARGET_DEVICES += tl-mr3040-v1
define Device/tl-mr3040-v2
$(Device/tl-mr3040-v1)
DEVICE_TITLE := TP-LINK TL-MR3040 v2
BOARDNAME := TL-MR3040-v2
TPLINK_HWID := 0x30400002
endef
TARGET_DEVICES += tl-mr3040-v2
define Device/tl-mr3220-v1
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-MR3220 v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-MR3220
DEVICE_PROFILE := TLMR3220
TPLINK_HWID := 0x32200001
endef
TARGET_DEVICES += tl-mr3220-v1
define Device/tl-mr3220-v2
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-MR3220 v2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-MR3220-v2
DEVICE_PROFILE := TLMR3220
TPLINK_HWID := 0x32200002
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-mr3220-v2
define Device/tl-mr3420-v1
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-MR3420 v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-MR3420
DEVICE_PROFILE := TLMR3420
TPLINK_HWID := 0x34200001
endef
TARGET_DEVICES += tl-mr3420-v1
define Device/tl-mr3420-v2
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-MR3420 v2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-MR3420-v2
DEVICE_PROFILE := TLMR3420
TPLINK_HWID := 0x34200002
endef
TARGET_DEVICES += tl-mr3420-v2
define Device/tl-wa701nd-v1
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WA701N/ND v1
BOARDNAME := TL-WA901ND
DEVICE_PROFILE := TLWA701
TPLINK_HWID := 0x07010001
endef
TARGET_DEVICES += tl-wa701nd-v1
define Device/tl-wa701nd-v2
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WA701N/ND v2
BOARDNAME := TL-WA701ND-v2
DEVICE_PROFILE := TLWA701
TPLINK_HWID := 0x07010002
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-wa701nd-v2
define Device/tl-wa7210n-v2
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WA7210N v2
DEVICE_PACKAGES := rssileds kmod-ledtrig-netdev
BOARDNAME := TL-WA7210N-v2
DEVICE_PROFILE := TLWA7210
TPLINK_HWID := 0x72100002
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-wa7210n-v2
define Device/tl-wa730re-v1
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WA730RE v1
BOARDNAME := TL-WA901ND
DEVICE_PROFILE := TLWA730RE
TPLINK_HWID := 0x07300001
endef
TARGET_DEVICES += tl-wa730re-v1
define Device/tl-wa750re-v1
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WA750RE v1
DEVICE_PACKAGES := rssileds
BOARDNAME := TL-WA750RE
DEVICE_PROFILE := TLWA750
TPLINK_HWID := 0x07500001
DEFAULT := n
endef
TARGET_DEVICES += tl-wa750re-v1
define Device/tl-wa7510n-v1
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WA7510N v1
BOARDNAME := TL-WA7510N
DEVICE_PROFILE := TLWA7510
TPLINK_HWID := 0x75100001
endef
TARGET_DEVICES += tl-wa7510n-v1
define Device/tl-wa801nd-v1
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WA801N/ND v1
BOARDNAME := TL-WA901ND
DEVICE_PROFILE := TLWA801
TPLINK_HWID := 0x08010001
endef
TARGET_DEVICES += tl-wa801nd-v1
define Device/tl-wa801nd-v2
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WA801N/ND v2
BOARDNAME := TL-WA801ND-v2
DEVICE_PROFILE := TLWA801
TPLINK_HWID := 0x08010002
endef
TARGET_DEVICES += tl-wa801nd-v2
define Device/tl-wa801nd-v3
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WA801N/ND v3
BOARDNAME := TL-WA801ND-v3
DEVICE_PROFILE := TLWA801
TPLINK_HWID := 0x08010003
endef
TARGET_DEVICES += tl-wa801nd-v3
define Device/tl-wa801nd-v4
$(Device/tl-wa801nd-v3)
DEVICE_TITLE := TP-LINK TL-WA801N/ND v4
TPLINK_HWID := 0x08010004
endef
TARGET_DEVICES += tl-wa801nd-v4
define Device/tl-wa830re-v1
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WA830RE v1
BOARDNAME := TL-WA901ND
DEVICE_PROFILE := TLWA830
TPLINK_HWID := 0x08300010
endef
TARGET_DEVICES += tl-wa830re-v1
define Device/tl-wa830re-v2
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WA830RE v2
BOARDNAME := TL-WA830RE-v2
DEVICE_PROFILE := TLWA830
TPLINK_HWID := 0x08300002
endef
TARGET_DEVICES += tl-wa830re-v2
define Device/tl-wa850re-v1
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WA850RE v1
DEVICE_PACKAGES := rssileds
BOARDNAME := TL-WA850RE
DEVICE_PROFILE := TLWA850
TPLINK_HWID := 0x08500001
DEFAULT := n
endef
TARGET_DEVICES += tl-wa850re-v1
define Device/tl-wa850re-v2
$(Device/tplink-safeloader)
DEVICE_TITLE := TP-LINK TL-WA850RE v2
DEVICE_PACKAGES := rssileds
BOARDNAME := TL-WA850RE-V2
DEVICE_PROFILE := TLWA850
TPLINK_BOARD_ID := TLWA850REV2
TPLINK_HWID := 0x08500002
TPLINK_HWREV := 0
IMAGE_SIZE := 3648k
MTDPARTS := spi0.0:128k(u-boot)ro,1344k(kernel),2304k(rootfs),256k(config)ro,64k(art)ro,3648k@0x20000(firmware)
DEFAULT := n
endef
TARGET_DEVICES += tl-wa850re-v2
define Device/tl-wa855re-v1
$(Device/tplink-safeloader)
DEVICE_TITLE := TP-LINK TL-WA855RE v1
BOARDNAME := TL-WA855RE-v1
DEVICE_PROFILE := TLWA855RE
TPLINK_HWID := 0x08550001
TPLINK_BOARD_ID := TLWA855REV1
TPLINK_HWREV := 0
IMAGE_SIZE := 3648k
MTDPARTS := spi0.0:128k(u-boot)ro,1344k(kernel),2304k(rootfs),256k(config)ro,64k(art)ro,3648k@0x20000(firmware)
DEFAULT := n
endef
TARGET_DEVICES += tl-wa855re-v1
define Device/tl-wa860re-v1
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WA860RE v1
BOARDNAME := TL-WA860RE
DEVICE_PROFILE := TLWA860
TPLINK_HWID := 0x08600001
endef
TARGET_DEVICES += tl-wa860re-v1
define Device/tl-wa901nd-v1
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WA901N/ND v1
BOARDNAME := TL-WA901ND
DEVICE_PROFILE := TLWA901
TPLINK_HWID := 0x09010001
endef
TARGET_DEVICES += tl-wa901nd-v1
define Device/tl-wa901nd-v2
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WA901N/ND v2
BOARDNAME := TL-WA901ND-v2
DEVICE_PROFILE := TLWA901
TPLINK_HWID := 0x09010002
endef
TARGET_DEVICES += tl-wa901nd-v2
define Device/tl-wa901nd-v3
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WA901N/ND v3
BOARDNAME := TL-WA901ND-v3
DEVICE_PROFILE := TLWA901
TPLINK_HWID := 0x09010003
endef
TARGET_DEVICES += tl-wa901nd-v3
define Device/tl-wa901nd-v4
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WA901N/ND v4
BOARDNAME := TL-WA901ND-v4
DEVICE_PROFILE := TLWA901
TPLINK_HWID := 0x09010004
IMAGE/factory.bin := append-rootfs | mktplinkfw factory -C EU
endef
TARGET_DEVICES += tl-wa901nd-v4
define Device/tl-wa901nd-v5
$(Device/tl-wa901nd-v4)
DEVICE_TITLE := TP-LINK TL-WA901N/ND v5
BOARDNAME := TL-WA901ND-v5
TPLINK_HWID := 0x09010005
endef
TARGET_DEVICES += tl-wa901nd-v5
define Device/tl-wdr3320-v2
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WDR3320 v2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
BOARDNAME := TL-WDR3320-v2
DEVICE_PROFILE := TLWDR3320V2
TPLINK_HWID := 0x33200002
TPLINK_HEADER_VERSION := 2
endef
TARGET_DEVICES += tl-wdr3320-v2
define Device/tl-wr1041n-v2
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR1041N v2
BOARDNAME := TL-WR1041N-v2
DEVICE_PROFILE := TLWR1041
TPLINK_HWID := 0x10410002
endef
TARGET_DEVICES += tl-wr1041n-v2
define Device/tl-wr703n-v1
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR703N v1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
BOARDNAME := TL-WR703N
DEVICE_PROFILE := TLWR703
TPLINK_HWID := 0x07030101
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-wr703n-v1
define Device/tl-wr710n-v2
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR710N v2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
BOARDNAME := TL-WR710N
DEVICE_PROFILE := TLWR710
TPLINK_HWID := 0x07100002
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-wr710n-v2
define Device/tl-wr720n-v3
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR720N v3
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
BOARDNAME := TL-WR720N-v3
DEVICE_PROFILE := TLWR720
TPLINK_HWID := 0x07200103
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-wr720n-v3
define Device/tl-wr720n-v4
$(Device/tl-wr720n-v3)
DEVICE_TITLE := TP-LINK TL-WR720N v4
TPLINK_HWID := 0x07200104
endef
TARGET_DEVICES += tl-wr720n-v4
define Device/tl-wr740n-v1
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WR740N/ND v1
BOARDNAME := TL-WR741ND
DEVICE_PROFILE := TLWR740
TPLINK_HWID := 0x07400001
endef
TARGET_DEVICES += tl-wr740n-v1
define Device/tl-wr740n-v3
$(Device/tl-wr740n-v1)
DEVICE_TITLE := TP-LINK TL-WR740N/ND v3
TPLINK_HWID := 0x07400003
endef
TARGET_DEVICES += tl-wr740n-v3
define Device/tl-wr740n-v4
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR740N/ND v4
BOARDNAME := TL-WR741ND-v4
DEVICE_PROFILE := TLWR740
TPLINK_HWID := 0x07400004
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-wr740n-v4
define Device/tl-wr740n-v5
$(Device/tl-wr740n-v4)
DEVICE_TITLE := TP-LINK TL-WR740N/ND v5
TPLINK_HWID := 0x07400005
endef
TARGET_DEVICES += tl-wr740n-v5
define Device/tl-wr740n-v6
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR740N/ND v6
BOARDNAME := TL-WR740N-v6
DEVICE_PROFILE := TLWR740
TPLINK_HWID := 0x07400006
endef
TARGET_DEVICES += tl-wr740n-v6
define Device/tl-wr741nd-v1
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WR741N/ND v1
BOARDNAME := TL-WR741ND
DEVICE_PROFILE := TLWR741
TPLINK_HWID := 0x07410001
endef
TARGET_DEVICES += tl-wr741nd-v1
define Device/tl-wr741nd-v2
$(Device/tl-wr741nd-v1)
DEVICE_TITLE := TP-LINK TL-WR741N/ND v2
endef
TARGET_DEVICES += tl-wr741nd-v2
define Device/tl-wr741nd-v4
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR741N/ND v4
BOARDNAME := TL-WR741ND-v4
DEVICE_PROFILE := TLWR741
TPLINK_HWID := 0x07410004
CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-wr741nd-v4
define Device/tl-wr741nd-v5
$(Device/tl-wr741nd-v4)
DEVICE_TITLE := TP-LINK TL-WR741N/ND v5
TPLINK_HWID := 0x07400005
endef
TARGET_DEVICES += tl-wr741nd-v5
define Device/tl-wr743nd-v1
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WR743N/ND v1
BOARDNAME := TL-WR741ND
DEVICE_PROFILE := TLWR743
TPLINK_HWID := 0x07430001
endef
TARGET_DEVICES += tl-wr743nd-v1
define Device/tl-wr743nd-v2
$(Device/tl-wr741nd-v4)
DEVICE_TITLE := TP-LINK TL-WR743N/ND v2
DEVICE_PROFILE := TLWR743
TPLINK_HWID := 0x07430002
endef
TARGET_DEVICES += tl-wr743nd-v2
define Device/tl-wr802n-v1
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR802N v1
BOARDNAME := TL-WR802N-v1
DEVICE_PROFILE := TLWR802
TPLINK_HWID := 0x08020001
TPLINK_HWREV := 1
endef
TARGET_DEVICES += tl-wr802n-v1
define Device/tl-wr802n-v2
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR802N v2
BOARDNAME := TL-WR802N-v2
DEVICE_PROFILE := TLWR802
TPLINK_HWID := 0x08020002
TPLINK_HWREV := 2
IMAGES += factory-us.bin factory-eu.bin
IMAGE/factory-us.bin := append-rootfs | mktplinkfw factory -C US
IMAGE/factory-eu.bin := append-rootfs | mktplinkfw factory -C EU
endef
TARGET_DEVICES += tl-wr802n-v2
define Device/tl-wr840n-v2
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR840N v2
BOARDNAME := TL-WR840N-v2
DEVICE_PROFILE := TLWR840
TPLINK_HWID := 0x08400002
IMAGES += factory-eu.bin
IMAGE/factory-eu.bin := append-rootfs | mktplinkfw factory -C EU
endef
TARGET_DEVICES += tl-wr840n-v2
define Device/tl-wr840n-v3
$(Device/tl-wr840n-v2)
DEVICE_TITLE := TP-LINK TL-WR840N v3
BOARDNAME := TL-WR840N-v3
TPLINK_HWID := 0x08400003
endef
TARGET_DEVICES += tl-wr840n-v3
define Device/tl-wr841-v1.5
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WR841N/ND v1.5
BOARDNAME := TL-WR841N-v1.5
DEVICE_PROFILE := TLWR841
TPLINK_HWID := 0x08410002
TPLINK_HWREV := 2
endef
TARGET_DEVICES += tl-wr841-v1.5
define Device/tl-wr841-v3
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WR841N/ND v3
BOARDNAME := TL-WR941ND
DEVICE_PROFILE := TLWR841
TPLINK_HWID := 0x08410003
TPLINK_HWREV := 3
endef
TARGET_DEVICES += tl-wr841-v3
define Device/tl-wr841-v5
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WR841N/ND v5
BOARDNAME := TL-WR741ND
DEVICE_PROFILE := TLWR841
TPLINK_HWID := 0x08410005
endef
TARGET_DEVICES += tl-wr841-v5
define Device/tl-wr841-v7
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WR841N/ND v7
BOARDNAME := TL-WR841N-v7
DEVICE_PROFILE := TLWR841
TPLINK_HWID := 0x08410007
endef
TARGET_DEVICES += tl-wr841-v7
define Device/tl-wr841-v8
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR841N/ND v8
BOARDNAME := TL-WR841N-v8
DEVICE_PROFILE := TLWR841
TPLINK_HWID := 0x08410008
endef
TARGET_DEVICES += tl-wr841-v8
define Device/tl-wr841-v9
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR841N/ND v9
BOARDNAME := TL-WR841N-v9
DEVICE_PROFILE := TLWR841
TPLINK_HWID := 0x08410009
endef
TARGET_DEVICES += tl-wr841-v9
define Device/tl-wr841-v10
$(Device/tl-wr841-v9)
DEVICE_TITLE := TP-LINK TL-WR841N/ND v10
TPLINK_HWID := 0x08410010
endef
TARGET_DEVICES += tl-wr841-v10
define Device/tl-wr841-v11
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR841N/ND v11
BOARDNAME := TL-WR841N-v11
DEVICE_PROFILE := TLWR841
TPLINK_HWID := 0x08410011
IMAGES += factory-us.bin factory-eu.bin
IMAGE/factory-us.bin := append-rootfs | mktplinkfw factory -C US
IMAGE/factory-eu.bin := append-rootfs | mktplinkfw factory -C EU
endef
TARGET_DEVICES += tl-wr841-v11
define Device/tl-wr841-v12
$(Device/tl-wr841-v11)
DEVICE_TITLE := TP-LINK TL-WR841N/ND v12
TPLINK_HWID := 0x08410012
endef
TARGET_DEVICES += tl-wr841-v12
define Device/tl-wr843nd-v1
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR843N/ND v1
BOARDNAME := TL-WR841N-v8
DEVICE_PROFILE := TLWR843
TPLINK_HWID := 0x08430001
endef
TARGET_DEVICES += tl-wr843nd-v1
define Device/tl-wr847n-v8
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR847N/ND v8
BOARDNAME := TL-WR841N-v8
DEVICE_PROFILE := TLWR841
TPLINK_HWID := 0x08470008
endef
TARGET_DEVICES += tl-wr847n-v8
define Device/tl-wr940n-v4
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR940N v4
BOARDNAME := TL-WR940N-v4
DEVICE_PROFILE := TLWR941
TPLINK_HWID := 0x09400004
IMAGES += factory-us.bin factory-eu.bin factory-br.bin
IMAGE/factory-us.bin := append-rootfs | mktplinkfw factory -C US
IMAGE/factory-eu.bin := append-rootfs | mktplinkfw factory -C EU
IMAGE/factory-br.bin := append-rootfs | mktplinkfw factory -C BR
endef
TARGET_DEVICES += tl-wr940n-v4
define Device/tl-wr940n-v6
$(Device/tl-wr940n-v4)
DEVICE_TITLE := TP-LINK TL-WR940N v6
BOARDNAME := TL-WR940N-v6
TPLINK_HWID := 0x09400006
endef
TARGET_DEVICES += tl-wr940n-v6
define Device/tl-wr941nd-v2
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WR941N/ND v2
BOARDNAME := TL-WR941ND
DEVICE_PROFILE := TLWR941
TPLINK_HWID := 0x09410002
TPLINK_HWREV := 2
endef
TARGET_DEVICES += tl-wr941nd-v2
define Device/tl-wr941nd-v3
$(Device/tl-wr941nd-v2)
DEVICE_TITLE := TP-LINK TL-WR941N/ND v3
endef
TARGET_DEVICES += tl-wr941nd-v3
define Device/rnx-n360rt
$(Device/tl-wr941nd-v2)
DEVICE_TITLE := Rosewill RNX-N360RT
DEVICE_PROFILE := RNXN360RT
TPLINK_HWREV := 0x00420001
endef
TARGET_DEVICES += rnx-n360rt
define Device/tl-wr941nd-v4
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WR941N/ND v4
BOARDNAME := TL-WR741ND
DEVICE_PROFILE := TLWR941
TPLINK_HWID := 0x09410004
endef
TARGET_DEVICES += tl-wr941nd-v4
define Device/tl-wr941nd-v5
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR941N/ND v5
BOARDNAME := TL-WR941ND-v5
DEVICE_PROFILE := TLWR941
TPLINK_HWID := 0x09410005
endef
TARGET_DEVICES += tl-wr941nd-v5
define Device/tl-wr941nd-v6
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR941N/ND v6
BOARDNAME := TL-WR941ND-v6
DEVICE_PROFILE := TLWR941
TPLINK_HWID := 0x09410006
endef
TARGET_DEVICES += tl-wr941nd-v6
# Chinese version (unlike European) is similar to the TL-WDR3500
define Device/tl-wr941nd-v6-cn
$(Device/tplink-4mlzma)
DEVICE_TITLE := TP-LINK TL-WR941N/ND v6 (CN)
BOARDNAME := TL-WDR3500
DEVICE_PROFILE := TLWR941
TPLINK_HWID := 0x09410006
endef
TARGET_DEVICES += tl-wr941nd-v6-cn

View File

@@ -0,0 +1,31 @@
define Build/mkbuffaloimg
$(STAGING_DIR_HOST)/bin/mkbuffaloimg -B $(BOARDNAME) \
-R $$(($(subst k, * 1024,$(ROOTFS_SIZE)))) \
-K $$(($(subst k, * 1024,$(KERNEL_SIZE)))) \
-i $@ -o $@.new
mv $@.new $@
endef
define Device/bhr-4grv2
DEVICE_TITLE := Buffalo BHR-4GRV2
BOARDNAME := BHR-4GRV2
ROOTFS_SIZE := 14528k
KERNEL_SIZE := 1472k
IMAGE_SIZE := 16000k
MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14528k(rootfs),1472k(kernel),64k(art)ro,16000k@0x50000(firmware)
IMAGES := sysupgrade.bin factory.bin
IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to $$$$(ROOTFS_SIZE) | append-kernel | check-size $$$$(IMAGE_SIZE)
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | mkbuffaloimg
endef
define Device/zbt-we1526
DEVICE_TITLE := Zbtlink ZBT-WE1526
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
BOARDNAME := ZBT-WE1526
IMAGE_SIZE := 16000k
KERNEL_SIZE := 1472k
ROOTFS_SIZE := 14528k
MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14528k(rootfs),1472k(kernel),64k(art)ro,16000k@0x50000(firmware)
IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to $$$$(ROOTFS_SIZE) | append-kernel | check-size $$$$(IMAGE_SIZE)
endef

View File

@@ -0,0 +1,24 @@
[rootfs]
# Volume mode (other option is static)
mode=ubi
# Source image
image=ubi_root.img
# Volume ID in UBI image
vol_id=0
# Allow for dynamic resize
vol_type=dynamic
# Volume name
vol_name=rootfs
[rootfs_data]
# Volume mode (other option is static)
mode=ubi
# Volume ID in UBI image
vol_id=1
# Allow for dynamic resize
vol_type=dynamic
# Volume name
vol_name=rootfs_data
# Autoresize volume at first mount
vol_size=1MiB
vol_flags=autoresize

View File

@@ -0,0 +1,26 @@
[rootfs]
# Volume mode (other option is static)
mode=ubi
# Source image
image=root.squashfs
# Volume ID in UBI image
vol_id=0
# Allow for dynamic resize
vol_type=dynamic
# Volume name
vol_name=rootfs
# Autoresize volume at first mount
# vol_flags=autoresize
[rootfs_data]
# Volume mode (other option is static)
mode=ubi
# Volume ID in UBI image
vol_id=1
# Allow for dynamic resize
vol_type=dynamic
# Volume name
vol_name=rootfs_data
# Autoresize volume at first mount
vol_flags=autoresize
vol_size=1MiB