Ctera C200 V1 is kirkwood-based 2-Bay NAS.
Hardware:
- SoC: Marvell 88F6281-A1 ARMv5TE Processor 1.2GHz
- Ram: 512MB (4x Nanya NT5TU128M8GE-AC)
- NAND Flash: 256MB (Samsung 216 K9F2G08U0C)
- Lan: 1x GBE (Marvell 88E1116R-NNC1)
- Storage: 2x SATA HDD 3.5" Slot
- USB: 2x USB 2.0 port
- Console: Internal J3 connector (1: Vcc, 2: Rx, 3: Tx, 4: GND)
- LEDs: 13x GPIO controlled
- Buttons: 2x GPIO controlled
Signed-off-by: Pawel Dembicki <[email protected]>
---
v2:
- removed 2x\n spacing issue
- removed unused pcie node
- made information about buzzer more comprehensive
arch/arm/boot/dts/Makefile | 1 +
arch/arm/boot/dts/kirkwood-c200-v1.dts | 310 +++++++++++++++++++++++++
2 files changed, 311 insertions(+)
create mode 100644 arch/arm/boot/dts/kirkwood-c200-v1.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 235ad559acb2..31616f6ae173 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -281,6 +281,7 @@ dtb-$(CONFIG_ARCH_KEYSTONE) += \
dtb-$(CONFIG_MACH_KIRKWOOD) += \
kirkwood-b3.dtb \
kirkwood-blackarmor-nas220.dtb \
+ kirkwood-c200-v1.dtb \
kirkwood-cloudbox.dtb \
kirkwood-d2net.dtb \
kirkwood-db-88f6281.dtb \
diff --git a/arch/arm/boot/dts/kirkwood-c200-v1.dts b/arch/arm/boot/dts/kirkwood-c200-v1.dts
new file mode 100644
index 000000000000..f59ff7578dfc
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-c200-v1.dts
@@ -0,0 +1,310 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Ctera C200 V1 Board Description
+ * Copyright 2021-2022 Pawel Dembicki <[email protected]>
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include <dt-bindings/leds/common.h>
+
+/ {
+ model = "Ctera C200 V1";
+ compatible = "ctera,c200-v1", "marvell,kirkwood-88f6281", "marvell,kirkwood";
+
+ chosen {
+ bootargs = "console=ttyS0,115200";
+ stdout-path = &uart0;
+ };
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x00000000 0x20000000>;
+ };
+
+ keys {
+ compatible = "gpio-keys";
+ pinctrl-0 = <&pmx_buttons>;
+ pinctrl-names = "default";
+
+ power {
+ label = "Power Button";
+ linux,code = <KEY_POWER>;
+ gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>;
+ };
+
+ reset {
+ label = "Reset Button";
+ linux,code = <KEY_RESTART>;
+ gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
+ };
+
+ usb1 {
+ label = "USB1 Button";
+ linux,code = <BTN_0>;
+ gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
+ };
+
+ usb2 {
+ label = "USB2 Button";
+ linux,code = <BTN_1>;
+ gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ gpio-poweroff {
+ compatible = "gpio-poweroff";
+ pinctrl-0 = <&pmx_poweroff>;
+ pinctrl-names = "default";
+ gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+ pinctrl-0 = <&pmx_leds>;
+ pinctrl-names = "default";
+
+ led-0 {
+ function = LED_FUNCTION_DISK;
+ function-enumerator = <2>;
+ color = <LED_COLOR_ID_RED>;
+ gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
+ };
+
+ led-1 {
+ function = LED_FUNCTION_DISK;
+ function-enumerator = <1>;
+ color = <LED_COLOR_ID_GREEN>;
+ gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
+ };
+
+ led-2 {
+ function = LED_FUNCTION_DISK;
+ function-enumerator = <2>;
+ color = <LED_COLOR_ID_GREEN>;
+ gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
+ };
+
+ led-3 {
+ function = LED_FUNCTION_DISK;
+ function-enumerator = <1>;
+ color = <LED_COLOR_ID_RED>;
+ gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
+ };
+
+ led-4 {
+ function = LED_FUNCTION_STATUS;
+ color = <LED_COLOR_ID_RED>;
+ gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+ };
+
+ led-5 {
+ function = LED_FUNCTION_STATUS;
+ color = <LED_COLOR_ID_GREEN>;
+ gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+ };
+
+ led-6 {
+ function = LED_FUNCTION_INDICATOR;
+ color = <LED_COLOR_ID_BLUE>;
+ gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+ };
+
+ led-7 {
+ function = LED_FUNCTION_DISK_ERR;
+ color = <LED_COLOR_ID_RED>;
+ gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+ };
+
+ led-8 {
+ function = LED_FUNCTION_DISK_ERR;
+ color = <LED_COLOR_ID_GREEN>;
+ gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
+ };
+
+ led-9 {
+ function = LED_FUNCTION_USB;
+ function-enumerator = <1>;
+ color = <LED_COLOR_ID_RED>;
+ gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+ };
+
+ led-10 {
+ function = LED_FUNCTION_USB;
+ function-enumerator = <1>;
+ color = <LED_COLOR_ID_GREEN>;
+ gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
+ linux,default-trigger = "usbport";
+ trigger-sources = <&hub_port2>;
+ };
+
+ led-11 {
+ function = LED_FUNCTION_USB;
+ function-enumerator = <2>;
+ color = <LED_COLOR_ID_RED>;
+ gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
+ };
+
+ led-12 {
+ function = LED_FUNCTION_USB;
+ function-enumerator = <2>;
+ color = <LED_COLOR_ID_GREEN>;
+ gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
+ linux,default-trigger = "usbport";
+ trigger-sources = <&hub_port1>;
+ };
+ };
+};
+
+ð0 {
+ status = "okay";
+};
+
+ð0port {
+ phy-handle = <ðphy9>;
+};
+
+&i2c0 {
+ status = "okay";
+
+ rtc@30 {
+ compatible = "s35390a";
+ reg = <0x30>;
+ };
+
+ lm63@4c {
+ compatible = "national,lm63";
+ reg = <0x4c>;
+ };
+};
+
+&mdio {
+ status = "okay";
+
+ ethphy9: ethernet-phy@9 {
+ reg = <9>;
+ };
+};
+
+&nand {
+ status = "okay";
+ chip-delay = <40>;
+
+ partition@0 {
+ label = "uboot";
+ reg = <0x0000000 0x200000>;
+ };
+
+ partition@200000 {
+ label = "certificate";
+ reg = <0x0200000 0x100000>;
+ };
+
+ partition@300000 {
+ label = "preset_cfg";
+ reg = <0x0300000 0x100000>;
+ };
+
+ partition@400000 {
+ label = "dev_params";
+ reg = <0x0400000 0x100000>;
+ };
+
+ partition@500000 {
+ label = "active_bank";
+ reg = <0x0500000 0x0100000>;
+ };
+
+ partition@600000 {
+ label = "magic";
+ reg = <0x0600000 0x0100000>;
+ };
+
+ partition@700000 {
+ label = "bank1";
+ reg = <0x0700000 0x2800000>;
+ };
+
+ partition@2f00000 {
+ label = "bank2";
+ reg = <0x2f00000 0x2800000>;
+ };
+
+ /* 0x5700000-0x5a00000 undefined in vendor firmware */
+
+ partition@5a00000 {
+ label = "reserved";
+ reg = <0x5a00000 0x2000000>;
+ };
+
+ partition@7a00000 {
+ label = "rootfs";
+ reg = <0x7a00000 0x8600000>;
+ };
+};
+
+&pinctrl {
+ /* Buzzer gpios are connected to two pins of buzzer.
+ * This buzzer require a modulated signal from gpio.
+ * Leave it as is due lack of proper driver.
+ */
+ pmx_buzzer: pmx-buzzer {
+ marvell,pins = "mpp12", "mpp13";
+ marvell,function = "gpio";
+ };
+
+ pmx_leds: pmx-leds {
+ marvell,pins = "mpp14", "mpp15", "mpp16", "mpp17", "mpp38",
+ "mpp39", "mpp40", "mpp42", "mpp43", "mpp44",
+ "mpp45", "mpp46", "mpp47";
+ marvell,function = "gpio";
+ };
+
+ pmx_buttons: pmx-buttons {
+ marvell,pins = "mpp28", "mpp29", "mpp48", "mpp49";
+ marvell,function = "gpio";
+ };
+
+ pmx_poweroff: pmx-poweroff {
+ marvell,pins = "mpp34";
+ marvell,function = "gpio";
+ };
+};
+
+&rtc {
+ status = "disabled";
+};
+
+&sata {
+ status = "okay";
+ nr-ports = <2>;
+};
+
+&uart0 {
+ status = "okay";
+};
+
+&usb0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ port@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ #trigger-source-cells = <0>;
+
+ hub_port1: port@1 {
+ reg = <1>;
+ #trigger-source-cells = <0>;
+ };
+
+ hub_port2: port@2 {
+ reg = <2>;
+ #trigger-source-cells = <0>;
+ };
+ };
+};
--
2.25.1
CTERA Networks Intl. is a company based in Israel.
They manufacture NASes, network devices and provide software
products for cloud storage and IT security.
Signed-off-by: Pawel Dembicki <[email protected]>
---
v2: no changes
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index c48ce3c54951..9e247353b6bc 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -275,6 +275,8 @@ patternProperties:
description: Hangzhou C-SKY Microsystems Co., Ltd
"^csq,.*":
description: Shenzen Chuangsiqi Technology Co.,Ltd.
+ "^ctera,.*":
+ description: CTERA Networks Intl.
"^cubietech,.*":
description: Cubietech, Ltd.
"^cui,.*":
--
2.25.1
> > Thanks for adding a comment. So you need something like a PWM driving
> > it? Have you tried playing with drivers/input/misc/pwm-beeper.c ?
>
> It use a PWM device. Driver gpio-pwm isn't accepted in mainline so far.
>
> > Some of the mvebu family have a simple PWM functionality as part of
> > the GPIO controller. I don't remember if kirkwood has this.
>
> Kirkwood have very simple blink mode only: GPIO pin make visible blinks.
[Goes and looks at the datasheet]
Yes, Kirkwood has fixed rate blinking. It is the later generation of
devices which have true PWM capabilities.
Andrew
On Tue, Feb 15, 2022 at 05:39:22PM +0100, Pawel Dembicki wrote:
> Ctera C200 V1 is kirkwood-based 2-Bay NAS.
>
> Hardware:
> - SoC: Marvell 88F6281-A1 ARMv5TE Processor 1.2GHz
> - Ram: 512MB (4x Nanya NT5TU128M8GE-AC)
> - NAND Flash: 256MB (Samsung 216 K9F2G08U0C)
> - Lan: 1x GBE (Marvell 88E1116R-NNC1)
> - Storage: 2x SATA HDD 3.5" Slot
> - USB: 2x USB 2.0 port
> - Console: Internal J3 connector (1: Vcc, 2: Rx, 3: Tx, 4: GND)
> - LEDs: 13x GPIO controlled
> - Buttons: 2x GPIO controlled
>
> Signed-off-by: Pawel Dembicki <[email protected]>
> ---
> v2:
> - removed 2x\n spacing issue
> - removed unused pcie node
> - made information about buzzer more comprehensive
Hi Pawel
Thanks for adding the mvebu Maintainers to the list of recipients.
One more process point. It would be normal to set the To: to whoever
you think should actually accept this patch. There are a lot of
Maintainers listed in Cc: so actually pointing a finger at somebody
can help.
Gregory will be the person to actually take this patch.
>
> arch/arm/boot/dts/Makefile | 1 +
> arch/arm/boot/dts/kirkwood-c200-v1.dts | 310 +++++++++++++++++++++++++
> 2 files changed, 311 insertions(+)
> create mode 100644 arch/arm/boot/dts/kirkwood-c200-v1.dts
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 235ad559acb2..31616f6ae173 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -281,6 +281,7 @@ dtb-$(CONFIG_ARCH_KEYSTONE) += \
> dtb-$(CONFIG_MACH_KIRKWOOD) += \
> kirkwood-b3.dtb \
> kirkwood-blackarmor-nas220.dtb \
> + kirkwood-c200-v1.dtb \
> kirkwood-cloudbox.dtb \
> kirkwood-d2net.dtb \
> kirkwood-db-88f6281.dtb \
> diff --git a/arch/arm/boot/dts/kirkwood-c200-v1.dts b/arch/arm/boot/dts/kirkwood-c200-v1.dts
> new file mode 100644
> index 000000000000..f59ff7578dfc
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-c200-v1.dts
> @@ -0,0 +1,310 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Ctera C200 V1 Board Description
> + * Copyright 2021-2022 Pawel Dembicki <[email protected]>
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include <dt-bindings/leds/common.h>
> +
> +/ {
> + model = "Ctera C200 V1";
> + compatible = "ctera,c200-v1", "marvell,kirkwood-88f6281", "marvell,kirkwood";
> +
> + chosen {
> + bootargs = "console=ttyS0,115200";
> + stdout-path = &uart0;
> + };
> +
> + memory@0 {
> + device_type = "memory";
> + reg = <0x00000000 0x20000000>;
> + };
> +
> + keys {
> + compatible = "gpio-keys";
> + pinctrl-0 = <&pmx_buttons>;
> + pinctrl-names = "default";
> +
> + power {
> + label = "Power Button";
> + linux,code = <KEY_POWER>;
> + gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>;
> + };
> +
> + reset {
> + label = "Reset Button";
> + linux,code = <KEY_RESTART>;
> + gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
> + };
> +
> + usb1 {
> + label = "USB1 Button";
> + linux,code = <BTN_0>;
> + gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
> + };
> +
> + usb2 {
> + label = "USB2 Button";
> + linux,code = <BTN_1>;
> + gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
> + };
> + };
> +
> + gpio-poweroff {
> + compatible = "gpio-poweroff";
> + pinctrl-0 = <&pmx_poweroff>;
> + pinctrl-names = "default";
> + gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> + pinctrl-0 = <&pmx_leds>;
> + pinctrl-names = "default";
> +
> + led-0 {
> + function = LED_FUNCTION_DISK;
> + function-enumerator = <2>;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-1 {
> + function = LED_FUNCTION_DISK;
> + function-enumerator = <1>;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-2 {
> + function = LED_FUNCTION_DISK;
> + function-enumerator = <2>;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-3 {
> + function = LED_FUNCTION_DISK;
> + function-enumerator = <1>;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-4 {
> + function = LED_FUNCTION_STATUS;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-5 {
> + function = LED_FUNCTION_STATUS;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-6 {
> + function = LED_FUNCTION_INDICATOR;
> + color = <LED_COLOR_ID_BLUE>;
> + gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-7 {
> + function = LED_FUNCTION_DISK_ERR;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-8 {
> + function = LED_FUNCTION_DISK_ERR;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-9 {
> + function = LED_FUNCTION_USB;
> + function-enumerator = <1>;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-10 {
> + function = LED_FUNCTION_USB;
> + function-enumerator = <1>;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
> + linux,default-trigger = "usbport";
> + trigger-sources = <&hub_port2>;
> + };
> +
> + led-11 {
> + function = LED_FUNCTION_USB;
> + function-enumerator = <2>;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-12 {
> + function = LED_FUNCTION_USB;
> + function-enumerator = <2>;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
> + linux,default-trigger = "usbport";
> + trigger-sources = <&hub_port1>;
> + };
> + };
> +};
> +
> +ð0 {
> + status = "okay";
> +};
> +
> +ð0port {
> + phy-handle = <ðphy9>;
> +};
> +
> +&i2c0 {
> + status = "okay";
> +
> + rtc@30 {
> + compatible = "s35390a";
> + reg = <0x30>;
> + };
> +
> + lm63@4c {
> + compatible = "national,lm63";
> + reg = <0x4c>;
> + };
> +};
> +
> +&mdio {
> + status = "okay";
> +
> + ethphy9: ethernet-phy@9 {
> + reg = <9>;
> + };
> +};
> +
> +&nand {
> + status = "okay";
> + chip-delay = <40>;
> +
> + partition@0 {
> + label = "uboot";
> + reg = <0x0000000 0x200000>;
> + };
> +
> + partition@200000 {
> + label = "certificate";
> + reg = <0x0200000 0x100000>;
> + };
> +
> + partition@300000 {
> + label = "preset_cfg";
> + reg = <0x0300000 0x100000>;
> + };
> +
> + partition@400000 {
> + label = "dev_params";
> + reg = <0x0400000 0x100000>;
> + };
> +
> + partition@500000 {
> + label = "active_bank";
> + reg = <0x0500000 0x0100000>;
> + };
> +
> + partition@600000 {
> + label = "magic";
> + reg = <0x0600000 0x0100000>;
> + };
> +
> + partition@700000 {
> + label = "bank1";
> + reg = <0x0700000 0x2800000>;
> + };
> +
> + partition@2f00000 {
> + label = "bank2";
> + reg = <0x2f00000 0x2800000>;
> + };
> +
> + /* 0x5700000-0x5a00000 undefined in vendor firmware */
> +
> + partition@5a00000 {
> + label = "reserved";
> + reg = <0x5a00000 0x2000000>;
> + };
> +
> + partition@7a00000 {
> + label = "rootfs";
> + reg = <0x7a00000 0x8600000>;
> + };
> +};
> +
> +&pinctrl {
> + /* Buzzer gpios are connected to two pins of buzzer.
> + * This buzzer require a modulated signal from gpio.
> + * Leave it as is due lack of proper driver.
> + */
Thanks for adding a comment. So you need something like a PWM driving
it? Have you tried playing with drivers/input/misc/pwm-beeper.c ?
Some of the mvebu family have a simple PWM functionality as part of
the GPIO controller. I don't remember if kirkwood has this.
Andrew
On Tue, Feb 15, 2022 at 05:39:22PM +0100, Pawel Dembicki wrote:
> Ctera C200 V1 is kirkwood-based 2-Bay NAS.
>
> Hardware:
> - SoC: Marvell 88F6281-A1 ARMv5TE Processor 1.2GHz
> - Ram: 512MB (4x Nanya NT5TU128M8GE-AC)
> - NAND Flash: 256MB (Samsung 216 K9F2G08U0C)
> - Lan: 1x GBE (Marvell 88E1116R-NNC1)
> - Storage: 2x SATA HDD 3.5" Slot
> - USB: 2x USB 2.0 port
> - Console: Internal J3 connector (1: Vcc, 2: Rx, 3: Tx, 4: GND)
> - LEDs: 13x GPIO controlled
> - Buttons: 2x GPIO controlled
>
> Signed-off-by: Pawel Dembicki <[email protected]>
Reviewed-by: Andrew Lunn <[email protected]>
Andrew
On Tue, 15 Feb 2022 17:39:23 +0100, Pawel Dembicki wrote:
> CTERA Networks Intl. is a company based in Israel.
> They manufacture NASes, network devices and provide software
> products for cloud storage and IT security.
>
> Signed-off-by: Pawel Dembicki <[email protected]>
> ---
> v2: no changes
>
> Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
> 1 file changed, 2 insertions(+)
>
Please add Acked-by/Reviewed-by tags when posting new versions. However,
there's no need to repost patches *only* to add the tags. The upstream
maintainer will do that for acks received on the version they apply.
If a tag was not added on purpose, please state why and what changed.
Pawel Dembicki <[email protected]> writes:
> Ctera C200 V1 is kirkwood-based 2-Bay NAS.
>
> Hardware:
> - SoC: Marvell 88F6281-A1 ARMv5TE Processor 1.2GHz
> - Ram: 512MB (4x Nanya NT5TU128M8GE-AC)
> - NAND Flash: 256MB (Samsung 216 K9F2G08U0C)
> - Lan: 1x GBE (Marvell 88E1116R-NNC1)
> - Storage: 2x SATA HDD 3.5" Slot
> - USB: 2x USB 2.0 port
> - Console: Internal J3 connector (1: Vcc, 2: Rx, 3: Tx, 4: GND)
> - LEDs: 13x GPIO controlled
> - Buttons: 2x GPIO controlled
>
> Signed-off-by: Pawel Dembicki <[email protected]>
Applied on mvebu/dt
Thanks,
Gregory
> ---
> v2:
> - removed 2x\n spacing issue
> - removed unused pcie node
> - made information about buzzer more comprehensive
>
> arch/arm/boot/dts/Makefile | 1 +
> arch/arm/boot/dts/kirkwood-c200-v1.dts | 310 +++++++++++++++++++++++++
> 2 files changed, 311 insertions(+)
> create mode 100644 arch/arm/boot/dts/kirkwood-c200-v1.dts
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 235ad559acb2..31616f6ae173 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -281,6 +281,7 @@ dtb-$(CONFIG_ARCH_KEYSTONE) += \
> dtb-$(CONFIG_MACH_KIRKWOOD) += \
> kirkwood-b3.dtb \
> kirkwood-blackarmor-nas220.dtb \
> + kirkwood-c200-v1.dtb \
> kirkwood-cloudbox.dtb \
> kirkwood-d2net.dtb \
> kirkwood-db-88f6281.dtb \
> diff --git a/arch/arm/boot/dts/kirkwood-c200-v1.dts b/arch/arm/boot/dts/kirkwood-c200-v1.dts
> new file mode 100644
> index 000000000000..f59ff7578dfc
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-c200-v1.dts
> @@ -0,0 +1,310 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Ctera C200 V1 Board Description
> + * Copyright 2021-2022 Pawel Dembicki <[email protected]>
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include <dt-bindings/leds/common.h>
> +
> +/ {
> + model = "Ctera C200 V1";
> + compatible = "ctera,c200-v1", "marvell,kirkwood-88f6281", "marvell,kirkwood";
> +
> + chosen {
> + bootargs = "console=ttyS0,115200";
> + stdout-path = &uart0;
> + };
> +
> + memory@0 {
> + device_type = "memory";
> + reg = <0x00000000 0x20000000>;
> + };
> +
> + keys {
> + compatible = "gpio-keys";
> + pinctrl-0 = <&pmx_buttons>;
> + pinctrl-names = "default";
> +
> + power {
> + label = "Power Button";
> + linux,code = <KEY_POWER>;
> + gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>;
> + };
> +
> + reset {
> + label = "Reset Button";
> + linux,code = <KEY_RESTART>;
> + gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
> + };
> +
> + usb1 {
> + label = "USB1 Button";
> + linux,code = <BTN_0>;
> + gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
> + };
> +
> + usb2 {
> + label = "USB2 Button";
> + linux,code = <BTN_1>;
> + gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
> + };
> + };
> +
> + gpio-poweroff {
> + compatible = "gpio-poweroff";
> + pinctrl-0 = <&pmx_poweroff>;
> + pinctrl-names = "default";
> + gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> + pinctrl-0 = <&pmx_leds>;
> + pinctrl-names = "default";
> +
> + led-0 {
> + function = LED_FUNCTION_DISK;
> + function-enumerator = <2>;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-1 {
> + function = LED_FUNCTION_DISK;
> + function-enumerator = <1>;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-2 {
> + function = LED_FUNCTION_DISK;
> + function-enumerator = <2>;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-3 {
> + function = LED_FUNCTION_DISK;
> + function-enumerator = <1>;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-4 {
> + function = LED_FUNCTION_STATUS;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-5 {
> + function = LED_FUNCTION_STATUS;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-6 {
> + function = LED_FUNCTION_INDICATOR;
> + color = <LED_COLOR_ID_BLUE>;
> + gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-7 {
> + function = LED_FUNCTION_DISK_ERR;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-8 {
> + function = LED_FUNCTION_DISK_ERR;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-9 {
> + function = LED_FUNCTION_USB;
> + function-enumerator = <1>;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-10 {
> + function = LED_FUNCTION_USB;
> + function-enumerator = <1>;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
> + linux,default-trigger = "usbport";
> + trigger-sources = <&hub_port2>;
> + };
> +
> + led-11 {
> + function = LED_FUNCTION_USB;
> + function-enumerator = <2>;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
> + };
> +
> + led-12 {
> + function = LED_FUNCTION_USB;
> + function-enumerator = <2>;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
> + linux,default-trigger = "usbport";
> + trigger-sources = <&hub_port1>;
> + };
> + };
> +};
> +
> +ð0 {
> + status = "okay";
> +};
> +
> +ð0port {
> + phy-handle = <ðphy9>;
> +};
> +
> +&i2c0 {
> + status = "okay";
> +
> + rtc@30 {
> + compatible = "s35390a";
> + reg = <0x30>;
> + };
> +
> + lm63@4c {
> + compatible = "national,lm63";
> + reg = <0x4c>;
> + };
> +};
> +
> +&mdio {
> + status = "okay";
> +
> + ethphy9: ethernet-phy@9 {
> + reg = <9>;
> + };
> +};
> +
> +&nand {
> + status = "okay";
> + chip-delay = <40>;
> +
> + partition@0 {
> + label = "uboot";
> + reg = <0x0000000 0x200000>;
> + };
> +
> + partition@200000 {
> + label = "certificate";
> + reg = <0x0200000 0x100000>;
> + };
> +
> + partition@300000 {
> + label = "preset_cfg";
> + reg = <0x0300000 0x100000>;
> + };
> +
> + partition@400000 {
> + label = "dev_params";
> + reg = <0x0400000 0x100000>;
> + };
> +
> + partition@500000 {
> + label = "active_bank";
> + reg = <0x0500000 0x0100000>;
> + };
> +
> + partition@600000 {
> + label = "magic";
> + reg = <0x0600000 0x0100000>;
> + };
> +
> + partition@700000 {
> + label = "bank1";
> + reg = <0x0700000 0x2800000>;
> + };
> +
> + partition@2f00000 {
> + label = "bank2";
> + reg = <0x2f00000 0x2800000>;
> + };
> +
> + /* 0x5700000-0x5a00000 undefined in vendor firmware */
> +
> + partition@5a00000 {
> + label = "reserved";
> + reg = <0x5a00000 0x2000000>;
> + };
> +
> + partition@7a00000 {
> + label = "rootfs";
> + reg = <0x7a00000 0x8600000>;
> + };
> +};
> +
> +&pinctrl {
> + /* Buzzer gpios are connected to two pins of buzzer.
> + * This buzzer require a modulated signal from gpio.
> + * Leave it as is due lack of proper driver.
> + */
> + pmx_buzzer: pmx-buzzer {
> + marvell,pins = "mpp12", "mpp13";
> + marvell,function = "gpio";
> + };
> +
> + pmx_leds: pmx-leds {
> + marvell,pins = "mpp14", "mpp15", "mpp16", "mpp17", "mpp38",
> + "mpp39", "mpp40", "mpp42", "mpp43", "mpp44",
> + "mpp45", "mpp46", "mpp47";
> + marvell,function = "gpio";
> + };
> +
> + pmx_buttons: pmx-buttons {
> + marvell,pins = "mpp28", "mpp29", "mpp48", "mpp49";
> + marvell,function = "gpio";
> + };
> +
> + pmx_poweroff: pmx-poweroff {
> + marvell,pins = "mpp34";
> + marvell,function = "gpio";
> + };
> +};
> +
> +&rtc {
> + status = "disabled";
> +};
> +
> +&sata {
> + status = "okay";
> + nr-ports = <2>;
> +};
> +
> +&uart0 {
> + status = "okay";
> +};
> +
> +&usb0 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + status = "okay";
> +
> + port@1 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + reg = <1>;
> + #trigger-source-cells = <0>;
> +
> + hub_port1: port@1 {
> + reg = <1>;
> + #trigger-source-cells = <0>;
> + };
> +
> + hub_port2: port@2 {
> + reg = <2>;
> + #trigger-source-cells = <0>;
> + };
> + };
> +};
> --
> 2.25.1
>
--
Gregory Clement, Bootlin
Embedded Linux and Kernel engineering
http://bootlin.com
On Tue, Feb 15, 2022 at 5:40 PM Pawel Dembicki <[email protected]> wrote:
> +&i2c0 {
> + status = "okay";
> +
> + rtc@30 {
> + compatible = "s35390a";
> + reg = <0x30>;
> + };
> +
> + lm63@4c {
> + compatible = "national,lm63";
> + reg = <0x4c>;
> + };
Think about adding chassis thermal zone for this sensor,
I suppose you don't have any active control of cooling (fan)?
This often sits on GPIO...
In that case just add a critical temperature so it can't burn
down the house.
See:
arch/arm/boot/dts/gemini-dlink-dns-313.dts
node thermal-zones {} for an example of how to do this
quick and easy. You need CONFIG_THERMAL and
CONFIG_THERMAL_HWMON for this to work.
Yours,
Linus Walleij
wt., 1 mar 2022 o 00:43 Linus Walleij <[email protected]> napisał(a):
>
> On Tue, Feb 15, 2022 at 5:40 PM Pawel Dembicki <[email protected]> wrote:
>
> > +&i2c0 {
> > + status = "okay";
> > +
> > + rtc@30 {
> > + compatible = "s35390a";
> > + reg = <0x30>;
> > + };
> > +
> > + lm63@4c {
> > + compatible = "national,lm63";
> > + reg = <0x4c>;
> > + };
>
> Think about adding chassis thermal zone for this sensor,
>
> I suppose you don't have any active control of cooling (fan)?
> This often sits on GPIO...
>
Hi Linus,
It has a fan controlled by the lm63: PWM controller. But the fan blows
only on disks, board temperature won't change even when PWM = 100%.
It should be controlled by hdd temperature.
> In that case just add a critical temperature so it can't burn
> down the house.
>
Patch it's merged now, I will add critical temperatures in a separate patch.
> See:
> arch/arm/boot/dts/gemini-dlink-dns-313.dts
> node thermal-zones {} for an example of how to do this
> quick and easy. You need CONFIG_THERMAL and
> CONFIG_THERMAL_HWMON for this to work.
>
> Yours,
> Linus Walleij
Best Regards,
Pawel Dembicki
On Tue, Mar 1, 2022 at 9:32 PM Paweł Dembicki <[email protected]> wrote:
> It has a fan controlled by the lm63: PWM controller.
Aha it is one of those combo things, sorry for my ignorance.
> But the fan blows
> only on disks, board temperature won't change even when PWM = 100%.
> It should be controlled by hdd temperature.
We have a way to even monitor the temperature of individual hard disks
these days and I create a thermal zone and use it here to control a fan
in this DTS:
arch/arm/boot/dts/gemini-dlink-dir-685.dts
Yours,
Linus Walleij