[source] bcm53xx: add kernel support for TP-LINK Archer C9 V1

LEDE Commits lede-commits at lists.infradead.org
Fri Nov 18 23:23:54 PST 2016


rmilecki pushed a commit to source.git, branch master:
https://git.lede-project.org/eab2b17d436fa7fd72f4ec4d84d2cd497fcbc0cb

commit eab2b17d436fa7fd72f4ec4d84d2cd497fcbc0cb
Author: Rafał Miłecki <rafal at milecki.pl>
AuthorDate: Sat Nov 19 07:58:25 2016 +0100

    bcm53xx: add kernel support for TP-LINK Archer C9 V1
    
    Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
---
 ...-BCM5301X-Add-DT-for-TP-LINK-Archer-C9-V1.patch | 146 +++++++++++++++++++++
 ...m47xxpart-add-device-specific-workarounds.patch |  48 +++++++
 ...part-workaround-for-Asus-RT-AC87U-asus-pa.patch |  42 ------
 3 files changed, 194 insertions(+), 42 deletions(-)

diff --git a/target/linux/bcm53xx/patches-4.4/044-0008-ARM-BCM5301X-Add-DT-for-TP-LINK-Archer-C9-V1.patch b/target/linux/bcm53xx/patches-4.4/044-0008-ARM-BCM5301X-Add-DT-for-TP-LINK-Archer-C9-V1.patch
new file mode 100644
index 0000000..5b2aa26
--- /dev/null
+++ b/target/linux/bcm53xx/patches-4.4/044-0008-ARM-BCM5301X-Add-DT-for-TP-LINK-Archer-C9-V1.patch
@@ -0,0 +1,146 @@
+From 41182beb217c47cfbaaf26a60f22a8b3943faa61 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Sun, 13 Nov 2016 11:12:09 +0100
+Subject: [PATCH] ARM: BCM5301X: Add DT for TP-LINK Archer C9 V1
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It's BCM4709A0 based device with 16 MiB flash, 128 MiB of RAM and two
+PCIe based on-PCB BCM4360 chipsets.
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
+---
+ arch/arm/boot/dts/Makefile                        |   1 +
+ arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts | 114 ++++++++++++++++++++++
+ 2 files changed, 115 insertions(+)
+ create mode 100644 arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts
+
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -77,6 +77,7 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \
+ 	bcm4709-buffalo-wxr-1900dhp.dtb \
+ 	bcm4709-netgear-r7000.dtb \
+ 	bcm4709-netgear-r8000.dtb \
++	bcm4709-tplink-archer-c9-v1.dtb \
+ 	bcm47094-dlink-dir-885l.dtb \
+ 	bcm47094-luxul-xwr-3100.dtb \
+ 	bcm47094-netgear-r8500.dtb \
+--- /dev/null
++++ b/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts
+@@ -0,0 +1,114 @@
++/*
++ * Copyright (C) 2016 Rafał Miłecki <rafal at milecki.pl>
++ *
++ * Licensed under the ISC license.
++ */
++
++/dts-v1/;
++
++#include "bcm4709.dtsi"
++
++/ {
++	compatible = "tplink,archer-c9-v1", "brcm,bcm4709", "brcm,bcm4708";
++	model = "TP-LINK Archer C9 V1";
++
++	chosen {
++		bootargs = "console=ttyS0,115200 earlycon";
++	};
++
++	memory {
++		reg = <0x00000000 0x08000000>;
++	};
++
++	leds {
++		compatible = "gpio-leds";
++
++		lan {
++			label = "bcm53xx:blue:lan";
++			gpios = <&chipcommon 1 GPIO_ACTIVE_HIGH>;
++			linux,default-trigger = "default-off";
++		};
++
++		wps {
++			label = "bcm53xx:blue:wps";
++			gpios = <&chipcommon 2 GPIO_ACTIVE_HIGH>;
++			linux,default-trigger = "default-off";
++		};
++
++		2ghz {
++			label = "bcm53xx:blue:2ghz";
++			gpios = <&chipcommon 4 GPIO_ACTIVE_HIGH>;
++			linux,default-trigger = "default-off";
++		};
++
++		5ghz {
++			label = "bcm53xx:blue:5ghz";
++			gpios = <&chipcommon 5 GPIO_ACTIVE_HIGH>;
++			linux,default-trigger = "default-off";
++		};
++
++		usb3 {
++			label = "bcm53xx:blue:usb3";
++			gpios = <&chipcommon 6 GPIO_ACTIVE_HIGH>;
++			linux,default-trigger = "default-off";
++		};
++
++		usb2 {
++			label = "bcm53xx:blue:usb2";
++			gpios = <&chipcommon 7 GPIO_ACTIVE_HIGH>;
++			linux,default-trigger = "default-off";
++		};
++
++		wan-blue {
++			label = "bcm53xx:blue:wan";
++			gpios = <&chipcommon 14 GPIO_ACTIVE_HIGH>;
++			linux,default-trigger = "default-off";
++		};
++
++		wan-amber {
++			label = "bcm53xx:amber:wan";
++			gpios = <&chipcommon 15 GPIO_ACTIVE_HIGH>;
++			linux,default-trigger = "default-off";
++		};
++
++		power {
++			label = "bcm53xx:blue:power";
++			gpios = <&chipcommon 18 GPIO_ACTIVE_LOW>;
++			linux,default-trigger = "default-on";
++		};
++	};
++
++	gpio-keys {
++		compatible = "gpio-keys";
++		#address-cells = <1>;
++		#size-cells = <0>;
++
++		wps {
++			label = "WPS";
++			linux,code = <KEY_WPS_BUTTON>;
++			gpios = <&chipcommon 0 GPIO_ACTIVE_LOW>;
++		};
++
++		restart {
++			label = "Reset";
++			linux,code = <KEY_RESTART>;
++			gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>;
++		};
++	};
++};
++
++&uart0 {
++	status = "okay";
++};
++
++&usb2 {
++	vcc-gpio = <&chipcommon 13 GPIO_ACTIVE_HIGH>;
++};
++
++&usb3 {
++	vcc-gpio = <&chipcommon 12 GPIO_ACTIVE_HIGH>;
++};
++
++&spi_nor {
++	status = "okay";
++};
diff --git a/target/linux/bcm53xx/patches-4.4/901-mtd-bcm47xxpart-add-device-specific-workarounds.patch b/target/linux/bcm53xx/patches-4.4/901-mtd-bcm47xxpart-add-device-specific-workarounds.patch
new file mode 100644
index 0000000..06cb510
--- /dev/null
+++ b/target/linux/bcm53xx/patches-4.4/901-mtd-bcm47xxpart-add-device-specific-workarounds.patch
@@ -0,0 +1,48 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Subject: [PATCH] mtd: bcm47xxpart: add device specific workarounds
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+---
+
+--- a/drivers/mtd/bcm47xxpart.c
++++ b/drivers/mtd/bcm47xxpart.c
+@@ -14,6 +14,7 @@
+ #include <linux/slab.h>
+ #include <linux/mtd/mtd.h>
+ #include <linux/mtd/partitions.h>
++#include <linux/of.h>
+ 
+ #include <uapi/linux/magic.h>
+ 
+@@ -159,6 +160,28 @@ static int bcm47xxpart_parse(struct mtd_info *master,
+ 			break;
+ 		}
+ 
++		/*
++		 * Device specific workarounds (hacks). We should use DT to
++		 * define partitions but we need a working TRX firmware splitter
++		 * first.
++		 */
++		if (of_machine_is_compatible("asus,rt-ac87u") && offset == 0x7ec0000) {
++			/*
++			 * "asus" partition uses JFFS2 which we don't detect and
++			 * we don't want to as this could affect other devices.
++			 */
++			bcm47xxpart_add_part(&parts[curr_part++], "asus", offset, MTD_WRITEABLE);
++			continue;
++		} else  if (of_machine_is_compatible("tplink,archer-c9-v1") && offset == 0xe40000) {
++			/*
++			 * There is a whole set of partitions (not even listed
++			 * by original firmware): "default-mac", "pin",
++			 * "partition-table", etc.
++			 */
++			bcm47xxpart_add_part(&parts[curr_part++], "tplink", offset, MTD_WRITEABLE);
++			continue;
++		}
++
+ 		/* Read beginning of the block */
+ 		err = mtd_read(master, offset, BCM47XXPART_BYTES_TO_READ,
+ 			       &bytes_read, (uint8_t *)buf);
diff --git a/target/linux/bcm53xx/patches-4.4/901-mtd-bcm47xxpart-workaround-for-Asus-RT-AC87U-asus-pa.patch b/target/linux/bcm53xx/patches-4.4/901-mtd-bcm47xxpart-workaround-for-Asus-RT-AC87U-asus-pa.patch
deleted file mode 100644
index d9537d5..0000000
--- a/target/linux/bcm53xx/patches-4.4/901-mtd-bcm47xxpart-workaround-for-Asus-RT-AC87U-asus-pa.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 21500872c1dba33848ddcf6bea97d58772675d36 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5 at gmail.com>
-Date: Sun, 17 May 2015 14:00:52 +0200
-Subject: [PATCH] mtd: bcm47xxpart: workaround for Asus RT-AC87U "asus"
- partition
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
----
- drivers/mtd/bcm47xxpart.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
---- a/drivers/mtd/bcm47xxpart.c
-+++ b/drivers/mtd/bcm47xxpart.c
-@@ -14,6 +14,7 @@
- #include <linux/slab.h>
- #include <linux/mtd/mtd.h>
- #include <linux/mtd/partitions.h>
-+#include <linux/of.h>
- 
- #include <uapi/linux/magic.h>
- 
-@@ -159,6 +160,17 @@ static int bcm47xxpart_parse(struct mtd_
- 			break;
- 		}
- 
-+		/*
-+		 * Ugly workaround for Asus RT-AC87U and its "asus" partition.
-+		 * It uses JFFS2 which we don't (want to) detect. We should
-+		 * probably use DT to define partitions but we need a working
-+		 * TRX firmware splitter first.
-+		 */
-+		if (of_machine_is_compatible("asus,rt-ac87u") && offset == 0x7ec0000) {
-+			bcm47xxpart_add_part(&parts[curr_part++], "asus", offset, MTD_WRITEABLE);
-+			continue;
-+		}
-+
- 		/* Read beginning of the block */
- 		err = mtd_read(master, offset, BCM47XXPART_BYTES_TO_READ,
- 			       &bytes_read, (uint8_t *)buf);



More information about the lede-commits mailing list