2022-09-22 21:39:46

by Mauri Sandberg

[permalink] [raw]
Subject: [PATCH v2 0/3] ARM: orion5x: add D-Link DNS323 based on device treee

Hello all,

This is the second iteration of my series to add D-Link DNS323 devices,
which are based on a device tree. It adds the bindings, the device tree
source files and a new board file to take care of initialising what little
remains that cannot be done via device tree. The initialisation of MAC address
will be neater once method for passing ASCII string based address is agreed on.

Functionally this series has a dependency to Pali's mvebu pci series, which
adds support for Orion PCIe and which should be scheduled for a merge window
any time soon:
https://lore.kernel.org/linux-pci/[email protected]/

What currently is tested and works in rev A1
- leds
- keys
- fan
- temperature sensor
- shutdown
- reboot
- mtd partitions
- ethernet
- PCIe and with that sata_mv

And the variants B1 and C1 need testing still.

Thanks,
Mauri

Mauri Sandberg (3):
dt-bindings: arm: add DT binding for D-Link DNS-323
ARM: dts: orion5x: Add D-Link DNS-323 Device Tree
ARM: orion5x: Add D-Link DNS-323 based on Device Tree

.../bindings/arm/marvell/marvell,orion5x.txt | 12 +
arch/arm/boot/dts/Makefile | 3 +
arch/arm/boot/dts/orion5x-dlink-dns323.dtsi | 215 ++++++++++++++++++
arch/arm/boot/dts/orion5x-dlink-dns323a1.dts | 44 ++++
arch/arm/boot/dts/orion5x-dlink-dns323b1.dts | 39 ++++
arch/arm/boot/dts/orion5x-dlink-dns323c1.dts | 81 +++++++
arch/arm/mach-orion5x/Kconfig | 7 +
arch/arm/mach-orion5x/Makefile | 1 +
arch/arm/mach-orion5x/board-dns323.c | 208 +++++++++++++++++
arch/arm/mach-orion5x/board-dt.c | 3 +
arch/arm/mach-orion5x/common.h | 6 +
11 files changed, 619 insertions(+)
create mode 100644 arch/arm/boot/dts/orion5x-dlink-dns323.dtsi
create mode 100644 arch/arm/boot/dts/orion5x-dlink-dns323a1.dts
create mode 100644 arch/arm/boot/dts/orion5x-dlink-dns323b1.dts
create mode 100644 arch/arm/boot/dts/orion5x-dlink-dns323c1.dts
create mode 100644 arch/arm/mach-orion5x/board-dns323.c


base-commit: c69cf88cda5faca0e411babb67ac0d8bfd8b4646
--
2.25.1


2022-09-22 21:56:53

by Mauri Sandberg

[permalink] [raw]
Subject: [PATCH v2 2/3] ARM: dts: orion5x: Add D-Link DNS-323 Device Tree

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 <[email protected]>
---
changes from v1
- split patches, this one adds the device tree
- set pciec and pcie1 nodes to 'okay'
---
arch/arm/boot/dts/Makefile | 3 +
arch/arm/boot/dts/orion5x-dlink-dns323.dtsi | 215 +++++++++++++++++++
arch/arm/boot/dts/orion5x-dlink-dns323a1.dts | 44 ++++
arch/arm/boot/dts/orion5x-dlink-dns323b1.dts | 39 ++++
arch/arm/boot/dts/orion5x-dlink-dns323c1.dts | 81 +++++++
5 files changed, 382 insertions(+)
create mode 100644 arch/arm/boot/dts/orion5x-dlink-dns323.dtsi
create mode 100644 arch/arm/boot/dts/orion5x-dlink-dns323a1.dts
create mode 100644 arch/arm/boot/dts/orion5x-dlink-dns323b1.dts
create mode 100644 arch/arm/boot/dts/orion5x-dlink-dns323c1.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 05d8aef6e5d2..bc41749cd889 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -997,6 +997,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 \
diff --git a/arch/arm/boot/dts/orion5x-dlink-dns323.dtsi b/arch/arm/boot/dts/orion5x-dlink-dns323.dtsi
new file mode 100644
index 000000000000..05b0b134edb3
--- /dev/null
+++ b/arch/arm/boot/dts/orion5x-dlink-dns323.dtsi
@@ -0,0 +1,215 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2022 Mauri Sandberg <[email protected]>
+ *
+ */
+
+/ {
+ 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";
+};
diff --git a/arch/arm/boot/dts/orion5x-dlink-dns323a1.dts b/arch/arm/boot/dts/orion5x-dlink-dns323a1.dts
new file mode 100644
index 000000000000..235cc842f289
--- /dev/null
+++ b/arch/arm/boot/dts/orion5x-dlink-dns323a1.dts
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2022 Mauri Sandberg <[email protected]>
+ *
+ */
+
+/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";
+};
diff --git a/arch/arm/boot/dts/orion5x-dlink-dns323b1.dts b/arch/arm/boot/dts/orion5x-dlink-dns323b1.dts
new file mode 100644
index 000000000000..e01ba809ffca
--- /dev/null
+++ b/arch/arm/boot/dts/orion5x-dlink-dns323b1.dts
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2022 Mauri Sandberg <[email protected]>
+ *
+ */
+
+/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";
+};
diff --git a/arch/arm/boot/dts/orion5x-dlink-dns323c1.dts b/arch/arm/boot/dts/orion5x-dlink-dns323c1.dts
new file mode 100644
index 000000000000..c24da08bdc8f
--- /dev/null
+++ b/arch/arm/boot/dts/orion5x-dlink-dns323c1.dts
@@ -0,0 +1,81 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2022 Mauri Sandberg <[email protected]>
+ *
+ */
+
+/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";
+};
--
2.25.1

2022-09-23 09:32:00

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v2 2/3] ARM: dts: orion5x: Add D-Link DNS-323 Device Tree

On 22/09/2022 22:24, Mauri Sandberg wrote:
> 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.

Thank you for your patch. There is something to discuss/improve.

> +
> +/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 {

No underscores in node names.

> + 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";
> +};
> diff --git a/arch/arm/boot/dts/orion5x-dlink-dns323b1.dts b/arch/arm/boot/dts/orion5x-dlink-dns323b1.dts
> new file mode 100644
> index 000000000000..e01ba809ffca
> --- /dev/null
> +++ b/arch/arm/boot/dts/orion5x-dlink-dns323b1.dts
> @@ -0,0 +1,39 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (C) 2022 Mauri Sandberg <[email protected]>
> + *
> + */
> +
> +/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 {

No underscores in node names.

Best regards,
Krzysztof

2022-09-27 11:36:21

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH v2 2/3] ARM: dts: orion5x: Add D-Link DNS-323 Device Tree

Hi Mauri,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on soc/for-next]
[also build test ERROR on robh/for-next linus/master v6.0-rc7 next-20220923]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Mauri-Sandberg/dt-bindings-arm-add-DT-binding-for-D-Link-DNS-323/20220923-052532
base: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git for-next
config: arm-randconfig-r025-20220926
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/0f6a5f2ac9a2b3e3cf1b2c1969a1ad077cd54d2c
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Mauri-Sandberg/dt-bindings-arm-add-DT-binding-for-D-Link-DNS-323/20220923-052532
git checkout 0f6a5f2ac9a2b3e3cf1b2c1969a1ad077cd54d2c
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <[email protected]>

All errors (new ones prefixed by >>):

>> Error: arch/arm/boot/dts/orion5x-dlink-dns323.dtsi:209.1-7 Label or path pciec not found
>> Error: arch/arm/boot/dts/orion5x-dlink-dns323.dtsi:213.1-7 Label or path pcie0 not found
FATAL ERROR: Syntax error parsing input tree

--
0-DAY CI Kernel Test Service
https://01.org/lkp


Attachments:
(No filename) (1.84 kB)
config (133.84 kB)
Download all attachments

2022-09-27 22:59:33

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH v2 2/3] ARM: dts: orion5x: Add D-Link DNS-323 Device Tree

Hi Mauri,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on soc/for-next]
[also build test ERROR on robh/for-next linus/master v6.0-rc7 next-20220927]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Mauri-Sandberg/dt-bindings-arm-add-DT-binding-for-D-Link-DNS-323/20220923-052532
base: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git for-next
config: arm-buildonly-randconfig-r004-20220925
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 791a7ae1ba3efd6bca96338e10ffde557ba83920)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/intel-lab-lkp/linux/commit/0f6a5f2ac9a2b3e3cf1b2c1969a1ad077cd54d2c
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Mauri-Sandberg/dt-bindings-arm-add-DT-binding-for-D-Link-DNS-323/20220923-052532
git checkout 0f6a5f2ac9a2b3e3cf1b2c1969a1ad077cd54d2c
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <[email protected]>

All errors (new ones prefixed by >>):

Error: arch/arm/boot/dts/orion5x-dlink-dns323.dtsi:209.1-7 Label or path pciec not found
Error: arch/arm/boot/dts/orion5x-dlink-dns323.dtsi:213.1-7 Label or path pcie0 not found
>> FATAL ERROR: Syntax error parsing input tree

--
0-DAY CI Kernel Test Service
https://01.org/lkp


Attachments:
(No filename) (2.03 kB)
config (146.69 kB)
Download all attachments