[OpenWrt-Devel] [PATCH] [ipq806x] Add initial support for TP-Link Archer C2600

Josh Bendavid Josh.Bendavid at cern.ch
Mon Dec 7 10:58:40 EST 2015


(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 at 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 at openwrt.org> wrote:
>
>> Hi,
>>
>> On Sun, Dec 6, 2015 at 3:20 PM, Josh Bendavid <Josh.Bendavid at cern.ch>
>> wrote:
>> > From: Josh Bendavid <joshbendavid at 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 at 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 at eth1" "5:wan" "0 at 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 at 0 {
>> > ++ reg = <0x42000000 0x1e000000>;
>> > ++ device_type = "memory";
>> > ++ };
>> > ++
>> > ++ reserved-memory {
>> > ++ #address-cells = <1>;
>> > ++ #size-cells = <1>;
>> > ++ ranges;
>> > ++ rsvd at 41200000 {
>> > ++ reg = <0x41200000 0x300000>;
>> > ++ no-map;
>> > ++ };
>> > ++ };
>> > ++
>> > ++ aliases {
>> > ++ serial0 = &uart4;
>> > ++ mdio-gpio0 = &mdio0;
>> > ++ };
>> > ++
>> > ++ chosen {
>> > ++ linux,stdout-path = "serial0:115200n8";
>> > ++ };
>> > ++
>> > ++ soc {
>> > ++ pinmux at 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 at 16300000 {
>> > ++ qcom,mode = <GSBI_PROT_I2C_UART>;
>> > ++ status = "ok";
>> > ++ serial at 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 at 1a200000 {
>> > ++ qcom,mode = <GSBI_PROT_SPI>;
>> > ++ status = "ok";
>> > ++
>> > ++ spi4: spi at 1a280000 {
>> > ++ status = "ok";
>> > ++ spi-max-frequency = <50000000>;
>> > ++
>> > ++ pinctrl-0 = <&spi_pins>;
>> > ++ pinctrl-names = "default";
>> > ++
>> > ++ cs-gpios = <&qcom_pinmux 20 0>;
>> > ++
>> > ++ flash: m25p80 at 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 at 100f8800 { /* USB3 port 1 HS phy */
>> > ++ status = "ok";
>> > ++ };
>> > ++
>> > ++ phy at 100f8830 { /* USB3 port 1 SS phy */
>> > ++ status = "ok";
>> > ++ };
>> > ++
>> > ++ phy at 110f8800 { /* USB3 port 0 HS phy */
>> > ++ status = "ok";
>> > ++ };
>> > ++
>> > ++ phy at 110f8830 { /* USB3 port 0 SS phy */
>> > ++ status = "ok";
>> > ++ };
>> > ++
>> > ++ usb30 at 0 {
>> > ++ status = "ok";
>> > ++ };
>> > ++
>> > ++ usb30 at 1 {
>> > ++ status = "ok";
>> > ++ };
>> > ++
>> > ++ pcie0: pci at 1b500000 {
>> > ++ status = "ok";
>> > ++ phy-tx0-term-offset = <7>;
>> > ++ };
>> > ++
>> > ++ pcie1: pci at 1b700000 {
>> > ++ status = "ok";
>> > ++ phy-tx0-term-offset = <7>;
>> > ++ };
>> > ++
>> > ++ nand at 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 at 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 at 4 {
>> > ++ device_type = "ethernet-phy";
>> > ++ reg = <4>;
>> > ++ };
>> > ++ };
>> > ++
>> > ++ gmac1: ethernet at 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 at 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 at openwrt.org> wrote:
>>
>> Please don't top post or send new versions as replies to older version.
>>
>>
>> Jonas
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20151207/fb4e8fd8/attachment.htm>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list