Skip to content

Commit

Permalink
ARM: dts: orion5x: Add D-Link DNS-323 Device Tree
Browse files Browse the repository at this point in the history
Add a device tree for D-Link DNS-323. The device has three different
variants; A1, B1 and C1. Common parts are included in a .dtsi file
and each hardware variant has its own .dts file.

Signed-off-by: Mauri Sandberg <maukka@ext.kapsi.fi>
  • Loading branch information
msandber authored and intel-lab-lkp committed Sep 22, 2022
1 parent c5adc93 commit 0f6a5f2
Show file tree
Hide file tree
Showing 5 changed files with 382 additions and 0 deletions.
3 changes: 3 additions & 0 deletions arch/arm/boot/dts/Makefile
Expand Up @@ -998,6 +998,9 @@ dtb-$(CONFIG_SOC_DRA7XX) += \
dra71-evm.dtb \
dra76-evm.dtb
dtb-$(CONFIG_ARCH_ORION5X) += \
orion5x-dlink-dns323a1.dtb \
orion5x-dlink-dns323b1.dtb \
orion5x-dlink-dns323c1.dtb \
orion5x-kuroboxpro.dtb \
orion5x-lacie-d2-network.dtb \
orion5x-lacie-ethernet-disk-mini-v2.dtb \
Expand Down
215 changes: 215 additions & 0 deletions arch/arm/boot/dts/orion5x-dlink-dns323.dtsi
@@ -0,0 +1,215 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (C) 2022 Mauri Sandberg <maukka@ext.kapsi.fi>
*
*/

/ {
model = "D-Link DNS-323";
compatible = "dlink,dns323", "marvell,orion5x";

aliases {
serial0 = &uart0;
};

memory {
device_type = "memory";
reg = <0x00000000 0x4000000>; /* 64 MB */
};

chosen {
stdout-path = "serial0:115200n8";
bootargs = "console=ttyS0,115200n8 earlyprintk";
};

soc {
ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>, /* on-chip peripheral registers */
<MBUS_ID(0x09, 0x00) 0 0xf2200000 0x800>, /* SRAM for crypto */
<MBUS_ID(0x01, 0x0f) 0 0xf4000000 0x800000>; /* device bus mapping (boot) */
};

gpio-keys {
compatible = "gpio-keys";
pinctrl-0 = <&pmx_gpio_keys>;
pinctrl-names = "default";

key-0 {
label = "Power button";
linux,code = <KEY_POWER>;
gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
};

key-1 {
label = "Reset button";
linux,code = <KEY_RESTART>;
gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
};
};

gpio-leds {
compatible = "gpio-leds";
pinctrl-0 = <&pmx_gpio_leds>;
pinctrl-names = "default";

led-0 {
label = "amber:right";
gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
};

led-1 {
label = "amber:left";
gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
};

led-2 {
label = "blue:power";
gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
default-state = "on";
};
};

gpio-poweroff {
compatible = "gpio-poweroff";
pinctrl-0 = <&pmx_power_off>;
pinctrl-names = "default";

gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
timeout-ms = <3000>;
};
};

&devbus_bootcs {
status = "okay";
devbus,keep-config;

flash@0 {
compatible = "cfi-flash";
reg = <0 0x800000>;
bank-width = <1>;

partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

partition@0 {
label = "MTD1";
reg = <0x000000 0x010000>;
read-only;
};

partition@10000 {
label = "MTD2";
reg = <0x010000 0x010000>;
read-only;
};

partition@20000 {
label = "Linux Kernel";
reg = <0x020000 0x180000>;
};

partition@1a0000 {
label = "File System";
reg = <0x1a0000 0x630000>;
};

uboot: partition@7d0000 {
label = "U-boot";
reg = <0x7d0000 0x030000>;
read-only;
};
};
};
};

&ehci0 {
status = "okay";
};

&i2c {
status = "okay";
clock-frequency = <100000>;

/* fan speed PWM */
fan@3e {
compatible = "g760a";
reg = <0x3e>;
};

/* temp sensor and thermal watchdog */
temperature-sensor@48 {
compatible = "gmt,g751";
reg = <0x48>;
};

/* RTC w/ alarm */
rtc@68 {
compatible = "st,m41t80";
reg = <0x68>;
};
};

&mdio {
status = "okay";

ethphy: ethernet-phy {
reg = <8>;
};
};

&eth {
status = "okay";
pinctrl-0 = <&pmx_ge>;
pinctrl-names = "default";
clocks = <&core_clk 0>;
};

&ethport {
phy-handle = <&ethphy>;
};

&uart0 {
status = "okay";
};

&pinctrl {
pmx_gpio_leds: pmx-gpio-leds {
marvell,pins = "mpp1", "mpp2", "mpp5";
marvell,function = "gpio";
};

pmx_gpio_misc: pmx-gpio-misc {
/* set marvell,pins in board file */
marvell,function = "gpio";
};

pmx_power_off: pmx-power-off {
marvell,pins = "mpp8";
marvell,function = "gpio";
};

pmx_gpio_keys: pmx-gpio-keys {
marvell,pins = "mpp9", "mpp10";
marvell,function = "gpio";
};

pmx_ge: pmx-ge {
marvell,function = "ge";
};
};

&sata {
pinctrl-0 = <&pmx_sata0 &pmx_sata1>;
pinctrl-names = "default";
status = "okay";
nr-ports = <2>;
};

&pciec {
status = "okay";
};

&pcie0 {
status = "okay";
};
44 changes: 44 additions & 0 deletions arch/arm/boot/dts/orion5x-dlink-dns323a1.dts
@@ -0,0 +1,44 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (C) 2022 Mauri Sandberg <maukka@ext.kapsi.fi>
*
*/

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include "orion5x-mv88f5181.dtsi"
#include "orion5x-dlink-dns323.dtsi"

/ {
model = "D-Link DNS-323 rev A1";
compatible = "dlink,dns323a1", "dlink,dns323", "marvell,orion5x-88f5181",
"marvell,orion5x";
};

/delete-node/ &sata;

&gpio0 {
pinctrl-0 = <&pmx_gpio_misc>;
pinctrl-names = "default";

/* The DNS323 rev A1 power LED requires GPIO 4 to be low. */
pin_gpio0_4 {
gpio-hog;
gpios = <4 GPIO_ACTIVE_LOW>;
output-high;
line-name = "Power led enable";
};
};

&pmx_gpio_misc {
marvell,pins = "mpp4";
};

&pmx_ge {
marvell,pins = "mpp11", "mpp12", "mpp13", "mpp14", "mpp15",
"mpp16", "mpp17", "mpp18", "mpp19";
};
39 changes: 39 additions & 0 deletions arch/arm/boot/dts/orion5x-dlink-dns323b1.dts
@@ -0,0 +1,39 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (C) 2022 Mauri Sandberg <maukka@ext.kapsi.fi>
*
*/

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include "orion5x-mv88f5182.dtsi"
#include "orion5x-dlink-dns323.dtsi"

/ {
model = "D-Link DNS-323 rev B1";
compatible = "dlink,dns323b1", "dlink,dns323", "marvell,orion5x-88f5182",
"marvell,orion5x";
};

&gpio0 {
pinctrl-0 = <&pmx_gpio_misc>;
pinctrl-names = "default";

/* The rev B1 has a flag to indicate the system is up.
* Without this flag set, power LED will flash and cannot be
* controlled via gpio-leds.
*/
pin_gpio0_3 {
gpio-hog;
gpios = <3 GPIO_ACTIVE_LOW>;
output-high;
line-name = "System up";
};
};

&pmx_gpio_misc {
marvell,pins = "mpp3";
};
81 changes: 81 additions & 0 deletions arch/arm/boot/dts/orion5x-dlink-dns323c1.dts
@@ -0,0 +1,81 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (C) 2022 Mauri Sandberg <maukka@ext.kapsi.fi>
*
*/

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include "orion5x-mv88f5182.dtsi"
#include "orion5x-dlink-dns323.dtsi"

/ {
model = "D-Link DNS-323 rev C1";
compatible = "dlink,dns323c1", "dlink,dns323", "marvell,orion5x-88f5182",
"marvell,orion5x";

fan {
compatible = "gpio-fan";
pinctrl-0 = <&pmx_gpio_fan>;
pinctrl-names = "default";

gpios = <&gpio0 19 GPIO_ACTIVE_LOW
&gpio0 18 GPIO_ACTIVE_LOW>;

gpio-fan,speed-map = <0 0
1000 1
2000 2>;
alarm-gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;
};

gpio-keys {
/delete-node/ key-1;

key-0 {
gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
};
};

gpio-leds {
led-0 {
gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
};

led-1 {
gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
};

led-2 {
gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
};
};

};

&i2c {
/delete-node/ fan@3e;
};

&pinctrl {
/delete-node/ pmx-gpio-misc;

pmx_gpio_fan: pmx-gpio-fan {
marvell,pins = "mpp10", "mpp18", "mpp19";
marvell,function = "gpio";
};
};

&pmx_gpio_leds {
marvell,pins = "mpp8", "mpp9", "mpp17";
};

&pmx_power_off {
marvell,pins = "mpp2";
};

&pmx_gpio_keys {
marvell,pins = "mpp1";
};

0 comments on commit 0f6a5f2

Please sign in to comment.