Message ID | CAD1MEwfxU+pVUBHxFdvMGuHyKnOXvZaPQWu2__FUd2VxBXoJvg@mail.gmail.com |
---|---|
State | Changes Requested |
Headers | show |
Hi, On Sun, Dec 6, 2015 at 3:20 PM, Josh Bendavid <Josh.Bendavid@cern.ch> wrote: > From: Josh Bendavid <joshbendavid@gmail.com> > > Add initial support for Archer C2600 to Makefiles and profiles. This is > sufficient to build a working factory image. Sysupgrade image is not > implemented yet. Currently wired network is working, but > LED's/buttons/wireless are not. Updated to create a separate dts file for > c2600, which is currently identical to the ap148 aside that the sata-related > sections have been removed. > > Signed-off-by: Josh Bendavid <joshbendavid@gmail.com> > --- > > diff --git a/include/image.mk b/include/image.mk > index fd5e3f4..fab3c8a 100644 > --- a/include/image.mk > +++ b/include/image.mk > @@ -327,6 +327,17 @@ define Build/netgear-dni > mv $@.new $@ > endef > > +define Build/tplink-safe > + $(STAGING_DIR_HOST)/bin/tplink-safeloader \ This patch is whitespace broken, please use an email client that doesn't convert tabs to spaces or git-email. > + -B $(TPLINK_BOARD_ID) -V OpenWrt.$(REVISION) \ > + -k $(word 1,$^) \ > + -r $(word 2,$^) \ > + -j \ > + $(if $(findstring sysupgrade,$1),-S) \ > + -o $@.new > + mv $@.new $@ > +endef > + > define Build/fit > $(TOPDIR)/scripts/mkits.sh \ > -D $(DEVICE_NAME) -o $@.its -k $@ \ > diff --git a/target/linux/ipq806x/base-files/etc/board.d/02_network > b/target/linux/ipq806x/base-files/etc/board.d/02_network > index b054230..e000e3d 100755 > --- a/target/linux/ipq806x/base-files/etc/board.d/02_network > +++ b/target/linux/ipq806x/base-files/etc/board.d/02_network > @@ -13,7 +13,8 @@ board=$(ipq806x_board_name) > > case "$board" in > ap148 |\ > -r7500) > +r7500 |\ > +c2600) Please use alphabetical ordering > ucidef_add_switch "switch0" \ > "1:lan" "2:lan" "3:lan" "4:lan" "6@eth1" "5:wan" "0@eth0" > ;; > diff --git a/target/linux/ipq806x/base-files/lib/ipq806x.sh > b/target/linux/ipq806x/base-files/lib/ipq806x.sh > index 5b27bde..262183f 100644 > --- a/target/linux/ipq806x/base-files/lib/ipq806x.sh > +++ b/target/linux/ipq806x/base-files/lib/ipq806x.sh > @@ -23,6 +23,9 @@ ipq806x_board_detect() { > *"R7500") > name="r7500" > ;; > + *"C2600") > + name="c2600" same. > + ;; > esac > > [ -z "$name" ] && name="unknown" > diff --git a/target/linux/ipq806x/image/Makefile > b/target/linux/ipq806x/image/Makefile > index 14cf442..0445914 100644 > --- a/target/linux/ipq806x/image/Makefile > +++ b/target/linux/ipq806x/image/Makefile > @@ -85,6 +85,18 @@ define Device/DniImage > endef > DEVICE_VARS += KERNEL_SIZE NETGEAR_BOARD_ID NETGEAR_HW_ID DEVICE_BLOCK_SIZE > DEVICE_PAGE_SIZE > > +define Device/TpSafeImage > + PROFILES += $$(DEVICE_NAME) > + FILESYSTEMS := squashfs > + KERNEL_SUFFIX := -uImage > + KERNEL = kernel-bin | append-dtb | uImage none > + KERNEL_NAME := zImage > + TPLINK_BOARD_ID := > + IMAGES := factory.bin > + IMAGE/factory.bin := tplink-safe > +endef > +DEVICE_VARS += TPLINK_BOARD_ID > + > define Device/AP148 > $(call Device/FitImage) > $(call Device/UbiFit) > @@ -103,6 +115,15 @@ define Device/AP148-legacy > BOARD_NAME := ap148 > endef > > +define Device/C2600 > + $(call Device/TpSafeImage) > + DEVICE_DTS := qcom-ipq8064-c2600 > + BLOCKSIZE := 128KiB > + PAGESIZE := 2048 > + BOARD_NAME := ap148 This must be the boardname you assign in board_detect. > + TPLINK_BOARD_ID := C2600 > +endef > + > define Device/DB149 > $(call Device/FitImage) > DEVICE_DTS := qcom-ipq8064-db149 > @@ -121,6 +142,6 @@ define Device/R7500 > BOARD_NAME := r7500 > endef > > -TARGET_DEVICES += AP148 AP148-legacy DB149 R7500 > +TARGET_DEVICES += AP148 AP148-legacy C2600 DB149 R7500 > > $(eval $(call BuildImage)) > diff --git > a/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch > b/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch > index e69de29..e750b98 100644 > --- > a/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch > +++ > b/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch > @@ -0,0 +1,246 @@ > +diff -urN a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > +--- a/arch/arm/boot/dts/Makefile 2015-11-25 22:51:15.148899604 +0100 > ++++ b/arch/arm/boot/dts/Makefile 2015-12-06 14:33:31.092396982 +0100 > +@@ -362,6 +362,7 @@ > + qcom-ipq8064-ap148.dtb \ > + qcom-ipq8064-db149.dtb \ > + qcom-ipq8064-r7500.dtb \ > ++ qcom-ipq8064-c2600.dtb \ > + qcom-msm8660-surf.dtb \ > + qcom-msm8960-cdp.dtb \ > + qcom-msm8974-sony-xperia-honami.dtb > +diff -urN a/arch/arm/boot/dts/qcom-ipq8064-c2600.dts > b/arch/arm/boot/dts/qcom-ipq8064-c2600.dts > +--- a/arch/arm/boot/dts/qcom-ipq8064-c2600.dts 1970-01-01 > 01:00:00.000000000 +0100 > ++++ b/arch/arm/boot/dts/qcom-ipq8064-c2600.dts 2015-12-06 > 14:20:05.152365670 +0100 > +@@ -0,0 +1,231 @@ > ++#include "qcom-ipq8064-v1.0.dtsi" > ++ > ++/ { > ++ model = "TP-Link Archer C2600"; > ++ compatible = "tplink,c2600", "qcom,ipq8064"; > ++ > ++ memory@0 { > ++ reg = <0x42000000 0x1e000000>; > ++ device_type = "memory"; > ++ }; > ++ > ++ reserved-memory { > ++ #address-cells = <1>; > ++ #size-cells = <1>; > ++ ranges; > ++ rsvd@41200000 { > ++ reg = <0x41200000 0x300000>; > ++ no-map; > ++ }; > ++ }; > ++ > ++ aliases { > ++ serial0 = &uart4; > ++ mdio-gpio0 = &mdio0; > ++ }; > ++ > ++ chosen { > ++ linux,stdout-path = "serial0:115200n8"; > ++ }; > ++ > ++ soc { > ++ pinmux@800000 { > ++ i2c4_pins: i2c4_pinmux { > ++ pins = "gpio12", "gpio13"; > ++ function = "gsbi4"; > ++ bias-disable; > ++ }; > ++ > ++ spi_pins: spi_pins { > ++ mux { > ++ pins = "gpio18", "gpio19", "gpio21"; > ++ function = "gsbi5"; > ++ drive-strength = <10>; > ++ bias-none; > ++ }; > ++ }; > ++ > ++ nand_pins: nand_pins { > ++ mux { > ++ pins = "gpio34", "gpio35", "gpio36", > ++ "gpio37", "gpio38", "gpio39", > ++ "gpio40", "gpio41", "gpio42", > ++ "gpio43", "gpio44", "gpio45", > ++ "gpio46", "gpio47"; > ++ function = "nand"; > ++ drive-strength = <10>; > ++ bias-disable; > ++ }; > ++ > ++ pullups { > ++ pins = "gpio39"; > ++ bias-pull-up; > ++ }; > ++ > ++ hold { > ++ pins = "gpio40", "gpio41", "gpio42", > ++ "gpio43", "gpio44", "gpio45", > ++ "gpio46", "gpio47"; > ++ bias-bus-hold; > ++ }; > ++ }; > ++ > ++ mdio0_pins: mdio0_pins { > ++ mux { > ++ pins = "gpio0", "gpio1"; > ++ function = "gpio"; > ++ drive-strength = <8>; > ++ bias-disable; > ++ }; > ++ }; > ++ > ++ rgmii2_pins: rgmii2_pins { > ++ mux { > ++ pins = "gpio27", "gpio28", "gpio29", "gpio30", "gpio31", "gpio32", > ++ "gpio51", "gpio52", "gpio59", "gpio60", "gpio61", "gpio62" ; > ++ function = "rgmii2"; > ++ drive-strength = <8>; > ++ bias-disable; > ++ }; > ++ }; > ++ }; > ++ > ++ gsbi@16300000 { > ++ qcom,mode = <GSBI_PROT_I2C_UART>; > ++ status = "ok"; > ++ serial@16340000 { > ++ status = "ok"; > ++ }; > ++ /* > ++ * The i2c device on gsbi4 should not be enabled. > ++ * On ipq806x designs gsbi4 i2c is meant for exclusive > ++ * RPM usage. Turning this on in kernel manifests as > ++ * i2c failure for the RPM. > ++ */ > ++ }; > ++ > ++ gsbi5: gsbi@1a200000 { > ++ qcom,mode = <GSBI_PROT_SPI>; > ++ status = "ok"; > ++ > ++ spi4: spi@1a280000 { > ++ status = "ok"; > ++ spi-max-frequency = <50000000>; > ++ > ++ pinctrl-0 = <&spi_pins>; > ++ pinctrl-names = "default"; > ++ > ++ cs-gpios = <&qcom_pinmux 20 0>; > ++ > ++ flash: m25p80@0 { > ++ compatible = "s25fl256s1"; > ++ #address-cells = <1>; > ++ #size-cells = <1>; > ++ spi-max-frequency = <50000000>; > ++ reg = <0>; So it has both nor and nand flash? > ++ > ++ linux,part-probe = "qcom-smem"; > ++ }; > ++ }; > ++ }; > ++ > ++ phy@100f8800 { /* USB3 port 1 HS phy */ > ++ status = "ok"; > ++ }; > ++ > ++ phy@100f8830 { /* USB3 port 1 SS phy */ > ++ status = "ok"; > ++ }; > ++ > ++ phy@110f8800 { /* USB3 port 0 HS phy */ > ++ status = "ok"; > ++ }; > ++ > ++ phy@110f8830 { /* USB3 port 0 SS phy */ > ++ status = "ok"; > ++ }; > ++ > ++ usb30@0 { > ++ status = "ok"; > ++ }; > ++ > ++ usb30@1 { > ++ status = "ok"; > ++ }; > ++ > ++ pcie0: pci@1b500000 { > ++ status = "ok"; > ++ phy-tx0-term-offset = <7>; > ++ }; > ++ > ++ pcie1: pci@1b700000 { > ++ status = "ok"; > ++ phy-tx0-term-offset = <7>; > ++ }; > ++ > ++ nand@1ac00000 { > ++ status = "ok"; > ++ > ++ pinctrl-0 = <&nand_pins>; > ++ pinctrl-names = "default"; > ++ > ++ nand-ecc-strength = <4>; > ++ nand-bus-width = <8>; > ++ > ++ linux,part-probe = "qcom-smem"; > ++ }; > ++ > ++ mdio0: mdio { > ++ compatible = "virtual,mdio-gpio"; > ++ #address-cells = <1>; > ++ #size-cells = <0>; > ++ gpios = <&qcom_pinmux 1 0 &qcom_pinmux 0 0>; > ++ pinctrl-0 = <&mdio0_pins>; > ++ pinctrl-names = "default"; > ++ > ++ phy0: ethernet-phy@0 { > ++ device_type = "ethernet-phy"; > ++ reg = <0>; > ++ qca,ar8327-initvals = < > ++ 0x00004 0x7600000 /* PAD0_MODE */ > ++ 0x00008 0x1000000 /* PAD5_MODE */ > ++ 0x0000c 0x80 /* PAD6_MODE */ > ++ 0x000e4 0xaa545 /* MAC_POWER_SEL */ > ++ 0x000e0 0xc74164de /* SGMII_CTRL */ > ++ 0x0007c 0x4e /* PORT0_STATUS */ > ++ 0x00094 0x4e /* PORT6_STATUS */ > ++ >; > ++ }; > ++ > ++ phy4: ethernet-phy@4 { > ++ device_type = "ethernet-phy"; > ++ reg = <4>; > ++ }; > ++ }; > ++ > ++ gmac1: ethernet@37200000 { > ++ status = "ok"; > ++ phy-mode = "rgmii"; > ++ phy-handle = <&phy4>; So your wan port works fine with a 10 or 100 Mbit connection? > ++ qcom,id = <1>; > ++ > ++ pinctrl-0 = <&rgmii2_pins>; > ++ pinctrl-names = "default"; > ++ }; > ++ > ++ gmac2: ethernet@37400000 { > ++ status = "ok"; > ++ phy-mode = "sgmii"; > ++ qcom,id = <2>; > ++ > ++ fixed-link { > ++ speed = <1000>; > ++ full-duplex; > ++ }; > ++ }; > ++ }; > ++}; > ++ > ++&adm_dma { > ++ status = "ok"; > ++}; (snip) > > > On 5 December 2015 at 15:08, Jonas Gorski <jogo@openwrt.org> wrote: Please don't top post or send new versions as replies to older version. Jonas
Ok thanks, Will clean up the white space + board name and resubmit (maybe also with the additional changes for the wireless calibration data at this point) For the WAN link, I did not test it myself yet with 10 or 100mbps, but the situation should be the same as described here https://dev.openwrt.org/changeset/47695/trunk/target/linux/ipq806x ie the wan link from the cpu is actually to the 1gbps internal port on the switch chip, regardless of what is then connected to the wan port on the switch. On 7 December 2015 at 16:46, Jonas Gorski <jogo@openwrt.org> wrote: > Hi, > > On Sun, Dec 6, 2015 at 3:20 PM, Josh Bendavid <Josh.Bendavid@cern.ch> > wrote: > > From: Josh Bendavid <joshbendavid@gmail.com> > > > > Add initial support for Archer C2600 to Makefiles and profiles. This is > > sufficient to build a working factory image. Sysupgrade image is not > > implemented yet. Currently wired network is working, but > > LED's/buttons/wireless are not. Updated to create a separate dts file > for > > c2600, which is currently identical to the ap148 aside that the > sata-related > > sections have been removed. > > > > Signed-off-by: Josh Bendavid <joshbendavid@gmail.com> > > --- > > > > diff --git a/include/image.mk b/include/image.mk > > index fd5e3f4..fab3c8a 100644 > > --- a/include/image.mk > > +++ b/include/image.mk > > @@ -327,6 +327,17 @@ define Build/netgear-dni > > mv $@.new $@ > > endef > > > > +define Build/tplink-safe > > + $(STAGING_DIR_HOST)/bin/tplink-safeloader \ > > This patch is whitespace broken, please use an email client that > doesn't convert tabs to spaces or git-email. > > > + -B $(TPLINK_BOARD_ID) -V OpenWrt.$(REVISION) \ > > + -k $(word 1,$^) \ > > + -r $(word 2,$^) \ > > + -j \ > > + $(if $(findstring sysupgrade,$1),-S) \ > > + -o $@.new > > + mv $@.new $@ > > +endef > > + > > define Build/fit > > $(TOPDIR)/scripts/mkits.sh \ > > -D $(DEVICE_NAME) -o $@.its -k $@ \ > > diff --git a/target/linux/ipq806x/base-files/etc/board.d/02_network > > b/target/linux/ipq806x/base-files/etc/board.d/02_network > > index b054230..e000e3d 100755 > > --- a/target/linux/ipq806x/base-files/etc/board.d/02_network > > +++ b/target/linux/ipq806x/base-files/etc/board.d/02_network > > @@ -13,7 +13,8 @@ board=$(ipq806x_board_name) > > > > case "$board" in > > ap148 |\ > > -r7500) > > +r7500 |\ > > +c2600) > > Please use alphabetical ordering > > > ucidef_add_switch "switch0" \ > > "1:lan" "2:lan" "3:lan" "4:lan" "6@eth1" "5:wan" "0@eth0" > > ;; > > diff --git a/target/linux/ipq806x/base-files/lib/ipq806x.sh > > b/target/linux/ipq806x/base-files/lib/ipq806x.sh > > index 5b27bde..262183f 100644 > > --- a/target/linux/ipq806x/base-files/lib/ipq806x.sh > > +++ b/target/linux/ipq806x/base-files/lib/ipq806x.sh > > @@ -23,6 +23,9 @@ ipq806x_board_detect() { > > *"R7500") > > name="r7500" > > ;; > > + *"C2600") > > + name="c2600" > > same. > > > + ;; > > esac > > > > [ -z "$name" ] && name="unknown" > > diff --git a/target/linux/ipq806x/image/Makefile > > b/target/linux/ipq806x/image/Makefile > > index 14cf442..0445914 100644 > > --- a/target/linux/ipq806x/image/Makefile > > +++ b/target/linux/ipq806x/image/Makefile > > @@ -85,6 +85,18 @@ define Device/DniImage > > endef > > DEVICE_VARS += KERNEL_SIZE NETGEAR_BOARD_ID NETGEAR_HW_ID > DEVICE_BLOCK_SIZE > > DEVICE_PAGE_SIZE > > > > +define Device/TpSafeImage > > + PROFILES += $$(DEVICE_NAME) > > + FILESYSTEMS := squashfs > > + KERNEL_SUFFIX := -uImage > > + KERNEL = kernel-bin | append-dtb | uImage none > > + KERNEL_NAME := zImage > > + TPLINK_BOARD_ID := > > + IMAGES := factory.bin > > + IMAGE/factory.bin := tplink-safe > > +endef > > +DEVICE_VARS += TPLINK_BOARD_ID > > + > > define Device/AP148 > > $(call Device/FitImage) > > $(call Device/UbiFit) > > @@ -103,6 +115,15 @@ define Device/AP148-legacy > > BOARD_NAME := ap148 > > endef > > > > +define Device/C2600 > > + $(call Device/TpSafeImage) > > + DEVICE_DTS := qcom-ipq8064-c2600 > > + BLOCKSIZE := 128KiB > > + PAGESIZE := 2048 > > + BOARD_NAME := ap148 > > This must be the boardname you assign in board_detect. > > > + TPLINK_BOARD_ID := C2600 > > +endef > > + > > define Device/DB149 > > $(call Device/FitImage) > > DEVICE_DTS := qcom-ipq8064-db149 > > @@ -121,6 +142,6 @@ define Device/R7500 > > BOARD_NAME := r7500 > > endef > > > > -TARGET_DEVICES += AP148 AP148-legacy DB149 R7500 > > +TARGET_DEVICES += AP148 AP148-legacy C2600 DB149 R7500 > > > > $(eval $(call BuildImage)) > > diff --git > > > a/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch > > > b/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch > > index e69de29..e750b98 100644 > > --- > > > a/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch > > +++ > > > b/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch > > @@ -0,0 +1,246 @@ > > +diff -urN a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > > +--- a/arch/arm/boot/dts/Makefile 2015-11-25 22:51:15.148899604 +0100 > > ++++ b/arch/arm/boot/dts/Makefile 2015-12-06 14:33:31.092396982 +0100 > > +@@ -362,6 +362,7 @@ > > + qcom-ipq8064-ap148.dtb \ > > + qcom-ipq8064-db149.dtb \ > > + qcom-ipq8064-r7500.dtb \ > > ++ qcom-ipq8064-c2600.dtb \ > > + qcom-msm8660-surf.dtb \ > > + qcom-msm8960-cdp.dtb \ > > + qcom-msm8974-sony-xperia-honami.dtb > > +diff -urN a/arch/arm/boot/dts/qcom-ipq8064-c2600.dts > > b/arch/arm/boot/dts/qcom-ipq8064-c2600.dts > > +--- a/arch/arm/boot/dts/qcom-ipq8064-c2600.dts 1970-01-01 > > 01:00:00.000000000 +0100 > > ++++ b/arch/arm/boot/dts/qcom-ipq8064-c2600.dts 2015-12-06 > > 14:20:05.152365670 +0100 > > +@@ -0,0 +1,231 @@ > > ++#include "qcom-ipq8064-v1.0.dtsi" > > ++ > > ++/ { > > ++ model = "TP-Link Archer C2600"; > > ++ compatible = "tplink,c2600", "qcom,ipq8064"; > > ++ > > ++ memory@0 { > > ++ reg = <0x42000000 0x1e000000>; > > ++ device_type = "memory"; > > ++ }; > > ++ > > ++ reserved-memory { > > ++ #address-cells = <1>; > > ++ #size-cells = <1>; > > ++ ranges; > > ++ rsvd@41200000 { > > ++ reg = <0x41200000 0x300000>; > > ++ no-map; > > ++ }; > > ++ }; > > ++ > > ++ aliases { > > ++ serial0 = &uart4; > > ++ mdio-gpio0 = &mdio0; > > ++ }; > > ++ > > ++ chosen { > > ++ linux,stdout-path = "serial0:115200n8"; > > ++ }; > > ++ > > ++ soc { > > ++ pinmux@800000 { > > ++ i2c4_pins: i2c4_pinmux { > > ++ pins = "gpio12", "gpio13"; > > ++ function = "gsbi4"; > > ++ bias-disable; > > ++ }; > > ++ > > ++ spi_pins: spi_pins { > > ++ mux { > > ++ pins = "gpio18", "gpio19", "gpio21"; > > ++ function = "gsbi5"; > > ++ drive-strength = <10>; > > ++ bias-none; > > ++ }; > > ++ }; > > ++ > > ++ nand_pins: nand_pins { > > ++ mux { > > ++ pins = "gpio34", "gpio35", "gpio36", > > ++ "gpio37", "gpio38", "gpio39", > > ++ "gpio40", "gpio41", "gpio42", > > ++ "gpio43", "gpio44", "gpio45", > > ++ "gpio46", "gpio47"; > > ++ function = "nand"; > > ++ drive-strength = <10>; > > ++ bias-disable; > > ++ }; > > ++ > > ++ pullups { > > ++ pins = "gpio39"; > > ++ bias-pull-up; > > ++ }; > > ++ > > ++ hold { > > ++ pins = "gpio40", "gpio41", "gpio42", > > ++ "gpio43", "gpio44", "gpio45", > > ++ "gpio46", "gpio47"; > > ++ bias-bus-hold; > > ++ }; > > ++ }; > > ++ > > ++ mdio0_pins: mdio0_pins { > > ++ mux { > > ++ pins = "gpio0", "gpio1"; > > ++ function = "gpio"; > > ++ drive-strength = <8>; > > ++ bias-disable; > > ++ }; > > ++ }; > > ++ > > ++ rgmii2_pins: rgmii2_pins { > > ++ mux { > > ++ pins = "gpio27", "gpio28", "gpio29", "gpio30", "gpio31", "gpio32", > > ++ "gpio51", "gpio52", "gpio59", "gpio60", "gpio61", "gpio62" ; > > ++ function = "rgmii2"; > > ++ drive-strength = <8>; > > ++ bias-disable; > > ++ }; > > ++ }; > > ++ }; > > ++ > > ++ gsbi@16300000 { > > ++ qcom,mode = <GSBI_PROT_I2C_UART>; > > ++ status = "ok"; > > ++ serial@16340000 { > > ++ status = "ok"; > > ++ }; > > ++ /* > > ++ * The i2c device on gsbi4 should not be enabled. > > ++ * On ipq806x designs gsbi4 i2c is meant for exclusive > > ++ * RPM usage. Turning this on in kernel manifests as > > ++ * i2c failure for the RPM. > > ++ */ > > ++ }; > > ++ > > ++ gsbi5: gsbi@1a200000 { > > ++ qcom,mode = <GSBI_PROT_SPI>; > > ++ status = "ok"; > > ++ > > ++ spi4: spi@1a280000 { > > ++ status = "ok"; > > ++ spi-max-frequency = <50000000>; > > ++ > > ++ pinctrl-0 = <&spi_pins>; > > ++ pinctrl-names = "default"; > > ++ > > ++ cs-gpios = <&qcom_pinmux 20 0>; > > ++ > > ++ flash: m25p80@0 { > > ++ compatible = "s25fl256s1"; > > ++ #address-cells = <1>; > > ++ #size-cells = <1>; > > ++ spi-max-frequency = <50000000>; > > ++ reg = <0>; > > So it has both nor and nand flash? > > > ++ > > ++ linux,part-probe = "qcom-smem"; > > ++ }; > > ++ }; > > ++ }; > > ++ > > ++ phy@100f8800 { /* USB3 port 1 HS phy */ > > ++ status = "ok"; > > ++ }; > > ++ > > ++ phy@100f8830 { /* USB3 port 1 SS phy */ > > ++ status = "ok"; > > ++ }; > > ++ > > ++ phy@110f8800 { /* USB3 port 0 HS phy */ > > ++ status = "ok"; > > ++ }; > > ++ > > ++ phy@110f8830 { /* USB3 port 0 SS phy */ > > ++ status = "ok"; > > ++ }; > > ++ > > ++ usb30@0 { > > ++ status = "ok"; > > ++ }; > > ++ > > ++ usb30@1 { > > ++ status = "ok"; > > ++ }; > > ++ > > ++ pcie0: pci@1b500000 { > > ++ status = "ok"; > > ++ phy-tx0-term-offset = <7>; > > ++ }; > > ++ > > ++ pcie1: pci@1b700000 { > > ++ status = "ok"; > > ++ phy-tx0-term-offset = <7>; > > ++ }; > > ++ > > ++ nand@1ac00000 { > > ++ status = "ok"; > > ++ > > ++ pinctrl-0 = <&nand_pins>; > > ++ pinctrl-names = "default"; > > ++ > > ++ nand-ecc-strength = <4>; > > ++ nand-bus-width = <8>; > > ++ > > ++ linux,part-probe = "qcom-smem"; > > ++ }; > > ++ > > ++ mdio0: mdio { > > ++ compatible = "virtual,mdio-gpio"; > > ++ #address-cells = <1>; > > ++ #size-cells = <0>; > > ++ gpios = <&qcom_pinmux 1 0 &qcom_pinmux 0 0>; > > ++ pinctrl-0 = <&mdio0_pins>; > > ++ pinctrl-names = "default"; > > ++ > > ++ phy0: ethernet-phy@0 { > > ++ device_type = "ethernet-phy"; > > ++ reg = <0>; > > ++ qca,ar8327-initvals = < > > ++ 0x00004 0x7600000 /* PAD0_MODE */ > > ++ 0x00008 0x1000000 /* PAD5_MODE */ > > ++ 0x0000c 0x80 /* PAD6_MODE */ > > ++ 0x000e4 0xaa545 /* MAC_POWER_SEL */ > > ++ 0x000e0 0xc74164de /* SGMII_CTRL */ > > ++ 0x0007c 0x4e /* PORT0_STATUS */ > > ++ 0x00094 0x4e /* PORT6_STATUS */ > > ++ >; > > ++ }; > > ++ > > ++ phy4: ethernet-phy@4 { > > ++ device_type = "ethernet-phy"; > > ++ reg = <4>; > > ++ }; > > ++ }; > > ++ > > ++ gmac1: ethernet@37200000 { > > ++ status = "ok"; > > ++ phy-mode = "rgmii"; > > ++ phy-handle = <&phy4>; > > So your wan port works fine with a 10 or 100 Mbit connection? > > > ++ qcom,id = <1>; > > ++ > > ++ pinctrl-0 = <&rgmii2_pins>; > > ++ pinctrl-names = "default"; > > ++ }; > > ++ > > ++ gmac2: ethernet@37400000 { > > ++ status = "ok"; > > ++ phy-mode = "sgmii"; > > ++ qcom,id = <2>; > > ++ > > ++ fixed-link { > > ++ speed = <1000>; > > ++ full-duplex; > > ++ }; > > ++ }; > > ++ }; > > ++}; > > ++ > > ++&adm_dma { > > ++ status = "ok"; > > ++}; > > (snip) > > > > > > > On 5 December 2015 at 15:08, Jonas Gorski <jogo@openwrt.org> wrote: > > Please don't top post or send new versions as replies to older version. > > > Jonas >
(the vlan configuration inherited from the AP148 is working, which implies that the connections and port mapping are the same) On 7 December 2015 at 16:57, Josh Bendavid <Josh.Bendavid@cern.ch> wrote: > Ok thanks, > Will clean up the white space + board name and resubmit (maybe also with > the additional changes for the wireless calibration data at this point) > > For the WAN link, I did not test it myself yet with 10 or 100mbps, but the > situation should be the same as described here > https://dev.openwrt.org/changeset/47695/trunk/target/linux/ipq806x > > ie the wan link from the cpu is actually to the 1gbps internal port on the > switch chip, regardless of what is then connected to the wan port on the > switch. > > On 7 December 2015 at 16:46, Jonas Gorski <jogo@openwrt.org> wrote: > >> Hi, >> >> On Sun, Dec 6, 2015 at 3:20 PM, Josh Bendavid <Josh.Bendavid@cern.ch> >> wrote: >> > From: Josh Bendavid <joshbendavid@gmail.com> >> > >> > Add initial support for Archer C2600 to Makefiles and profiles. This is >> > sufficient to build a working factory image. Sysupgrade image is not >> > implemented yet. Currently wired network is working, but >> > LED's/buttons/wireless are not. Updated to create a separate dts file >> for >> > c2600, which is currently identical to the ap148 aside that the >> sata-related >> > sections have been removed. >> > >> > Signed-off-by: Josh Bendavid <joshbendavid@gmail.com> >> > --- >> > >> > diff --git a/include/image.mk b/include/image.mk >> > index fd5e3f4..fab3c8a 100644 >> > --- a/include/image.mk >> > +++ b/include/image.mk >> > @@ -327,6 +327,17 @@ define Build/netgear-dni >> > mv $@.new $@ >> > endef >> > >> > +define Build/tplink-safe >> > + $(STAGING_DIR_HOST)/bin/tplink-safeloader \ >> >> This patch is whitespace broken, please use an email client that >> doesn't convert tabs to spaces or git-email. >> >> > + -B $(TPLINK_BOARD_ID) -V OpenWrt.$(REVISION) \ >> > + -k $(word 1,$^) \ >> > + -r $(word 2,$^) \ >> > + -j \ >> > + $(if $(findstring sysupgrade,$1),-S) \ >> > + -o $@.new >> > + mv $@.new $@ >> > +endef >> > + >> > define Build/fit >> > $(TOPDIR)/scripts/mkits.sh \ >> > -D $(DEVICE_NAME) -o $@.its -k $@ \ >> > diff --git a/target/linux/ipq806x/base-files/etc/board.d/02_network >> > b/target/linux/ipq806x/base-files/etc/board.d/02_network >> > index b054230..e000e3d 100755 >> > --- a/target/linux/ipq806x/base-files/etc/board.d/02_network >> > +++ b/target/linux/ipq806x/base-files/etc/board.d/02_network >> > @@ -13,7 +13,8 @@ board=$(ipq806x_board_name) >> > >> > case "$board" in >> > ap148 |\ >> > -r7500) >> > +r7500 |\ >> > +c2600) >> >> Please use alphabetical ordering >> >> > ucidef_add_switch "switch0" \ >> > "1:lan" "2:lan" "3:lan" "4:lan" "6@eth1" "5:wan" "0@eth0" >> > ;; >> > diff --git a/target/linux/ipq806x/base-files/lib/ipq806x.sh >> > b/target/linux/ipq806x/base-files/lib/ipq806x.sh >> > index 5b27bde..262183f 100644 >> > --- a/target/linux/ipq806x/base-files/lib/ipq806x.sh >> > +++ b/target/linux/ipq806x/base-files/lib/ipq806x.sh >> > @@ -23,6 +23,9 @@ ipq806x_board_detect() { >> > *"R7500") >> > name="r7500" >> > ;; >> > + *"C2600") >> > + name="c2600" >> >> same. >> >> > + ;; >> > esac >> > >> > [ -z "$name" ] && name="unknown" >> > diff --git a/target/linux/ipq806x/image/Makefile >> > b/target/linux/ipq806x/image/Makefile >> > index 14cf442..0445914 100644 >> > --- a/target/linux/ipq806x/image/Makefile >> > +++ b/target/linux/ipq806x/image/Makefile >> > @@ -85,6 +85,18 @@ define Device/DniImage >> > endef >> > DEVICE_VARS += KERNEL_SIZE NETGEAR_BOARD_ID NETGEAR_HW_ID >> DEVICE_BLOCK_SIZE >> > DEVICE_PAGE_SIZE >> > >> > +define Device/TpSafeImage >> > + PROFILES += $$(DEVICE_NAME) >> > + FILESYSTEMS := squashfs >> > + KERNEL_SUFFIX := -uImage >> > + KERNEL = kernel-bin | append-dtb | uImage none >> > + KERNEL_NAME := zImage >> > + TPLINK_BOARD_ID := >> > + IMAGES := factory.bin >> > + IMAGE/factory.bin := tplink-safe >> > +endef >> > +DEVICE_VARS += TPLINK_BOARD_ID >> > + >> > define Device/AP148 >> > $(call Device/FitImage) >> > $(call Device/UbiFit) >> > @@ -103,6 +115,15 @@ define Device/AP148-legacy >> > BOARD_NAME := ap148 >> > endef >> > >> > +define Device/C2600 >> > + $(call Device/TpSafeImage) >> > + DEVICE_DTS := qcom-ipq8064-c2600 >> > + BLOCKSIZE := 128KiB >> > + PAGESIZE := 2048 >> > + BOARD_NAME := ap148 >> >> This must be the boardname you assign in board_detect. >> >> > + TPLINK_BOARD_ID := C2600 >> > +endef >> > + >> > define Device/DB149 >> > $(call Device/FitImage) >> > DEVICE_DTS := qcom-ipq8064-db149 >> > @@ -121,6 +142,6 @@ define Device/R7500 >> > BOARD_NAME := r7500 >> > endef >> > >> > -TARGET_DEVICES += AP148 AP148-legacy DB149 R7500 >> > +TARGET_DEVICES += AP148 AP148-legacy C2600 DB149 R7500 >> > >> > $(eval $(call BuildImage)) >> > diff --git >> > >> a/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch >> > >> b/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch >> > index e69de29..e750b98 100644 >> > --- >> > >> a/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch >> > +++ >> > >> b/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch >> > @@ -0,0 +1,246 @@ >> > +diff -urN a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile >> > +--- a/arch/arm/boot/dts/Makefile 2015-11-25 22:51:15.148899604 +0100 >> > ++++ b/arch/arm/boot/dts/Makefile 2015-12-06 14:33:31.092396982 +0100 >> > +@@ -362,6 +362,7 @@ >> > + qcom-ipq8064-ap148.dtb \ >> > + qcom-ipq8064-db149.dtb \ >> > + qcom-ipq8064-r7500.dtb \ >> > ++ qcom-ipq8064-c2600.dtb \ >> > + qcom-msm8660-surf.dtb \ >> > + qcom-msm8960-cdp.dtb \ >> > + qcom-msm8974-sony-xperia-honami.dtb >> > +diff -urN a/arch/arm/boot/dts/qcom-ipq8064-c2600.dts >> > b/arch/arm/boot/dts/qcom-ipq8064-c2600.dts >> > +--- a/arch/arm/boot/dts/qcom-ipq8064-c2600.dts 1970-01-01 >> > 01:00:00.000000000 +0100 >> > ++++ b/arch/arm/boot/dts/qcom-ipq8064-c2600.dts 2015-12-06 >> > 14:20:05.152365670 +0100 >> > +@@ -0,0 +1,231 @@ >> > ++#include "qcom-ipq8064-v1.0.dtsi" >> > ++ >> > ++/ { >> > ++ model = "TP-Link Archer C2600"; >> > ++ compatible = "tplink,c2600", "qcom,ipq8064"; >> > ++ >> > ++ memory@0 { >> > ++ reg = <0x42000000 0x1e000000>; >> > ++ device_type = "memory"; >> > ++ }; >> > ++ >> > ++ reserved-memory { >> > ++ #address-cells = <1>; >> > ++ #size-cells = <1>; >> > ++ ranges; >> > ++ rsvd@41200000 { >> > ++ reg = <0x41200000 0x300000>; >> > ++ no-map; >> > ++ }; >> > ++ }; >> > ++ >> > ++ aliases { >> > ++ serial0 = &uart4; >> > ++ mdio-gpio0 = &mdio0; >> > ++ }; >> > ++ >> > ++ chosen { >> > ++ linux,stdout-path = "serial0:115200n8"; >> > ++ }; >> > ++ >> > ++ soc { >> > ++ pinmux@800000 { >> > ++ i2c4_pins: i2c4_pinmux { >> > ++ pins = "gpio12", "gpio13"; >> > ++ function = "gsbi4"; >> > ++ bias-disable; >> > ++ }; >> > ++ >> > ++ spi_pins: spi_pins { >> > ++ mux { >> > ++ pins = "gpio18", "gpio19", "gpio21"; >> > ++ function = "gsbi5"; >> > ++ drive-strength = <10>; >> > ++ bias-none; >> > ++ }; >> > ++ }; >> > ++ >> > ++ nand_pins: nand_pins { >> > ++ mux { >> > ++ pins = "gpio34", "gpio35", "gpio36", >> > ++ "gpio37", "gpio38", "gpio39", >> > ++ "gpio40", "gpio41", "gpio42", >> > ++ "gpio43", "gpio44", "gpio45", >> > ++ "gpio46", "gpio47"; >> > ++ function = "nand"; >> > ++ drive-strength = <10>; >> > ++ bias-disable; >> > ++ }; >> > ++ >> > ++ pullups { >> > ++ pins = "gpio39"; >> > ++ bias-pull-up; >> > ++ }; >> > ++ >> > ++ hold { >> > ++ pins = "gpio40", "gpio41", "gpio42", >> > ++ "gpio43", "gpio44", "gpio45", >> > ++ "gpio46", "gpio47"; >> > ++ bias-bus-hold; >> > ++ }; >> > ++ }; >> > ++ >> > ++ mdio0_pins: mdio0_pins { >> > ++ mux { >> > ++ pins = "gpio0", "gpio1"; >> > ++ function = "gpio"; >> > ++ drive-strength = <8>; >> > ++ bias-disable; >> > ++ }; >> > ++ }; >> > ++ >> > ++ rgmii2_pins: rgmii2_pins { >> > ++ mux { >> > ++ pins = "gpio27", "gpio28", "gpio29", "gpio30", "gpio31", "gpio32", >> > ++ "gpio51", "gpio52", "gpio59", "gpio60", "gpio61", "gpio62" ; >> > ++ function = "rgmii2"; >> > ++ drive-strength = <8>; >> > ++ bias-disable; >> > ++ }; >> > ++ }; >> > ++ }; >> > ++ >> > ++ gsbi@16300000 { >> > ++ qcom,mode = <GSBI_PROT_I2C_UART>; >> > ++ status = "ok"; >> > ++ serial@16340000 { >> > ++ status = "ok"; >> > ++ }; >> > ++ /* >> > ++ * The i2c device on gsbi4 should not be enabled. >> > ++ * On ipq806x designs gsbi4 i2c is meant for exclusive >> > ++ * RPM usage. Turning this on in kernel manifests as >> > ++ * i2c failure for the RPM. >> > ++ */ >> > ++ }; >> > ++ >> > ++ gsbi5: gsbi@1a200000 { >> > ++ qcom,mode = <GSBI_PROT_SPI>; >> > ++ status = "ok"; >> > ++ >> > ++ spi4: spi@1a280000 { >> > ++ status = "ok"; >> > ++ spi-max-frequency = <50000000>; >> > ++ >> > ++ pinctrl-0 = <&spi_pins>; >> > ++ pinctrl-names = "default"; >> > ++ >> > ++ cs-gpios = <&qcom_pinmux 20 0>; >> > ++ >> > ++ flash: m25p80@0 { >> > ++ compatible = "s25fl256s1"; >> > ++ #address-cells = <1>; >> > ++ #size-cells = <1>; >> > ++ spi-max-frequency = <50000000>; >> > ++ reg = <0>; >> >> So it has both nor and nand flash? >> >> > ++ >> > ++ linux,part-probe = "qcom-smem"; >> > ++ }; >> > ++ }; >> > ++ }; >> > ++ >> > ++ phy@100f8800 { /* USB3 port 1 HS phy */ >> > ++ status = "ok"; >> > ++ }; >> > ++ >> > ++ phy@100f8830 { /* USB3 port 1 SS phy */ >> > ++ status = "ok"; >> > ++ }; >> > ++ >> > ++ phy@110f8800 { /* USB3 port 0 HS phy */ >> > ++ status = "ok"; >> > ++ }; >> > ++ >> > ++ phy@110f8830 { /* USB3 port 0 SS phy */ >> > ++ status = "ok"; >> > ++ }; >> > ++ >> > ++ usb30@0 { >> > ++ status = "ok"; >> > ++ }; >> > ++ >> > ++ usb30@1 { >> > ++ status = "ok"; >> > ++ }; >> > ++ >> > ++ pcie0: pci@1b500000 { >> > ++ status = "ok"; >> > ++ phy-tx0-term-offset = <7>; >> > ++ }; >> > ++ >> > ++ pcie1: pci@1b700000 { >> > ++ status = "ok"; >> > ++ phy-tx0-term-offset = <7>; >> > ++ }; >> > ++ >> > ++ nand@1ac00000 { >> > ++ status = "ok"; >> > ++ >> > ++ pinctrl-0 = <&nand_pins>; >> > ++ pinctrl-names = "default"; >> > ++ >> > ++ nand-ecc-strength = <4>; >> > ++ nand-bus-width = <8>; >> > ++ >> > ++ linux,part-probe = "qcom-smem"; >> > ++ }; >> > ++ >> > ++ mdio0: mdio { >> > ++ compatible = "virtual,mdio-gpio"; >> > ++ #address-cells = <1>; >> > ++ #size-cells = <0>; >> > ++ gpios = <&qcom_pinmux 1 0 &qcom_pinmux 0 0>; >> > ++ pinctrl-0 = <&mdio0_pins>; >> > ++ pinctrl-names = "default"; >> > ++ >> > ++ phy0: ethernet-phy@0 { >> > ++ device_type = "ethernet-phy"; >> > ++ reg = <0>; >> > ++ qca,ar8327-initvals = < >> > ++ 0x00004 0x7600000 /* PAD0_MODE */ >> > ++ 0x00008 0x1000000 /* PAD5_MODE */ >> > ++ 0x0000c 0x80 /* PAD6_MODE */ >> > ++ 0x000e4 0xaa545 /* MAC_POWER_SEL */ >> > ++ 0x000e0 0xc74164de /* SGMII_CTRL */ >> > ++ 0x0007c 0x4e /* PORT0_STATUS */ >> > ++ 0x00094 0x4e /* PORT6_STATUS */ >> > ++ >; >> > ++ }; >> > ++ >> > ++ phy4: ethernet-phy@4 { >> > ++ device_type = "ethernet-phy"; >> > ++ reg = <4>; >> > ++ }; >> > ++ }; >> > ++ >> > ++ gmac1: ethernet@37200000 { >> > ++ status = "ok"; >> > ++ phy-mode = "rgmii"; >> > ++ phy-handle = <&phy4>; >> >> So your wan port works fine with a 10 or 100 Mbit connection? >> >> > ++ qcom,id = <1>; >> > ++ >> > ++ pinctrl-0 = <&rgmii2_pins>; >> > ++ pinctrl-names = "default"; >> > ++ }; >> > ++ >> > ++ gmac2: ethernet@37400000 { >> > ++ status = "ok"; >> > ++ phy-mode = "sgmii"; >> > ++ qcom,id = <2>; >> > ++ >> > ++ fixed-link { >> > ++ speed = <1000>; >> > ++ full-duplex; >> > ++ }; >> > ++ }; >> > ++ }; >> > ++}; >> > ++ >> > ++&adm_dma { >> > ++ status = "ok"; >> > ++}; >> >> (snip) >> >> > >> > >> > On 5 December 2015 at 15:08, Jonas Gorski <jogo@openwrt.org> wrote: >> >> Please don't top post or send new versions as replies to older version. >> >> >> Jonas >> > >
(Sorry about the top posting) For the flash, the stock firmware, and the factory images built with these patches are using only the NOR flash as far as I know. I am not 100% sure whether the NAND is physically there or not (what would be the easiest way to check?)
Hi, please try to keep the number of replies low, ideally one. On Mon, Dec 7, 2015 at 5:05 PM, Josh Bendavid <Josh.Bendavid@cern.ch> wrote: > (Sorry about the top posting) > and keep some context to what you are replying to. > For the flash, the stock firmware, and the factory images built with these > patches are using only the NOR flash as far as I know. > > I am not 100% sure whether the NAND is physically there or not (what would > be the easiest way to check?) check for lines like this: [ 0.965016] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xaa [ 0.966215] nand: Micron MT29F2G08ABBEAH4 [ 0.972816] nand: 256MiB, SLC, page size: 2048, OOB size: 64 On Mon, Dec 7, 2015 at 4:57 PM, Josh Bendavid <Josh.Bendavid@cern.ch> wrote: > For the WAN link, I did not test it myself yet with 10 or 100mbps, but the > situation should be the same as described here > https://dev.openwrt.org/changeset/47695/trunk/target/linux/ipq806x That was intended as a hint that your dts file did not include the fix mentioned in the commit, in case it is wired up the same. Jonas
diff --git a/include/image.mk b/include/image.mk index fd5e3f4..fab3c8a 100644 --- a/include/image.mk +++ b/include/image.mk @@ -327,6 +327,17 @@ define Build/netgear-dni mv $@.new $@ endef +define Build/tplink-safe + $(STAGING_DIR_HOST)/bin/tplink-safeloader \ + -B $(TPLINK_BOARD_ID) -V OpenWrt.$(REVISION) \ + -k $(word 1,$^) \ + -r $(word 2,$^) \ + -j \ + $(if $(findstring sysupgrade,$1),-S) \ + -o $@.new + mv $@.new $@ +endef + define Build/fit $(TOPDIR)/scripts/mkits.sh \ -D $(DEVICE_NAME) -o $@.its -k $@ \ diff --git a/target/linux/ipq806x/base-files/etc/board.d/02_network b/target/linux/ipq806x/base-files/etc/board.d/02_network index b054230..e000e3d 100755 --- a/target/linux/ipq806x/base-files/etc/board.d/02_network +++ b/target/linux/ipq806x/base-files/etc/board.d/02_network @@ -13,7 +13,8 @@ board=$(ipq806x_board_name) case "$board" in ap148 |\ -r7500) +r7500 |\ +c2600) ucidef_add_switch "switch0" \ "1:lan" "2:lan" "3:lan" "4:lan" "6@eth1" "5:wan" "0@eth0" ;; diff --git a/target/linux/ipq806x/base-files/lib/ipq806x.sh b/target/linux/ipq806x/base-files/lib/ipq806x.sh index 5b27bde..262183f 100644 --- a/target/linux/ipq806x/base-files/lib/ipq806x.sh +++ b/target/linux/ipq806x/base-files/lib/ipq806x.sh @@ -23,6 +23,9 @@ ipq806x_board_detect() { *"R7500") name="r7500" ;; + *"C2600") + name="c2600" + ;; esac [ -z "$name" ] && name="unknown" diff --git a/target/linux/ipq806x/image/Makefile b/target/linux/ipq806x/image/Makefile index 14cf442..0445914 100644 --- a/target/linux/ipq806x/image/Makefile +++ b/target/linux/ipq806x/image/Makefile @@ -85,6 +85,18 @@ define Device/DniImage endef DEVICE_VARS += KERNEL_SIZE NETGEAR_BOARD_ID NETGEAR_HW_ID DEVICE_BLOCK_SIZE DEVICE_PAGE_SIZE +define Device/TpSafeImage + PROFILES += $$(DEVICE_NAME) + FILESYSTEMS := squashfs + KERNEL_SUFFIX := -uImage + KERNEL = kernel-bin | append-dtb | uImage none + KERNEL_NAME := zImage + TPLINK_BOARD_ID := + IMAGES := factory.bin + IMAGE/factory.bin := tplink-safe +endef +DEVICE_VARS += TPLINK_BOARD_ID + define Device/AP148 $(call Device/FitImage) $(call Device/UbiFit) @@ -103,6 +115,15 @@ define Device/AP148-legacy BOARD_NAME := ap148 endef +define Device/C2600 + $(call Device/TpSafeImage) + DEVICE_DTS := qcom-ipq8064-c2600 + BLOCKSIZE := 128KiB + PAGESIZE := 2048 + BOARD_NAME := ap148 + TPLINK_BOARD_ID := C2600 +endef + define Device/DB149 $(call Device/FitImage) DEVICE_DTS := qcom-ipq8064-db149 @@ -121,6 +142,6 @@ define Device/R7500 BOARD_NAME := r7500 endef -TARGET_DEVICES += AP148 AP148-legacy DB149 R7500 +TARGET_DEVICES += AP148 AP148-legacy C2600 DB149 R7500 $(eval $(call BuildImage)) diff --git a/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch b/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch index e69de29..e750b98 100644 --- a/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch +++ b/target/linux/ipq806x/patches-3.18/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch @@ -0,0 +1,246 @@ +diff -urN a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +--- a/arch/arm/boot/dts/Makefile 2015-11-25 22:51:15.148899604 +0100 ++++ b/arch/arm/boot/dts/Makefile 2015-12-06 14:33:31.092396982 +0100 +@@ -362,6 +362,7 @@ + qcom-ipq8064-ap148.dtb \ + qcom-ipq8064-db149.dtb \ + qcom-ipq8064-r7500.dtb \ ++ qcom-ipq8064-c2600.dtb \ + qcom-msm8660-surf.dtb \ + qcom-msm8960-cdp.dtb \ + qcom-msm8974-sony-xperia-honami.dtb +diff -urN a/arch/arm/boot/dts/qcom-ipq8064-c2600.dts b/arch/arm/boot/dts/qcom-ipq8064-c2600.dts +--- a/arch/arm/boot/dts/qcom-ipq8064-c2600.dts 1970-01-01 01:00:00.000000000 +0100 ++++ b/arch/arm/boot/dts/qcom-ipq8064-c2600.dts 2015-12-06 14:20:05.152365670 +0100 +@@ -0,0 +1,231 @@ ++#include "qcom-ipq8064-v1.0.dtsi" ++ ++/ { ++ model = "TP-Link Archer C2600"; ++ compatible = "tplink,c2600", "qcom,ipq8064"; ++ ++ memory@0 { ++ reg = <0x42000000 0x1e000000>; ++ device_type = "memory"; ++ }; ++ ++ reserved-memory { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ rsvd@41200000 { ++ reg = <0x41200000 0x300000>; ++ no-map; ++ }; ++ }; ++ ++ aliases { ++ serial0 = &uart4; ++ mdio-gpio0 = &mdio0; ++ }; ++ ++ chosen { ++ linux,stdout-path = "serial0:115200n8"; ++ }; ++ ++ soc { ++ pinmux@800000 { ++ i2c4_pins: i2c4_pinmux { ++ pins = "gpio12", "gpio13"; ++ function = "gsbi4"; ++ bias-disable; ++ }; ++ ++ spi_pins: spi_pins { ++ mux { ++ pins = "gpio18", "gpio19", "gpio21"; ++ function = "gsbi5"; ++ drive-strength = <10>; ++ bias-none; ++ }; ++ }; ++ ++ nand_pins: nand_pins { ++ mux { ++ pins = "gpio34", "gpio35", "gpio36", ++ "gpio37", "gpio38", "gpio39", ++ "gpio40", "gpio41", "gpio42", ++ "gpio43", "gpio44", "gpio45", ++ "gpio46", "gpio47"; ++ function = "nand"; ++ drive-strength = <10>; ++ bias-disable; ++ }; ++ ++ pullups { ++ pins = "gpio39"; ++ bias-pull-up; ++ }; ++ ++ hold { ++ pins = "gpio40", "gpio41", "gpio42", ++ "gpio43", "gpio44", "gpio45", ++ "gpio46", "gpio47"; ++ bias-bus-hold; ++ }; ++ }; ++ ++ mdio0_pins: mdio0_pins { ++ mux { ++ pins = "gpio0", "gpio1"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-disable; ++ }; ++ }; ++ ++ rgmii2_pins: rgmii2_pins { ++ mux { ++ pins = "gpio27", "gpio28", "gpio29", "gpio30", "gpio31", "gpio32", ++ "gpio51", "gpio52", "gpio59", "gpio60", "gpio61", "gpio62" ; ++ function = "rgmii2"; ++ drive-strength = <8>; ++ bias-disable; ++ }; ++ }; ++ }; ++ ++ gsbi@16300000 { ++ qcom,mode = <GSBI_PROT_I2C_UART>; ++ status = "ok"; ++ serial@16340000 { ++ status = "ok"; ++ }; ++ /* ++ * The i2c device on gsbi4 should not be enabled. ++ * On ipq806x designs gsbi4 i2c is meant for exclusive ++ * RPM usage. Turning this on in kernel manifests as ++ * i2c failure for the RPM. ++ */ ++ }; ++ ++ gsbi5: gsbi@1a200000 { ++ qcom,mode = <GSBI_PROT_SPI>; ++ status = "ok"; ++ ++ spi4: spi@1a280000 { ++ status = "ok"; ++ spi-max-frequency = <50000000>; ++ ++ pinctrl-0 = <&spi_pins>; ++ pinctrl-names = "default"; ++ ++ cs-gpios = <&qcom_pinmux 20 0>; ++ ++ flash: m25p80@0 { ++ compatible = "s25fl256s1"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ spi-max-frequency = <50000000>; ++ reg = <0>; ++ ++ linux,part-probe = "qcom-smem"; ++ }; ++ }; ++ }; ++ ++ phy@100f8800 { /* USB3 port 1 HS phy */ ++ status = "ok"; ++ }; ++ ++ phy@100f8830 { /* USB3 port 1 SS phy */ ++ status = "ok"; ++ }; ++ ++ phy@110f8800 { /* USB3 port 0 HS phy */ ++ status = "ok"; ++ }; ++ ++ phy@110f8830 { /* USB3 port 0 SS phy */ ++ status = "ok"; ++ }; ++ ++ usb30@0 { ++ status = "ok"; ++ }; ++ ++ usb30@1 { ++ status = "ok"; ++ }; ++ ++ pcie0: pci@1b500000 { ++ status = "ok"; ++ phy-tx0-term-offset = <7>; ++ }; ++ ++ pcie1: pci@1b700000 { ++ status = "ok"; ++ phy-tx0-term-offset = <7>; ++ }; ++ ++ nand@1ac00000 { ++ status = "ok"; ++ ++ pinctrl-0 = <&nand_pins>; ++ pinctrl-names = "default"; ++ ++ nand-ecc-strength = <4>; ++ nand-bus-width = <8>; ++ ++ linux,part-probe = "qcom-smem"; ++ }; ++ ++ mdio0: mdio { ++ compatible = "virtual,mdio-gpio"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ gpios = <&qcom_pinmux 1 0 &qcom_pinmux 0 0>; ++ pinctrl-0 = <&mdio0_pins>; ++ pinctrl-names = "default"; ++ ++ phy0: ethernet-phy@0 { ++ device_type = "ethernet-phy"; ++ reg = <0>; ++ qca,ar8327-initvals = < ++ 0x00004 0x7600000 /* PAD0_MODE */ ++ 0x00008 0x1000000 /* PAD5_MODE */ ++ 0x0000c 0x80 /* PAD6_MODE */ ++ 0x000e4 0xaa545 /* MAC_POWER_SEL */ ++ 0x000e0 0xc74164de /* SGMII_CTRL */ ++ 0x0007c 0x4e /* PORT0_STATUS */ ++ 0x00094 0x4e /* PORT6_STATUS */ ++ >; ++ }; ++ ++ phy4: ethernet-phy@4 { ++ device_type = "ethernet-phy"; ++ reg = <4>; ++ }; ++ }; ++ ++ gmac1: ethernet@37200000 { ++ status = "ok"; ++ phy-mode = "rgmii"; ++ phy-handle = <&phy4>; ++ qcom,id = <1>; ++ ++ pinctrl-0 = <&rgmii2_pins>; ++ pinctrl-names = "default"; ++ }; ++ ++ gmac2: ethernet@37400000 { ++ status = "ok"; ++ phy-mode = "sgmii"; ++ qcom,id = <2>; ++ ++ fixed-link { ++ speed = <1000>; ++ full-duplex; ++ }; ++ }; ++ }; ++}; ++ ++&adm_dma { ++ status = "ok"; ++}; diff --git a/target/linux/ipq806x/patches-4.1/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch b/target/linux/ipq806x/patches-4.1/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch index e69de29..cd4341e 100644 --- a/target/linux/ipq806x/patches-4.1/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch +++ b/target/linux/ipq806x/patches-4.1/711-ARM-qcom-add-TP-Link-Archer-C2600-device-tree.patch @@ -0,0 +1,246 @@ +diff -urN a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +--- a/arch/arm/boot/dts/Makefile 2015-11-25 22:51:15.148899604 +0100 ++++ b/arch/arm/boot/dts/Makefile 2015-12-06 14:33:31.092396982 +0100 +@@ -453,6 +453,7 @@ + qcom-ipq8064-ap148.dtb \ + qcom-ipq8064-db149.dtb \ + qcom-ipq8064-r7500.dtb \ ++ qcom-ipq8064-c2600.dtb \ + qcom-msm8660-surf.dtb \ + qcom-msm8960-cdp.dtb \ + qcom-msm8974-sony-xperia-honami.dtb +diff -urN a/arch/arm/boot/dts/qcom-ipq8064-c2600.dts b/arch/arm/boot/dts/qcom-ipq8064-c2600.dts +--- a/arch/arm/boot/dts/qcom-ipq8064-c2600.dts 1970-01-01 01:00:00.000000000 +0100 ++++ b/arch/arm/boot/dts/qcom-ipq8064-c2600.dts 2015-12-06 14:20:05.152365670 +0100 +@@ -0,0 +1,231 @@ ++#include "qcom-ipq8064-v1.0.dtsi" ++ ++/ { ++ model = "TP-Link Archer C2600"; ++ compatible = "tplink,c2600", "qcom,ipq8064"; ++ ++ memory@0 { ++ reg = <0x42000000 0x1e000000>; ++ device_type = "memory"; ++ }; ++ ++ reserved-memory { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ rsvd@41200000 { ++ reg = <0x41200000 0x300000>; ++ no-map; ++ }; ++ }; ++ ++ aliases { ++ serial0 = &uart4; ++ mdio-gpio0 = &mdio0; ++ }; ++ ++ chosen { ++ linux,stdout-path = "serial0:115200n8"; ++ }; ++ ++ soc { ++ pinmux@800000 { ++ i2c4_pins: i2c4_pinmux { ++ pins = "gpio12", "gpio13"; ++ function = "gsbi4"; ++ bias-disable; ++ }; ++ ++ spi_pins: spi_pins { ++ mux { ++ pins = "gpio18", "gpio19", "gpio21"; ++ function = "gsbi5"; ++ drive-strength = <10>; ++ bias-none; ++ }; ++ }; ++ ++ nand_pins: nand_pins { ++ mux { ++ pins = "gpio34", "gpio35", "gpio36", ++ "gpio37", "gpio38", "gpio39", ++ "gpio40", "gpio41", "gpio42", ++ "gpio43", "gpio44", "gpio45", ++ "gpio46", "gpio47"; ++ function = "nand"; ++ drive-strength = <10>; ++ bias-disable; ++ }; ++ ++ pullups { ++ pins = "gpio39"; ++ bias-pull-up; ++ }; ++ ++ hold { ++ pins = "gpio40", "gpio41", "gpio42", ++ "gpio43", "gpio44", "gpio45", ++ "gpio46", "gpio47"; ++ bias-bus-hold; ++ }; ++ }; ++ ++ mdio0_pins: mdio0_pins { ++ mux { ++ pins = "gpio0", "gpio1"; ++ function = "gpio"; ++ drive-strength = <8>; ++ bias-disable; ++ }; ++ }; ++ ++ rgmii2_pins: rgmii2_pins { ++ mux { ++ pins = "gpio27", "gpio28", "gpio29", "gpio30", "gpio31", "gpio32", ++ "gpio51", "gpio52", "gpio59", "gpio60", "gpio61", "gpio62" ; ++ function = "rgmii2"; ++ drive-strength = <8>; ++ bias-disable; ++ }; ++ }; ++ }; ++ ++ gsbi@16300000 { ++ qcom,mode = <GSBI_PROT_I2C_UART>; ++ status = "ok"; ++ serial@16340000 { ++ status = "ok"; ++ }; ++ /* ++ * The i2c device on gsbi4 should not be enabled. ++ * On ipq806x designs gsbi4 i2c is meant for exclusive ++ * RPM usage. Turning this on in kernel manifests as ++ * i2c failure for the RPM. ++ */ ++ }; ++ ++ gsbi5: gsbi@1a200000 { ++ qcom,mode = <GSBI_PROT_SPI>; ++ status = "ok"; ++ ++ spi4: spi@1a280000 { ++ status = "ok"; ++ spi-max-frequency = <50000000>; ++ ++ pinctrl-0 = <&spi_pins>; ++ pinctrl-names = "default"; ++ ++ cs-gpios = <&qcom_pinmux 20 0>; ++ ++ flash: m25p80@0 { ++ compatible = "s25fl256s1"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ spi-max-frequency = <50000000>; ++ reg = <0>; ++ ++ linux,part-probe = "qcom-smem"; ++ }; ++ }; ++ }; ++ ++ phy@100f8800 { /* USB3 port 1 HS phy */ ++ status = "ok"; ++ }; ++ ++ phy@100f8830 { /* USB3 port 1 SS phy */ ++ status = "ok"; ++ }; ++ ++ phy@110f8800 { /* USB3 port 0 HS phy */ ++ status = "ok"; ++ }; ++ ++ phy@110f8830 { /* USB3 port 0 SS phy */ ++ status = "ok"; ++ }; ++ ++ usb30@0 { ++ status = "ok"; ++ }; ++ ++ usb30@1 { ++ status = "ok"; ++ }; ++ ++ pcie0: pci@1b500000 { ++ status = "ok"; ++ phy-tx0-term-offset = <7>; ++ }; ++ ++ pcie1: pci@1b700000 { ++ status = "ok"; ++ phy-tx0-term-offset = <7>; ++ }; ++ ++ nand@1ac00000 { ++ status = "ok"; ++ ++ pinctrl-0 = <&nand_pins>; ++ pinctrl-names = "default"; ++ ++ nand-ecc-strength = <4>; ++ nand-bus-width = <8>; ++ ++ linux,part-probe = "qcom-smem"; ++ }; ++ ++ mdio0: mdio { ++ compatible = "virtual,mdio-gpio"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ gpios = <&qcom_pinmux 1 0 &qcom_pinmux 0 0>; ++ pinctrl-0 = <&mdio0_pins>; ++ pinctrl-names = "default"; ++ ++ phy0: ethernet-phy@0 { ++ device_type = "ethernet-phy"; ++ reg = <0>; ++ qca,ar8327-initvals = < ++ 0x00004 0x7600000 /* PAD0_MODE */ ++ 0x00008 0x1000000 /* PAD5_MODE */ ++ 0x0000c 0x80 /* PAD6_MODE */ ++ 0x000e4 0xaa545 /* MAC_POWER_SEL */ ++ 0x000e0 0xc74164de /* SGMII_CTRL */ ++ 0x0007c 0x4e /* PORT0_STATUS */ ++ 0x00094 0x4e /* PORT6_STATUS */ ++ >; ++ }; ++ ++ phy4: ethernet-phy@4 { ++ device_type = "ethernet-phy"; ++ reg = <4>; ++ }; ++ }; ++ ++ gmac1: ethernet@37200000 { ++ status = "ok"; ++ phy-mode = "rgmii"; ++ phy-handle = <&phy4>; ++ qcom,id = <1>; ++ ++ pinctrl-0 = <&rgmii2_pins>; ++ pinctrl-names = "default"; ++ }; ++ ++ gmac2: ethernet@37400000 { ++ status = "ok"; ++ phy-mode = "sgmii"; ++ qcom,id = <2>; ++ ++ fixed-link { ++ speed = <1000>; ++ full-duplex; ++ }; ++ }; ++ }; ++}; ++ ++&adm_dma { ++ status = "ok"; ++}; diff --git a/target/linux/ipq806x/profiles/tplink.mk b/target/linux/ipq806x/profiles/tplink.mk index e69de29..d3f5a6c 100644 --- a/target/linux/ipq806x/profiles/tplink.mk +++ b/target/linux/ipq806x/profiles/tplink.mk @@ -0,0 +1,20 @@ +# +# Copyright (c) 2014 The Linux Foundation. All rights reserved. +# Copyright (C) 2009 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/C2600 + NAME:=TP-Link Archer C2600 + PACKAGES:= \ + kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev \ + kmod-usb3 kmod-usb-dwc3-qcom kmod-usb-phy-qcom-dwc3 \ + kmod-ath10k ath10k-firmware-qca99x0 wpad-mini +endef + +define Profile/C2600/Description + Package set for the TP-Link Archer C2600. +endef +$(eval $(call Profile,C2600))