Message ID | 20220215163926.894-1-paweldembicki@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | None | expand |
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 <paweldembicki@gmail.com> > --- > 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 <paweldembicki@gmail.com> > + */ > + > +/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
wt., 15 lut 2022 o 19:25 Andrew Lunn <andrew@lunn.ch> napisał(a): > > 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 <paweldembicki@gmail.com> > > --- > > v2: > > - removed 2x\n spacing issue > > - removed unused pcie node > > - made information about buzzer more comprehensive > > Hi Pawel > Hi Andrew. > 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. > I used get_maintainer script. But I will pick manually addresses for cc. > 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 <paweldembicki@gmail.com> > > + */ > > + > > +/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 ? 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. > > Andrew Pawel
> > 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 <paweldembicki@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
Pawel Dembicki <paweldembicki@gmail.com> 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 <paweldembicki@gmail.com> 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 <paweldembicki@gmail.com> > + */ > + > +/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 >
On Tue, Feb 15, 2022 at 5:40 PM Pawel Dembicki <paweldembicki@gmail.com> 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 <linus.walleij@linaro.org> napisał(a): > > On Tue, Feb 15, 2022 at 5:40 PM Pawel Dembicki <paweldembicki@gmail.com> 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 <paweldembicki@gmail.com> 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
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 <paweldembicki@gmail.com> + */ + +/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>; + }; + }; +};
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 <paweldembicki@gmail.com> --- 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