ARM: dts: BCM5301X: Add support for TP-LINK Archer C5 V2

Message ID 20170311121453.18534-1-zajec5@gmail.com
State New
Headers show

Commit Message

Rafał Miłecki March 11, 2017, 12:14 p.m.
From: Rafał Miłecki <rafal@milecki.pl>

This is BCM47081A0 based home router with BCM43217 and BCM4352 wireless
chipsets.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 arch/arm/boot/dts/Makefile                         |  1 +
 arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts | 98 ++++++++++++++++++++++
 2 files changed, 99 insertions(+)
 create mode 100644 arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts

Comments

Andrew Lunn March 11, 2017, 5:23 p.m. | #1
On Sat, Mar 11, 2017 at 01:14:53PM +0100, Rafa?? Mi??ecki wrote:
> From: Rafa?? Mi??ecki <rafal@milecki.pl>
> 
> This is BCM47081A0 based home router with BCM43217 and BCM4352 wireless
> chipsets.
 
Hi Rafal

Have you made any progress with the Ethernet switch? Does anybody know
if it is compatible with the SF2/B53 DSA driver?

I have a DIR 860l v1 router, using the same chipset. I'm interested in
the switch, given my DSA maintainer role.

Thanks
	Andrew
Rafał Miłecki March 11, 2017, 5:27 p.m. | #2
Hi Andrew,

On 11 March 2017 at 18:23, Andrew Lunn <andrew@lunn.ch> wrote:
> On Sat, Mar 11, 2017 at 01:14:53PM +0100, Rafa?? Mi??ecki wrote:
>> From: Rafa?? Mi??ecki <rafal@milecki.pl>
>>
>> This is BCM47081A0 based home router with BCM43217 and BCM4352 wireless
>> chipsets.
>
> Have you made any progress with the Ethernet switch? Does anybody know
> if it is compatible with the SF2/B53 DSA driver?
>
> I have a DIR 860l v1 router, using the same chipset. I'm interested in
> the switch, given my DSA maintainer role.

I mostly work with LEDE. Just few days ago I managed get kernel 4.9
running stable (there was a memory corruption caused by iproc PCIe
controller driver). With kernel 4.9 I can finally start testing b53. I
should have some news withing new weeks.
Florian Fainelli March 11, 2017, 9:05 p.m. | #3
On 03/11/2017 09:27 AM, Rafał Miłecki wrote:
> Hi Andrew,
> 
> On 11 March 2017 at 18:23, Andrew Lunn <andrew@lunn.ch> wrote:
>> On Sat, Mar 11, 2017 at 01:14:53PM +0100, Rafa?? Mi??ecki wrote:
>>> From: Rafa?? Mi??ecki <rafal@milecki.pl>
>>>
>>> This is BCM47081A0 based home router with BCM43217 and BCM4352 wireless
>>> chipsets.
>>
>> Have you made any progress with the Ethernet switch? Does anybody know
>> if it is compatible with the SF2/B53 DSA driver?
>>
>> I have a DIR 860l v1 router, using the same chipset. I'm interested in
>> the switch, given my DSA maintainer role.
> 
> I mostly work with LEDE. Just few days ago I managed get kernel 4.9
> running stable (there was a memory corruption caused by iproc PCIe
> controller driver). With kernel 4.9 I can finally start testing b53. I
> should have some news withing new weeks.

FYI, the initial b53 work was done by testing on:
- BCM53010 (SR400AC) and BCM53012 (BCM953012ER)
- BCM58265 (Northstar Plus)
- externally attached BCM53125 to a BCM7445

So let me know if you need guidance/help with getting the 4708/5301X
devices to work.
Andrew Lunn March 12, 2017, 5:10 p.m. | #4
> +	chosen {
> +		bootargs = "console=ttyS0,115200 earlycon";

Using bootargs to pass the serial settings has been deprecated for a
while. Please use stdout-path instead.

       Andrew
Jon Mason March 13, 2017, 2:31 p.m. | #5
On Sat, Mar 11, 2017 at 4:05 PM, Florian Fainelli <f.fainelli@gmail.com> wrote:
>
>
> On 03/11/2017 09:27 AM, Rafał Miłecki wrote:
>> Hi Andrew,
>>
>> On 11 March 2017 at 18:23, Andrew Lunn <andrew@lunn.ch> wrote:
>>> On Sat, Mar 11, 2017 at 01:14:53PM +0100, Rafa?? Mi??ecki wrote:
>>>> From: Rafa?? Mi??ecki <rafal@milecki.pl>
>>>>
>>>> This is BCM47081A0 based home router with BCM43217 and BCM4352 wireless
>>>> chipsets.
>>>
>>> Have you made any progress with the Ethernet switch? Does anybody know
>>> if it is compatible with the SF2/B53 DSA driver?
>>>
>>> I have a DIR 860l v1 router, using the same chipset. I'm interested in
>>> the switch, given my DSA maintainer role.
>>
>> I mostly work with LEDE. Just few days ago I managed get kernel 4.9
>> running stable (there was a memory corruption caused by iproc PCIe
>> controller driver). With kernel 4.9 I can finally start testing b53. I
>> should have some news withing new weeks.
>
> FYI, the initial b53 work was done by testing on:
> - BCM53010 (SR400AC) and BCM53012 (BCM953012ER)

We did some testing internally on BCM953012HR boards internally, and
everything appears to be working.  I echo Florian's comment offering
help if there are any issues.

Thanks,
Jon

> - BCM58265 (Northstar Plus)
> - externally attached BCM53125 to a BCM7445
>
> So let me know if you need guidance/help with getting the 4708/5301X
> devices to work.
> --
> Florian
Andrew Lunn March 13, 2017, 7:14 p.m. | #6
On Mon, Mar 13, 2017 at 07:48:26PM +0100, Rafa?? Mi??ecki wrote:
> On 03/12/2017 06:10 PM, Andrew Lunn wrote:
> >>+	chosen {
> >>+		bootargs = "console=ttyS0,115200 earlycon";
> >
> >Using bootargs to pass the serial settings has been deprecated for a
> >while. Please use stdout-path instead.
> 
> I tried following patch with my SR400ac (I put Archer C5 aside for now).

Hi Rafael

Take a look at for example the bcm911360k.dts

        aliases {
                serial0 = &uart3;
        };

        chosen {
                stdout-path = "serial0:115200n8";
        };

You need an alias to the serial device you want to us, and you should
list the speed, parity, bits etc.

	Andrew
Rafał Miłecki March 13, 2017, 7:15 p.m. | #7
On 03/13/2017 08:14 PM, Andrew Lunn wrote:
> On Mon, Mar 13, 2017 at 07:48:26PM +0100, Rafa?? Mi??ecki wrote:
>> On 03/12/2017 06:10 PM, Andrew Lunn wrote:
>>>> +	chosen {
>>>> +		bootargs = "console=ttyS0,115200 earlycon";
>>>
>>> Using bootargs to pass the serial settings has been deprecated for a
>>> while. Please use stdout-path instead.
>>
>> I tried following patch with my SR400ac (I put Archer C5 aside for now).
>
> Hi Rafael
>
> Take a look at for example the bcm911360k.dts
>
>         aliases {
>                 serial0 = &uart3;
>         };
>
>         chosen {
>                 stdout-path = "serial0:115200n8";
>         };
>
> You need an alias to the serial device you want to us, and you should
> list the speed, parity, bits etc.

That was actually my first try (just with s/uart3/uart0) and I got the same problem.
Jon Mason March 13, 2017, 7:27 p.m. | #8
On Mon, Mar 13, 2017 at 3:15 PM, Rafał Miłecki <rafal@milecki.pl> wrote:
> On 03/13/2017 08:14 PM, Andrew Lunn wrote:
>>
>> On Mon, Mar 13, 2017 at 07:48:26PM +0100, Rafa?? Mi??ecki wrote:
>>>
>>> On 03/12/2017 06:10 PM, Andrew Lunn wrote:
>>>>>
>>>>> +       chosen {
>>>>> +               bootargs = "console=ttyS0,115200 earlycon";
>>>>
>>>>
>>>> Using bootargs to pass the serial settings has been deprecated for a
>>>> while. Please use stdout-path instead.
>>>
>>>
>>> I tried following patch with my SR400ac (I put Archer C5 aside for now).
>>
>>
>> Hi Rafael
>>
>> Take a look at for example the bcm911360k.dts
>>
>>         aliases {
>>                 serial0 = &uart3;
>>         };
>>
>>         chosen {
>>                 stdout-path = "serial0:115200n8";
>>         };
>>
>> You need an alias to the serial device you want to us, and you should
>> list the speed, parity, bits etc.
>
>
> That was actually my first try (just with s/uart3/uart0) and I got the same
> problem.

I have a similar line in the bcm953012k.dts, and the serial there works for me.
Andrew Lunn March 13, 2017, 7:35 p.m. | #9
On Mon, Mar 13, 2017 at 08:15:27PM +0100, Rafa?? Mi??ecki wrote:
> On 03/13/2017 08:14 PM, Andrew Lunn wrote:
> >On Mon, Mar 13, 2017 at 07:48:26PM +0100, Rafa?? Mi??ecki wrote:
> >>On 03/12/2017 06:10 PM, Andrew Lunn wrote:
> >>>>+	chosen {
> >>>>+		bootargs = "console=ttyS0,115200 earlycon";
> >>>
> >>>Using bootargs to pass the serial settings has been deprecated for a
> >>>while. Please use stdout-path instead.
> >>
> >>I tried following patch with my SR400ac (I put Archer C5 aside for now).
> >
> >Hi Rafael
> >
> >Take a look at for example the bcm911360k.dts
> >
> >        aliases {
> >                serial0 = &uart3;
> >        };
> >
> >        chosen {
> >                stdout-path = "serial0:115200n8";
> >        };
> >
> >You need an alias to the serial device you want to us, and you should
> >list the speed, parity, bits etc.
> 
> That was actually my first try (just with s/uart3/uart0) and I got the same problem.

Hi Rafael

Try decompiling the generate .dtb file back to a dts and see if it
looks correct.

      Andrew
Rafał Miłecki March 13, 2017, 9:46 p.m. | #10
On 03/13/2017 08:35 PM, Andrew Lunn wrote:
> On Mon, Mar 13, 2017 at 08:15:27PM +0100, Rafa?? Mi??ecki wrote:
>> On 03/13/2017 08:14 PM, Andrew Lunn wrote:
>>> On Mon, Mar 13, 2017 at 07:48:26PM +0100, Rafa?? Mi??ecki wrote:
>>>> On 03/12/2017 06:10 PM, Andrew Lunn wrote:
>>>>>> +	chosen {
>>>>>> +		bootargs = "console=ttyS0,115200 earlycon";
>>>>>
>>>>> Using bootargs to pass the serial settings has been deprecated for a
>>>>> while. Please use stdout-path instead.
>>>>
>>>> I tried following patch with my SR400ac (I put Archer C5 aside for now).
>>>
>>> Hi Rafael
>>>
>>> Take a look at for example the bcm911360k.dts
>>>
>>>        aliases {
>>>                serial0 = &uart3;
>>>        };
>>>
>>>        chosen {
>>>                stdout-path = "serial0:115200n8";
>>>        };
>>>
>>> You need an alias to the serial device you want to us, and you should
>>> list the speed, parity, bits etc.
>>
>> That was actually my first try (just with s/uart3/uart0) and I got the same problem.
>
> Hi Rafael
>
> Try decompiling the generate .dtb file back to a dts and see if it
> looks correct.

I decompiled dtb, it looks OK to me, let me paste relevant part:

	chosen {
		stdout-path = "serial0:115200n8";
		bootargs = "earlycon";
	};

	aliases {
		serial0 = "/chipcommonA/serial@0300";
	};

	memory {
		device_type = "memory";
		reg = <0x0 0x8000000 0x88000000 0x8000000>;
	};

	chipcommonA {
		compatible = "simple-bus";
		ranges = <0x0 0x18000000 0x1000>;
		#address-cells = <0x1>;
		#size-cells = <0x1>;

		serial@0300 {
			compatible = "ns16550";
			reg = <0x300 0x100>;
			interrupts = <0x0 0x55 0x4>;
			clocks = <0x2>;
			status = "okay";
		};

		serial@0400 {
			compatible = "ns16550";
			reg = <0x400 0x100>;
			interrupts = <0x0 0x55 0x4>;
			clocks = <0x2>;
			status = "disabled";
		};
	};

I got some warnings, but I don't think they are critical:
Warning (unit_address_vs_reg): Node /memory has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /chipcommonA has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /mpcore has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /usb2-phy has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /usb3-phy has a reg or ranges property, but no unit name

Patch

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 595c74a35a7b..1e24f5db4835 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -88,6 +88,7 @@  dtb-$(CONFIG_ARCH_BCM_5301X) += \
 	bcm47081-buffalo-wzr-900dhp.dtb \
 	bcm47081-luxul-xap-1410.dtb \
 	bcm47081-luxul-xwr-1200.dtb \
+	bcm47081-tplink-archer-c5-v2.dtb \
 	bcm4709-asus-rt-ac87u.dtb \
 	bcm4709-buffalo-wxr-1900dhp.dtb \
 	bcm4709-linksys-ea9200.dtb \
diff --git a/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts b/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts
new file mode 100644
index 000000000000..dc2af20fba9f
--- /dev/null
+++ b/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts
@@ -0,0 +1,98 @@ 
+/*
+ * Copyright (C) 2017 Rafał Miłecki <rafal@milecki.pl>
+ *
+ * Licensed under the ISC license.
+ */
+
+/dts-v1/;
+
+#include "bcm47081.dtsi"
+
+/ {
+	compatible = "tplink,archer-c5-v2", "brcm,bcm47081", "brcm,bcm4708";
+	model = "TP-LINK Archer C5 V2";
+
+	chosen {
+		bootargs = "console=ttyS0,115200 earlycon";
+	};
+
+	memory {
+		reg = <0x00000000 0x08000000>;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		2ghz {
+			label = "bcm53xx:green:2ghz";
+			gpios = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
+		};
+
+		lan {
+			label = "bcm53xx:green:lan";
+			gpios = <&chipcommon 1 GPIO_ACTIVE_HIGH>;
+		};
+
+		usb2-port1 {
+			label = "bcm53xx:green:usb2-port1";
+			gpios = <&chipcommon 2 GPIO_ACTIVE_HIGH>;
+		};
+
+		power {
+			label = "bcm53xx:green:power";
+			gpios = <&chipcommon 4 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "default-on";
+		};
+
+		wan-green {
+			label = "bcm53xx:green:wan";
+			gpios = <&chipcommon 5 GPIO_ACTIVE_HIGH>;
+		};
+
+		wps {
+			label = "bcm53xx:green:wps";
+			gpios = <&chipcommon 6 GPIO_ACTIVE_HIGH>;
+		};
+
+		wan-amber {
+			label = "bcm53xx:amber:wan";
+			gpios = <&chipcommon 8 GPIO_ACTIVE_HIGH>;
+		};
+
+		5ghz {
+			label = "bcm53xx:green:5ghz";
+			gpios = <&chipcommon 12 GPIO_ACTIVE_HIGH>;
+		};
+
+		usb2-port2 {
+			label = "bcm53xx:green:usb2-port2";
+			gpios = <&chipcommon 13 GPIO_ACTIVE_HIGH>;
+		};
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		rfkill {
+			label = "WiFi";
+			linux,code = <KEY_RFKILL>;
+			gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>;
+		};
+
+		restart {
+			label = "Reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&chipcommon 7 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&spi_nor {
+	status = "okay";
+};
+
+&usb2 {
+	vcc-gpio = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+};