bcm53xx: add kernel support for TP-LINK Archer C9 V1
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
This commit is contained in:
parent
fd924d2068
commit
eab2b17d43
3 changed files with 194 additions and 42 deletions
|
@ -0,0 +1,146 @@
|
||||||
|
From 41182beb217c47cfbaaf26a60f22a8b3943faa61 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@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@milecki.pl>
|
||||||
|
Signed-off-by: Florian Fainelli <f.fainelli@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@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";
|
||||||
|
+};
|
|
@ -0,0 +1,48 @@
|
||||||
|
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@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@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);
|
|
@ -1,42 +0,0 @@
|
||||||
From 21500872c1dba33848ddcf6bea97d58772675d36 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@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@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);
|
|
Loading…
Reference in a new issue