Hi, On Sun, Dec 6, 2015 at 3:20 PM, Josh Bendavid <[email protected]> wrote: > From: Josh Bendavid <[email protected]> > > 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 <[email protected]> > --- > > 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 [email protected] $@ > 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 [email protected] > + mv [email protected] $@ > +endef > + > define Build/fit > $(TOPDIR)/scripts/mkits.sh \ > -D $(DEVICE_NAME) -o [email protected] -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 <[email protected]> wrote: Please don't top post or send new versions as replies to older version. Jonas _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
