Support for DLINK DIR665
Subsystems (4)
Andrew Lunn
maintainercover Support for DLINK DIR665
The DLINK is a wireless access point using a Kirkwood processor and a Marvell TopDog wifi chipset.
The base device tree file was provided by Claudio Leite. I've performed a few cleanups, added dsa support for the in build switch, and extended the defconfigs for regression testing.
Andrew Lunn (3):
ARM: Kirkwood: DIR665: Instantiate Distributed Switch Architecture
ARM: mvebu: Add DLINK DIR665 options to mvebu_v5_defconfig
ARM: config: Add DLINK DIR665 options to multi_v5_defconfig
Claudio Leite (1):
ARM: Kirkwood: Add support for DLink DIR665
arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/kirkwood-dir665.dts | 278 ++++++++++++++++++++++++++++++++++ arch/arm/configs/multi_v5_defconfig | 2 + arch/arm/configs/mvebu_v5_defconfig | 2 + 4 files changed, 283 insertions(+) create mode 100644 arch/arm/boot/dts/kirkwood-dir665.dts
Signature · 1 line
2.1.1
Andrew Lunn
maintainerPATCH 1/4 ARM: Kirkwood: Add support for DLink DIR665
From: Claudio Leite <[email protected]>
Add a device tree description of the DLINK DIR665 wireless access point. The support for the 88E6171 switch will be added in a later patch.
---
This description was mostly produced by Claudio Leite with a few minor cleanups by my.
--- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/kirkwood-dir665.dts | 233 ++++++++++++++++++++++++++++++++++ 2 files changed, 234 insertions(+) create mode 100644 arch/arm/boot/dts/kirkwood-dir665.dts
arch/arm/boot/dts/Makefile +1 -0
@@ -104,6 +104,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += kirkwood-b3.dtb \ kirkwood-d2net.dtb \ kirkwood-db-88f6281.dtb \ kirkwood-db-88f6282.dtb \ + kirkwood-dir665.dtb \ kirkwood-dns320.dtb \ kirkwood-dns325.dtb \ kirkwood-dockstar.dtb \
arch/arm/boot/dts/kirkwood-dir665.dts new file +233 -0
233 lines not on this page · raw message
Signature · 1 line
2.1.1
PATCH 1/4 ARM: Kirkwood: Add support for DLink DIR665
Quoted 7 lines · Andrew Lunn (andrew at lunn.ch)
From: Claudio Leite <[email protected]>
Add a device tree description of the DLINK DIR665 wireless access point. The support for the 88E6171 switch will be added in a later patch.
Signed-off-by Andrew Lunn <[email protected]>
Quoted 263 lines
---
This description was mostly produced by Claudio Leite with a few minor cleanups by my.
--- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/kirkwood-dir665.dts | 233 ++++++++++++++++++++++++++++++++++ 2 files changed, 234 insertions(+) create mode 100644 arch/arm/boot/dts/kirkwood-dir665.dtsarch/arm/boot/dts/Makefile +1
-0@@ -104,6 +104,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += kirkwood-b3.dtb \ kirkwood-d2net.dtb \ kirkwood-db-88f6281.dtb \ kirkwood-db-88f6282.dtb \ + kirkwood-dir665.dtb \ kirkwood-dns320.dtb \ kirkwood-dns325.dtb \ kirkwood-dockstar.dtb \arch/arm/boot/dts/kirkwood-dir665.dts new file +233
-0@@ -0,0 +1,233 @@ +/* + * Copyright (C) 2014 Claudio Leite <[email protected]> + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +/dts-v1/; + +#include "kirkwood.dtsi" +#include "kirkwood-6281.dtsi" + +/ { + model = "D-Link DIR-665"; + compatible = "dlink,dir-665", "marvell,kirkwood-88f6281", "marvell,kirkwood"; + + memory { + device_type = "memory"; + reg = <0x00000000 0x8000000>; /* 128 MB */ + }; + + chosen { + bootargs = "console=ttyS0,115200n8 earlyprintk"; + stdout-path = &uart0; + }; + + mbus { + pcie-controller { + status = "okay"; + + pcie at 1,0 { + status = "okay"; + }; + }; + }; + + ocp at f1000000 { + pinctrl: pin-controller at 10000 { + pinctrl-0 =< &pmx_led_usb + &pmx_led_internet_blue + &pmx_led_internet_amber + &pmx_led_5g &pmx_led_status_blue + &pmx_led_wps &pmx_led_status_amber + &pmx_led_24g + &pmx_btn_restart &pmx_btn_wps>; + pinctrl-names = "default"; + + pmx_led_usb: pmx-led-usb { + marvell,pins = "mpp12"; + marvell,function = "gpio"; + }; + pmx_led_internet_blue: pmx-led-internet-blue { + marvell,pins = "mpp42"; + marvell,function = "gpio"; + }; + pmx_led_internet_amber: pmx-led-internet-amber { + marvell,pins = "mpp43"; + marvell,function = "gpio"; + }; + pmx_led_5g: pmx-led-5g { + marvell,pins = "mpp44"; + marvell,function = "gpio"; + }; + pmx_led_status_blue: pmx-led-status-blue { + marvell,pins = "mpp45"; + marvell,function = "gpio"; + }; + pmx_led_wps: pmx-led-wps { + marvell,pins = "mpp47"; + marvell,function = "gpio"; + }; + pmx_led_status_amber: pmx-led-status-amber { + marvell,pins = "mpp48"; + marvell,function = "gpio"; + }; + pmx_led_24g: pmx-led-24g { + marvell,pins = "mpp49"; + marvell,function = "gpio"; + }; + pmx_btn_restart: pmx-btn-restart { + marvell,pins = "mpp28"; + marvell,function = "gpio"; + }; + pmx_btn_wps: pmx-btn-wps { + marvell,pins = "mpp46"; + marvell,function = "gpio"; + }; + }; + + spi at 10600 { + status = "okay"; + m25p80 at 0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "mxicy,mx25l12805d"; + spi-max-frequency = <50000000>; + reg = <0>; + + partition at 0 { + label = "uboot"; + reg = <0x0 0x30000>; + read-only; + }; + + partition at 30000 { + label = "nvram"; + reg = <0x30000 0x10000>; + read-only; + }; + + partition at 40000 { + label = "kernel"; + reg = <0x40000 0x180000>; + }; + + partition at 1c0000 { + label = "rootfs"; + reg = <0x1c0000 0xe00000>; + }; + + cal_data: partition at fc0000 { + label = "cal_data"; + reg = <0xfc0000 0x10000>; + read-only; + }; + + partition at fd0000 { + label = "lang_pack"; + reg = <0xfd0000 0x30000>; + read-only; + }; + }; + }; + + serial at 12000 { + status = "okay"; + }; + + i2c at 11000 { + status = "okay"; + }; + + ehci at 50000 { + status = "okay"; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + blue-usb { + label = "dir665:blue:usb"; + gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; + }; + blue-internet { + /* Can only be turned on if the Internet + * Ethernet port has Link + */ + label = "dir665:blue:internet"; + gpios = <&gpio1 10 GPIO_ACTIVE_LOW>; + }; + amber-internet { + label = "dir665:amber:internet"; + gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>; + }; + blue-wifi5g { + label = "dir665:blue:5g"; + gpios = <&gpio1 12 GPIO_ACTIVE_LOW>; + }; + blue-status { + label = "dir665:blue:status"; + gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>; + }; + blue-wps { + label = "dir665:blue:wps"; + gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>; + }; + amber-status { + label = "dir665:amber:status"; + gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>; + }; + blue-24g { + label = "dir665:blue:24g"; + gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; + }; + }; + + gpio-keys { + compatible = "gpio-keys"; + #address-cells = <1>; + #size-cells = <0>; + + reset { + label = "reset"; + linux,code = <KEY_RESTART>; + gpios = <&gpio0 28 GPIO_ACTIVE_LOW>; + }; + wps { + label = "wps"; + linux,code = <KEY_WPS_BUTTON>; + gpios = <&gpio1 14 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&mdio { + status = "okay"; +}; + +/* eth0 is connected to a Marvell 88E6171 switch, without a PHY. So set + * fixed speed and duplex. */ +ð0 { + status = "okay"; + + ethernet0-port at 0 { + speed = <1000>; + duplex = <1>; + }; +}; + +/* eth1 is connected to the switch as well. However DSA only supports a + * single CPU port. So leave this port disabled to avoid confusion. */ + +ð1 { + status = "disabled"; +}; + +/* There is no battery on the boards, so the RTC does not keep time + * when there is now power, making it useless. */ +&rtc { + status = "disabled"; +};Signature · 1 line
2.1.1
PATCH 1/4 ARM: Kirkwood: Add support for DLink DIR665
In reply to Andrew LunnQuoted 255 lines · Andrew Lunn
From: Claudio Leite <[email protected]>
Add a device tree description of the DLINK DIR665 wireless access point. The support for the 88E6171 switch will be added in a later patch.
Signed-off-by Andrew Lunn <[email protected]>---
This description was mostly produced by Claudio Leite with a few minor cleanups by my.
--- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/kirkwood-dir665.dts | 233 ++++++++++++++++++++++++++++++++++ 2 files changed, 234 insertions(+) create mode 100644 arch/arm/boot/dts/kirkwood-dir665.dtsarch/arm/boot/dts/Makefile +1
-0@@ -104,6 +104,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += kirkwood-b3.dtb \ kirkwood-d2net.dtb \ kirkwood-db-88f6281.dtb \ kirkwood-db-88f6282.dtb \ + kirkwood-dir665.dtb \ kirkwood-dns320.dtb \ kirkwood-dns325.dtb \ kirkwood-dockstar.dtb \arch/arm/boot/dts/kirkwood-dir665.dts new file +220
-0@@ -0,0 +1,233 @@ +/* + * Copyright (C) 2014 Claudio Leite <[email protected]> + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +/dts-v1/; + +#include "kirkwood.dtsi" +#include "kirkwood-6281.dtsi" + +/ { + model = "D-Link DIR-665"; + compatible = "dlink,dir-665", "marvell,kirkwood-88f6281", "marvell,kirkwood"; + + memory { + device_type = "memory"; + reg = <0x00000000 0x8000000>; /* 128 MB */ + }; + + chosen { + bootargs = "console=ttyS0,115200n8 earlyprintk"; + stdout-path = &uart0; + }; + + mbus { + pcie-controller { + status = "okay"; + + pcie at 1,0 { + status = "okay"; + }; + }; + }; + + ocp at f1000000 { + pinctrl: pin-controller at 10000 { + pinctrl-0 =< &pmx_led_usb + &pmx_led_internet_blue + &pmx_led_internet_amber + &pmx_led_5g &pmx_led_status_blue + &pmx_led_wps &pmx_led_status_amber + &pmx_led_24g + &pmx_btn_restart &pmx_btn_wps>; + pinctrl-names = "default"; + + pmx_led_usb: pmx-led-usb { + marvell,pins = "mpp12"; + marvell,function = "gpio"; + }; + pmx_led_internet_blue: pmx-led-internet-blue { + marvell,pins = "mpp42"; + marvell,function = "gpio"; + }; + pmx_led_internet_amber: pmx-led-internet-amber { + marvell,pins = "mpp43"; + marvell,function = "gpio"; + }; + pmx_led_5g: pmx-led-5g { + marvell,pins = "mpp44"; + marvell,function = "gpio"; + }; + pmx_led_status_blue: pmx-led-status-blue { + marvell,pins = "mpp45"; + marvell,function = "gpio"; + }; + pmx_led_wps: pmx-led-wps { + marvell,pins = "mpp47"; + marvell,function = "gpio"; + }; + pmx_led_status_amber: pmx-led-status-amber { + marvell,pins = "mpp48"; + marvell,function = "gpio"; + }; + pmx_led_24g: pmx-led-24g { + marvell,pins = "mpp49"; + marvell,function = "gpio"; + }; + pmx_btn_restart: pmx-btn-restart { + marvell,pins = "mpp28"; + marvell,function = "gpio"; + }; + pmx_btn_wps: pmx-btn-wps { + marvell,pins = "mpp46"; + marvell,function = "gpio"; + }; + }; + + spi at 10600 { + status = "okay"; + m25p80 at 0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "mxicy,mx25l12805d"; + spi-max-frequency = <50000000>; + reg = <0>; + + partition at 0 { + label = "uboot"; + reg = <0x0 0x30000>; + read-only; + }; + + partition at 30000 { + label = "nvram"; + reg = <0x30000 0x10000>; + read-only; + }; + + partition at 40000 { + label = "kernel"; + reg = <0x40000 0x180000>; + }; + + partition at 1c0000 { + label = "rootfs"; + reg = <0x1c0000 0xe00000>; + }; + + cal_data: partition at fc0000 { + label = "cal_data"; + reg = <0xfc0000 0x10000>; + read-only; + }; + + partition at fd0000 { + label = "lang_pack"; + reg = <0xfd0000 0x30000>; + read-only; + }; + }; + }; + + serial at 12000 { + status = "okay"; + }; + + i2c at 11000 { + status = "okay"; + }; + + ehci at 50000 { + status = "okay"; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + blue-usb { + label = "dir665:blue:usb"; + gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; + }; + blue-internet { + /* Can only be turned on if the Internet + * Ethernet port has Link + */ + label = "dir665:blue:internet"; + gpios = <&gpio1 10 GPIO_ACTIVE_LOW>; + }; + amber-internet { + label = "dir665:amber:internet"; + gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>; + }; + blue-wifi5g { + label = "dir665:blue:5g"; + gpios = <&gpio1 12 GPIO_ACTIVE_LOW>; + }; + blue-status { + label = "dir665:blue:status"; + gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>; + }; + blue-wps { + label = "dir665:blue:wps"; + gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>; + }; + amber-status { + label = "dir665:amber:status"; + gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>; + }; + blue-24g { + label = "dir665:blue:24g"; + gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; + }; + }; + + gpio-keys { + compatible = "gpio-keys"; + #address-cells = <1>; + #size-cells = <0>; + + reset { + label = "reset"; + linux,code = <KEY_RESTART>; + gpios = <&gpio0 28 GPIO_ACTIVE_LOW>; + }; + wps { + label = "wps"; + linux,code = <KEY_WPS_BUTTON>; + gpios = <&gpio1 14 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&mdio { + status = "okay"; +}; + +/* eth0 is connected to a Marvell 88E6171 switch, without a PHY. So set + * fixed speed and duplex. */ +ð0 { + status = "okay"; + + ethernet0-port at 0 { + speed = <1000>; + duplex = <1>; + }; +};
arch/arm/boot/dts/kirkwood-dir665.dts line 230
Quoted 10 lines
arch/arm/boot/dts/kirkwood-dir665.dts new file +10
-0+ +/* eth1 is connected to the switch as well. However DSA only supports a + * single CPU port. So leave this port disabled to avoid confusion. */ + +ð1 { + status = "disabled"; +}; + +/* There is no battery on the boards, so the RTC does not keep time + * when there is now power, making it useless. */
Wow... so much for accurate logging. At any rate, s/now/no/. I'll fix it up when I pull it in if there's nothing else.
thx,
Jason.
Quoted 6 lines
arch/arm/boot/dts/kirkwood-dir665.dts new file +3
-0+&rtc { + status = "disabled"; +};Signature · 1 line
2.1.1
Andrew Lunn
maintainerPATCH 1/4 ARM: Kirkwood: Add support for DLink DIR665
Quoted 5 lines
Quoted 2 lines
+/* There is no battery on the boards, so the RTC does not keep time
+ * when there is now power, making it useless. */Wow... so much for accurate logging. At any rate, s/now/no/. I'll fix it up when I pull it in if there's nothing else.
Hi Jason
I assume the firmware use NTP, But strangely, there does appear to be a crystal, at least i assume there is since there is no error message at boot time about the clock not ticking. So it probably does keep time so long as the power is on. I did wonder if my board has a flat battery, but i cannot find a battery...
Andrew
PATCH 1/4 ARM: Kirkwood: Add support for DLink DIR665
Quoted 6 lines · Andrew Lunn
Quoted 5 lines
Quoted 2 lines
+/* There is no battery on the boards, so the RTC does not keep time
+ * when there is now power, making it useless. */Wow... so much for accurate logging. At any rate, s/now/no/. I'll fix it up when I pull it in if there's nothing else.
Quoted 7 lines
Hi Jason
I assume the firmware use NTP, But strangely, there does appear to be a crystal, at least i assume there is since there is no error message at boot time about the clock not ticking. So it probably does keep time so long as the power is on. I did wonder if my board has a flat battery, but i cannot find a battery...
supercap?
thx,
Jason.
Andrew Lunn
maintainerPATCH 2/4 ARM: Kirkwood: DIR665: Instantiate Distributed Switch Architecture
In reply to Andrew LunnThe DIR665 has an 8 port Ethernet Switch, a Marvell mv88e6171. Add a DSA node in DT, to instantiate DSA support for the 4 back panel ports, the Internet port, and the port to the CPU which is connected to eth0.
--- arch/arm/boot/dts/kirkwood-dir665.dts | 45 +++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+)
arch/arm/boot/dts/kirkwood-dir665.dts +45 -0
@@ -202,6 +202,51 @@ gpios = <&gpio1 14 GPIO_ACTIVE_LOW>; }; }; + + dsa at 0 { + compatible = "marvell,dsa"; + #address-cells = <2>; + #size-cells = <0>; + + dsa,ethernet = <ð0port>; + dsa,mii-bus = <&mdio>; + + switch at 0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0 0>; /* MDIO address 0, switch 0 in tree */ + + port at 0 { + reg = <0>; + label = "lan4"; + }; + + port at 1 { + reg = <1>; + label = "lan3"; + }; + + port at 2 { + reg = <2>; + label = "lan2"; + }; + + port at 3 { + reg = <3>; + label = "lan1"; + }; + + port at 4 { + reg = <4>; + label = "wan"; + }; + + port at 6 { + reg = <6>; + label = "cpu"; + }; + }; + }; }; &mdio {
Signature · 1 line
2.1.1
Andrew Lunn
maintainerPATCH 3/4 ARM: mvebu: Add DLINK DIR665 options to mvebu_v5_defconfig
In reply to Andrew LunnEnable building of the switch chip driver and the wireless driver needed by the DLINK DIR665
--- arch/arm/configs/mvebu_v5_defconfig | 2 ++ 1 file changed, 2 insertions(+)
arch/arm/configs/mvebu_v5_defconfig +2 -0
@@ -67,9 +67,11 @@ CONFIG_SATA_AHCI=y CONFIG_SATA_MV=y CONFIG_NETDEVICES=y CONFIG_NET_DSA_MV88E6123_61_65=y +CONFIG_NET_DSA_MV88E6171=y CONFIG_MV643XX_ETH=y CONFIG_R8169=y CONFIG_MARVELL_PHY=y +CONFIG_MWL8K=m CONFIG_LIBERTAS=y CONFIG_LIBERTAS_SDIO=y CONFIG_INPUT_EVDEV=y
Signature · 1 line
2.1.1
Andrew Lunn
maintainerPATCH 4/4 ARM: config: Add DLINK DIR665 options to multi_v5_defconfig
In reply to Andrew LunnEnable building of the switch chip driver and the wireless driver needed by the DLINK DIR665
--- arch/arm/configs/multi_v5_defconfig | 2 ++ 1 file changed, 2 insertions(+)
arch/arm/configs/multi_v5_defconfig +2 -0
@@ -67,9 +67,11 @@ CONFIG_SATA_AHCI=y CONFIG_SATA_MV=y CONFIG_NETDEVICES=y CONFIG_NET_DSA_MV88E6123_61_65=y +CONFIG_NET_DSA_MV88E6171=y CONFIG_MV643XX_ETH=y CONFIG_R8169=y CONFIG_MARVELL_PHY=y +CONFIG_MWL8K=m CONFIG_LIBERTAS=y CONFIG_LIBERTAS_SDIO=y CONFIG_INPUT_EVDEV=y
Signature · 1 line
2.1.1
PATCH 4/4 ARM: config: Add DLINK DIR665 options to multi_v5_defconfig
arm-soc folks,
Quoted 8 lines · Andrew Lunn
Enable building of the switch chip driver and the wireless driver needed by the DLINK DIR665
Signed-off-by Andrew Lunn <[email protected]>Cc arm at kernel.org--- arch/arm/configs/multi_v5_defconfig | 2 ++ 1 file changed, 2 insertions(+)
I went ahead and picked this since I don't foresee too many conflicts like there are with multi_v7_defconfig. Please let me know if you would prefer to take changes to this file directly.
thx,
Jason.
PATCH 4/4 ARM: config: Add DLINK DIR665 options to multi_v5_defconfig
Quoted 12 lines · Jason Cooper
arm-soc folks,
Quoted 8 lines · Andrew Lunn
Enable building of the switch chip driver and the wireless driver needed by the DLINK DIR665
Signed-off-by Andrew Lunn <[email protected]>Cc arm at kernel.org--- arch/arm/configs/multi_v5_defconfig | 2 ++ 1 file changed, 2 insertions(+)
Quoted 3 lines
I went ahead and picked this since I don't foresee too many conflicts like there are with
multi_v7_defconfig. Please let me know if you would prefer to take changes to this file directly.
Depends on if there's much other v5 activity this cycle or not. I don't think there is a whole lot so you should be safe.
-Olof
Jason Cooper
Appliedcover Support for DLINK DIR665
In reply to Andrew LunnQuoted 15 lines · Andrew Lunn
The DLINK is a wireless access point using a Kirkwood processor and a Marvell TopDog wifi chipset.
The base device tree file was provided by Claudio Leite. I've performed a few cleanups, added dsa support for the in build switch, and extended the defconfigs for regression testing.
Andrew Lunn (3):
ARM: Kirkwood: DIR665: Instantiate Distributed Switch Architecture
ARM: mvebu: Add DLINK DIR665 options tomvebu_v5_defconfig
ARM: config: Add DLINK DIR665 options tomulti_v5_defconfigClaudio Leite (1):
ARM: Kirkwood: Add support for DLink DIR665
Quoted 6 lines
arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/kirkwood-dir665.dts | 278 ++++++++++++++++++++++++++++++++++ arch/arm/configs/multi_v5_defconfig | 2 + arch/arm/configs/mvebu_v5_defconfig | 2 + 4 files changed, 283 insertions(+) create mode 100644 arch/arm/boot/dts/kirkwood-dir665.dts
Applied patches 1 and 2 with a small comment tweak to mvebu/dt.
Applied patches 3 and 4 to mvebu/defconfig since we are the only active modifiers of multi_v5_defconfig, so I don't foresee huge conflicts there like we get with multi_v7_defconfig.
thx,
Jason.