From 48d8bc4f971ad7795e3162134759caa37900138f Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 9 Jan 2015 15:40:51 +0000 Subject: [PATCH] ramips: add preliminary Archer C20i support Signed-off-by: Felix Fietkau SVN-Revision: 43898 --- target/linux/ramips/base-files/lib/ramips.sh | 3 + .../ramips/base-files/lib/upgrade/platform.sh | 7 ++ target/linux/ramips/dts/ArcherC20i.dts | 111 ++++++++++++++++++ target/linux/ramips/image/Makefile | 31 +++++ target/linux/ramips/mt7620/config-3.14 | 1 + 5 files changed, 153 insertions(+) create mode 100644 target/linux/ramips/dts/ArcherC20i.dts diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh index 59d7418006..540da335c6 100755 --- a/target/linux/ramips/base-files/lib/ramips.sh +++ b/target/linux/ramips/base-files/lib/ramips.sh @@ -58,6 +58,9 @@ ramips_board_detect() { *"ARC FreeStation5") name="freestation5" ;; + *"Archer C20i") + name="c20i" + ;; *"Argus ATP-52B") name="argus-atp52b" ;; diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh index 10892f615d..95cad633a5 100755 --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh @@ -145,6 +145,13 @@ platform_check_image() { } return 0 ;; + c20i) + [ "$magic" != "03000000" ] && { + echo "Invalid image type." + return 1 + } + return 0 + ;; esac echo "Sysupgrade is not yet supported on $board." diff --git a/target/linux/ramips/dts/ArcherC20i.dts b/target/linux/ramips/dts/ArcherC20i.dts new file mode 100644 index 0000000000..a5037c9fc8 --- /dev/null +++ b/target/linux/ramips/dts/ArcherC20i.dts @@ -0,0 +1,111 @@ +/dts-v1/; + +/include/ "mt7620a.dtsi" + +/ { + compatible = "ralink,mt7620a-soc"; + model = "TP-Link Archer C20i"; + + chosen { + bootargs = "console=ttyS0,115200"; + }; + + palmbus@10000000 { + gpio2: gpio@660 { + status = "okay"; + }; + + spi@b00 { + status = "okay"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "en25q64"; + reg = <0 0>; + linux,modalias = "m25p80", "mx25l6405d"; + spi-max-frequency = <10000000>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x20000>; + read-only; + }; + + partition@20000 { + label = "firmware"; + reg = <0x20000 0x7a0000>; + }; + + partition@7c0000 { + label = "config"; + reg = <0x7c0000 0x10000>; + }; + + rom: partition@7d0000 { + label = "rom"; + reg = <0x7d0000 0x10000>; + }; + + partition@7e0000 { + label = "romfile"; + reg = <0x7e0000 0x10000>; + }; + + radio: partition@7f0000 { + label = "radio"; + reg = <0x7f0000 0x10000>; + }; + }; + }; + }; + + pinctrl { + state_default: pinctrl0 { + gpio { + ralink,group = "i2c", "uartf", "rgmii1", "rgmii2", "wled", "nd_sd"; + ralink,function = "gpio"; + }; + }; + }; + + ethernet@10100000 { + pinctrl-names = "default"; + pinctrl-0 = <&ephy_pins>; + + mtd-mac-address = <&rom 0xf100>; + ralink,port-map = "wllll"; + }; + + gsw@10110000 { + ralink,port4 = "ephy"; + }; + + wmac@10180000 { + ralink,mtd-eeprom = <&radio 0>; + }; + + pcie@10140000 { + status = "okay"; + + pcie-bridge { + mt76@0,0 { + reg = <0x0000 0 0 0 0>; + device_type = "pci"; + mediatek,mtd-eeprom = <&radio 32768>; + mediatek,2ghz = <0>; + }; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + }; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <20>; + }; +}; diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile index a48ef934e1..e4effa6f5c 100644 --- a/target/linux/ramips/image/Makefile +++ b/target/linux/ramips/image/Makefile @@ -90,6 +90,23 @@ define MkImageTrx/squashfs $(CP) $(KDIR)/$(output_name) $(BIN_DIR)/$(output_name) endef +define MkImageTpl/squashfs + $(eval output_name=$(IMG_PREFIX)-$(2)-$(1)-$(if $(4),$(4),sysupgrade).bin) + $(STAGING_DIR_HOST)/bin/mktplinkfw2 -V "ver. 2.0" -B "$(2)" -j \ + -o $(KDIR)/$(output_name) \ + -k $(KDIR)/vmlinux-$(1)$(4).bin.lzma \ + -r $(KDIR)/root.$(1) + $(CP) $(KDIR)/$(output_name) $(BIN_DIR)/$(output_name) +endef + +define MkImageTpl/initramfs + $(eval output_name=$(IMG_PREFIX)-$(2)-$(1).bin) + $(STAGING_DIR_HOST)/bin/mktplinkfw2 -V "ver. 2.0" -B "$(2)" -c \ + -o $(KDIR)/$(output_name) \ + -k $(KDIR)/vmlinux-$(1).bin.lzma + $(CP) $(KDIR)/$(output_name) $(BIN_DIR)/$(output_name) +endef + # $(1), lowercase board name like "mt7620a_v22sg" # $(2), DTS filename without .dts extension # $(3), optional filename suffix, e.g. "-initramfs" @@ -124,6 +141,16 @@ define BuildFirmware/OF/trx $(call MkImageTrx/$(1),$(1),$(2),$(4),$(6)) endef +define BuildFirmware/OF/tplink + $(call PatchKernelLzmaDtb,$(1),$(2),$(4)) + $(call MkImageTpl/$(1),$(1),$(2),$(4),$(5)) +endef + +define BuildFirmware/OF/tplink/initramfs + $(call PatchKernelLzmaDtb,$(2),$(3),-initramfs) + $(call MkImageTpl/$(1),$(1),$(2),$(4),$(5)) +endef + # $(1), squashfs/initramfs # $(2), lowercase board name # $(3), DTS filename without .dts extension @@ -154,6 +181,8 @@ BuildFirmware/Default8M/squashfs=$(call BuildFirmware/OF,$(1),$(2),$(3),$(ralink BuildFirmware/Default8M/initramfs=$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4)) BuildFirmware/Trx8M/squashfs=$(call BuildFirmware/OF/trx,$(1),$(2),$(3),$(ralink_default_fw_size_8M),$(4)) BuildFirmware/Trx8M/initramfs=$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4)) +BuildFirmware/Tplink/squashfs=$(call BuildFirmware/OF/tplink,$(1),$(2),$(3),$(4)) +BuildFirmware/Tplink/initramfs=$(call BuildFirmware/OF/tplink/initramfs,$(1),$(2),$(3),$(4)) ralink_default_fw_size_16M=16121856 BuildFirmware/Default16M/squashfs=$(call BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_16M),$(4)) @@ -810,6 +839,7 @@ Image/Build/Profile/WR8305RT=$(call BuildFirmware/Default8M/$(1),$(1),wr8305rt,W Image/Build/Profile/WRTNODE=$(call BuildFirmware/Default16M/$(1),$(1),wrtnode,WRTNODE) Image/Build/Profile/WT3020=$(call BuildFirmware/PorayDualSize/$(1),$(1),wt3020,WT3020) Image/Build/Profile/ZBT-WA05=$(call BuildFirmware/Default8M/$(1),$(1),zbt-wa05,ZBT-WA05) +Image/Build/Profile/ArcherC20i=$(call BuildFirmware/Tplink/$(1),$(1),ArcherC20i,ArcherC20i) ifeq ($(SUBTARGET),mt7620) @@ -836,6 +866,7 @@ define Image/Build/Profile/Default $(call Image/Build/Profile/WRTNODE,$(1)) $(call Image/Build/Profile/WT3020,$(1)) $(call Image/Build/Profile/ZBT-WA05,$(1)) + $(call Image/Build/Profile/ArcherC20i,$(1)) endef endif diff --git a/target/linux/ramips/mt7620/config-3.14 b/target/linux/ramips/mt7620/config-3.14 index e168b0d2db..7e11781139 100644 --- a/target/linux/ramips/mt7620/config-3.14 +++ b/target/linux/ramips/mt7620/config-3.14 @@ -113,6 +113,7 @@ CONFIG_MTD_M25P80=y CONFIG_MTD_NAND_MT7620=y CONFIG_MTD_PHYSMAP=y CONFIG_MTD_SPLIT_FIRMWARE=y +CONFIG_MTD_SPLIT_TPLINK_FW=y CONFIG_MTD_SPLIT_UIMAGE_FW=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEED_PER_CPU_KM=y -- 2.25.1