* [PATCHv1 0/3] arm: mvebu: add Synology DS213j and DS414 .dts files @ 2014-11-16 0:04 Arnaud Ebalard 2014-11-16 0:04 ` [PATCHv1 1/3] arm: mvebu: add uartX labels for Armada SoC serial nodes Arnaud Ebalard ` (3 more replies) 0 siblings, 4 replies; 17+ messages in thread From: Arnaud Ebalard @ 2014-11-16 0:04 UTC (permalink / raw) To: linux-arm-kernel Hi, This series adds .dts files for Synology DS213j (armada 370 2-bay NAS) and DS414 (armada XP 4-bay NAS) devices. It is based on comments received on a v0 submission of DS213j .dts file [1]. Andrew, in this v1, the two .dts files are still separate w/o any common .dtsi. I took a quick look it seems there are small differences between the two which make me wonder if its worth the trouble: - DS414 fans are not handled by the SoC - various pinctrl variations - a tiny difference in SPI flash partitioning - phy-mode for ethernet interfaces - different comments associated w/ same nodes (e.g. uart1) - etc Could you take a quick look and tell me if you think it's worth it? I'll follow what you'll decide. Cheers, a+ [1]: http://thread.gmane.org/gmane.linux.drivers.devicetree/95401 Changes since v0: - Added a comment at the beginning of DS213j and DS414j .dts file regarding the need for a recent Marvell bootloader. Arnd suggested to do a specific .dtb file for new and old bootloaders but I think if we follow this path for DS414 and DS213j, we will probably have to do it for all Armada-based synology NAS and possibly for other Armada 370/XP based devices. Opting for recent bootloaders config and having a comment is easier. It is likely that a user already has a recent bootloader. Otherwise, upgrade is a one click process anyway. If a user thinks it is easier to have two different .dts files in the kernel, she will still be able to push a patch. - Added a comment in the .dts file about the bootloader screwing the kernel if the environment is saved. - Kept GPL licence for .dts file - Fixed bad naming of node and alias (_ vs -) - Added micron vendor prefix for n25q064 flash - Disabled SoC RTC; a Seiko S-35390A is used as main RTC - Added comments about the purpose of each serial port - Added stdout-path = &uart0; to help barebox. A specific patch is included in the series to provide labels for uart serial nodes - Added patch for DS414 .dts file Arnaud Ebalard (3): arm: mvebu: add uartX labels for Armada SoC serial nodes arm: mvebu: add .dts file for Synology DS213j arm: mvebu: add .dts file for Synology DS414 arch/arm/boot/dts/Makefile | 6 +- arch/arm/boot/dts/armada-370-synology-ds213j.dts | 351 +++++++++++++++++++++++ arch/arm/boot/dts/armada-370-xp.dtsi | 5 +- arch/arm/boot/dts/armada-xp-synology-ds414.dts | 343 ++++++++++++++++++++++ arch/arm/boot/dts/armada-xp.dtsi | 5 +- 5 files changed, 704 insertions(+), 6 deletions(-) create mode 100644 arch/arm/boot/dts/armada-370-synology-ds213j.dts create mode 100644 arch/arm/boot/dts/armada-xp-synology-ds414.dts -- 2.1.1 ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 1/3] arm: mvebu: add uartX labels for Armada SoC serial nodes 2014-11-16 0:04 [PATCHv1 0/3] arm: mvebu: add Synology DS213j and DS414 .dts files Arnaud Ebalard @ 2014-11-16 0:04 ` Arnaud Ebalard 2014-11-16 1:09 ` Andrew Lunn 2014-11-16 0:04 ` [PATCHv1 2/3] arm: mvebu: add .dts file for Synology DS213j Arnaud Ebalard ` (2 subsequent siblings) 3 siblings, 1 reply; 17+ messages in thread From: Arnaud Ebalard @ 2014-11-16 0:04 UTC (permalink / raw) To: linux-arm-kernel This patch adds uartX labels for Armada SoC serial nodes. This is a preliminary work to be able to easily reference the serial lines in Device Tree files. One expected future use is when providing stdout-path property for barebox. Signed-off-by: Arnaud Ebalard <arno@natisbad.org> --- arch/arm/boot/dts/armada-370-xp.dtsi | 5 +++-- arch/arm/boot/dts/armada-xp.dtsi | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/arm/boot/dts/armada-370-xp.dtsi b/arch/arm/boot/dts/armada-370-xp.dtsi index 83286ec9702c..2be9723bcdf3 100644 --- a/arch/arm/boot/dts/armada-370-xp.dtsi +++ b/arch/arm/boot/dts/armada-370-xp.dtsi @@ -151,7 +151,7 @@ status = "disabled"; }; - serial at 12000 { + uart0: serial at 12000 { compatible = "snps,dw-apb-uart"; reg = <0x12000 0x100>; reg-shift = <2>; @@ -160,7 +160,8 @@ clocks = <&coreclk 0>; status = "disabled"; }; - serial at 12100 { + + uart1: serial at 12100 { compatible = "snps,dw-apb-uart"; reg = <0x12100 0x100>; reg-shift = <2>; diff --git a/arch/arm/boot/dts/armada-xp.dtsi b/arch/arm/boot/dts/armada-xp.dtsi index bff9f6c18db1..a68f5b837536 100644 --- a/arch/arm/boot/dts/armada-xp.dtsi +++ b/arch/arm/boot/dts/armada-xp.dtsi @@ -52,7 +52,7 @@ reg = <0x11100 0x100>; }; - serial at 12200 { + uart2: serial at 12200 { compatible = "snps,dw-apb-uart"; reg = <0x12200 0x100>; reg-shift = <2>; @@ -61,7 +61,8 @@ clocks = <&coreclk 0>; status = "disabled"; }; - serial at 12300 { + + uart3: serial at 12300 { compatible = "snps,dw-apb-uart"; reg = <0x12300 0x100>; reg-shift = <2>; -- 2.1.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCHv1 1/3] arm: mvebu: add uartX labels for Armada SoC serial nodes 2014-11-16 0:04 ` [PATCHv1 1/3] arm: mvebu: add uartX labels for Armada SoC serial nodes Arnaud Ebalard @ 2014-11-16 1:09 ` Andrew Lunn 2014-11-16 12:34 ` Arnaud Ebalard 0 siblings, 1 reply; 17+ messages in thread From: Andrew Lunn @ 2014-11-16 1:09 UTC (permalink / raw) To: linux-arm-kernel On Sun, Nov 16, 2014 at 01:04:12AM +0100, Arnaud Ebalard wrote: > > This patch adds uartX labels for Armada SoC serial nodes. This is > a preliminary work to be able to easily reference the serial lines > in Device Tree files. One expected future use is when providing > stdout-path property for barebox. > > Signed-off-by: Arnaud Ebalard <arno@natisbad.org> Acked-by: Andrew Lunn <andrew@lunn.ch> Not a must, but it would be nice to make use of these in armada-xp-lenovo-ix4-300d.dts, which currently has: stdout-path = "/soc/internal-regs/serial at 12000"; Andrew > --- > arch/arm/boot/dts/armada-370-xp.dtsi | 5 +++-- > arch/arm/boot/dts/armada-xp.dtsi | 5 +++-- > 2 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/arch/arm/boot/dts/armada-370-xp.dtsi b/arch/arm/boot/dts/armada-370-xp.dtsi > index 83286ec9702c..2be9723bcdf3 100644 > --- a/arch/arm/boot/dts/armada-370-xp.dtsi > +++ b/arch/arm/boot/dts/armada-370-xp.dtsi > @@ -151,7 +151,7 @@ > status = "disabled"; > }; > > - serial at 12000 { > + uart0: serial at 12000 { > compatible = "snps,dw-apb-uart"; > reg = <0x12000 0x100>; > reg-shift = <2>; > @@ -160,7 +160,8 @@ > clocks = <&coreclk 0>; > status = "disabled"; > }; > - serial at 12100 { > + > + uart1: serial at 12100 { > compatible = "snps,dw-apb-uart"; > reg = <0x12100 0x100>; > reg-shift = <2>; > diff --git a/arch/arm/boot/dts/armada-xp.dtsi b/arch/arm/boot/dts/armada-xp.dtsi > index bff9f6c18db1..a68f5b837536 100644 > --- a/arch/arm/boot/dts/armada-xp.dtsi > +++ b/arch/arm/boot/dts/armada-xp.dtsi > @@ -52,7 +52,7 @@ > reg = <0x11100 0x100>; > }; > > - serial at 12200 { > + uart2: serial at 12200 { > compatible = "snps,dw-apb-uart"; > reg = <0x12200 0x100>; > reg-shift = <2>; > @@ -61,7 +61,8 @@ > clocks = <&coreclk 0>; > status = "disabled"; > }; > - serial at 12300 { > + > + uart3: serial at 12300 { > compatible = "snps,dw-apb-uart"; > reg = <0x12300 0x100>; > reg-shift = <2>; > -- > 2.1.1 > > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 1/3] arm: mvebu: add uartX labels for Armada SoC serial nodes 2014-11-16 1:09 ` Andrew Lunn @ 2014-11-16 12:34 ` Arnaud Ebalard 0 siblings, 0 replies; 17+ messages in thread From: Arnaud Ebalard @ 2014-11-16 12:34 UTC (permalink / raw) To: linux-arm-kernel Hi Andrew, Andrew Lunn <andrew@lunn.ch> writes: > On Sun, Nov 16, 2014 at 01:04:12AM +0100, Arnaud Ebalard wrote: >> >> This patch adds uartX labels for Armada SoC serial nodes. This is >> a preliminary work to be able to easily reference the serial lines >> in Device Tree files. One expected future use is when providing >> stdout-path property for barebox. >> >> Signed-off-by: Arnaud Ebalard <arno@natisbad.org> > > Acked-by: Andrew Lunn <andrew@lunn.ch> > > Not a must, but it would be nice to make use of these in > armada-xp-lenovo-ix4-300d.dts, which currently has: > > stdout-path = "/soc/internal-regs/serial at 12000"; Will add a patch to the series to do that. Thanks. a+ ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 2/3] arm: mvebu: add .dts file for Synology DS213j 2014-11-16 0:04 [PATCHv1 0/3] arm: mvebu: add Synology DS213j and DS414 .dts files Arnaud Ebalard 2014-11-16 0:04 ` [PATCHv1 1/3] arm: mvebu: add uartX labels for Armada SoC serial nodes Arnaud Ebalard @ 2014-11-16 0:04 ` Arnaud Ebalard 2014-11-16 2:00 ` Andrew Lunn 2014-11-16 0:04 ` [PATCHv1 3/3] arm: mvebu: add .dts file for Synology DS414 Arnaud Ebalard 2014-11-16 2:20 ` [PATCHv1 0/3] arm: mvebu: add Synology DS213j and DS414 .dts files Andrew Lunn 3 siblings, 1 reply; 17+ messages in thread From: Arnaud Ebalard @ 2014-11-16 0:04 UTC (permalink / raw) To: linux-arm-kernel Synology DS213j is a 2-bay NAS powered by a Marvell Armada 370 (88F6710 @1.2Ghz). It is very similar on many aspects to previous 2-bay synology models based on Marvell kirkwood SoC. Here is a short summary of the device: - 512MB RAM - boot on SPI flash (64Mbit Micron N25Q064) - 1 GbE interface (Armada MAC connected to a Marvell 88E1512 PHY via SGMII) - 2 rear USB 2.0 ports (directly handled by the Armada 370) - 2 internal SATA ports handled by the Armada 370: 2 GPIO for presence, 2 for powering them - two front amber LED (disk1, disk2) controlled by the SoC - Seiko S-35390A I2C RTC chip - UART0 providing serial console - UART1 used for poweroff (connected to a TI MSP430F2111) - Fan handled via 4 GPIO (3 for speed, 1 for alarm) Signed-off-by: Arnaud Ebalard <arno@natisbad.org> --- arch/arm/boot/dts/Makefile | 3 +- arch/arm/boot/dts/armada-370-synology-ds213j.dts | 351 +++++++++++++++++++++++ 2 files changed, 353 insertions(+), 1 deletion(-) create mode 100644 arch/arm/boot/dts/armada-370-synology-ds213j.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index 38c89cafa1ab..95387b59ebb2 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -495,7 +495,8 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \ armada-370-mirabox.dtb \ armada-370-netgear-rn102.dtb \ armada-370-netgear-rn104.dtb \ - armada-370-rd.dtb + armada-370-rd.dtb \ + armada-370-synology-ds213j.dtb dtb-$(CONFIG_MACH_ARMADA_375) += \ armada-375-db.dtb dtb-$(CONFIG_MACH_ARMADA_38X) += \ diff --git a/arch/arm/boot/dts/armada-370-synology-ds213j.dts b/arch/arm/boot/dts/armada-370-synology-ds213j.dts new file mode 100644 index 000000000000..3cba5c7d36f1 --- /dev/null +++ b/arch/arm/boot/dts/armada-370-synology-ds213j.dts @@ -0,0 +1,351 @@ +/* + * Device Tree file for Synology DS213j + * + * Copyright (C) 2014, Arnaud EBALARD <arno@natisbad.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. + * + * Note: this Device Tree assumes that the bootloader has remapped the + * internal registers to 0xf1000000 (instead of the old 0xd0000000). + * The 0xf1000000 is the default used by the recent, DT-capable, U-Boot + * bootloaders provided by Marvell. It is used in recent versions of + * DSM software provided by Synology. Nonetheless, some earlier boards + * were delivered with an older version of u-boot that left internal + * registers mapped at 0xd0000000. If you have such a device you will + * not be able to directly boot a kernel based on this Device Tree. In + * that case, the preferred solution is to update your bootloader (e.g. + * by upgrading to latest version of DSM, or building a new one and + * installing it from u-boot prompt) or adjust the Devive Tree + * (s/0xf1000000/0xd0000000/ in 'ranges' below). + */ + +/dts-v1/; + +#include <dt-bindings/input/input.h> +#include <dt-bindings/gpio/gpio.h> +#include "armada-370.dtsi" + +/ { + model = "Synology DS213j"; + compatible = "synology,ds213j", "marvell,armada370", + "marvell,armada-370-xp"; + + chosen { + bootargs = "console=ttyS0,115200 earlyprintk"; + stdout-path = &uart0; + }; + + memory { + device_type = "memory"; + reg = <0x00000000 0x20000000>; /* 512 MB */ + }; + + soc { + ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000 + MBUS_ID(0x01, 0xe0) 0 0xfff00000 0x100000>; + + internal-regs { + + sata at a0000 { + nr-ports = <2>; + status = "okay"; + }; + + pinctrl { + pmx_ge0: pmx-ge0 { + marvell,pins = "mpp5", "mpp6", "mpp7", "mpp8", + "mpp9", "mpp10", "mpp11", "mpp12", + "mpp13", "mpp14", "mpp15", "mpp16"; + marvell,function = "ge0"; + }; + + pmx_uart0: pmx-uart0 { + marvell,pins = "mpp0", "mpp1"; + marvell,function = "uart0"; + }; + + pmx_i2c: pmx-i2c { + marvell,pins = "mpp2", "mpp3"; + marvell,function = "i2c0"; + }; + + pmx_spi: pmx-spi { + marvell,pins = "mpp33", "mpp34", + "mpp35", "mpp36"; + marvell,function = "spi0"; + }; + + pmx_disk1_led: pmx-disk1-led { + marvell,pins = "mpp31"; + marvell,function = "gpio"; + }; + + pmx_disk2_led: pmx-disk2-led { + marvell,pins = "mpp32"; + marvell,function = "gpio"; + }; + + pmx_sata1_pwr: pmx-sata1-pwr { + marvell,pins = "mpp37"; + marvell,function = "gpio"; + }; + + pmx_sata2_pwr: pmx-sata2-pwr { + marvell,pins = "mpp62"; + marvell,function = "gpio"; + }; + + pmx_sata1_pres: pmx-sata1-pres { + marvell,pins = "mpp60"; + marvell,function = "gpio"; + }; + + pmx_sata2_pres: pmx-sata2-pres { + marvell,pins = "mpp48"; + marvell,function = "gpio"; + }; + + pmx_smi: pmx-smi { + marvell,pins = "mpp17", "mpp18"; + marvell,function = "ge"; + }; + + pmx_syno_id_bit0: pmx-syno-id-bit0 { + marvell,pins = "mpp55"; + marvell,function = "gpio"; + }; + + pmx_syno_id_bit1: pmx-syno-id-bit1 { + marvell,pins = "mpp56"; + marvell,function = "gpio"; + }; + + pmx_syno_id_bit2: pmx-syno-id-bit2 { + marvell,pins = "mpp57"; + marvell,function = "gpio"; + }; + + pmx_syno_id_bit3: pmx-syno-id-bit3 { + marvell,pins = "mpp58"; + marvell,function = "gpio"; + }; + + pmx_fan_ctrl_low: pmx-fan-ctrl-low { + marvell,pins = "mpp65"; + marvell,function = "gpio"; + }; + + pmx_fan_ctrl_mid: pmx-fan-ctrl-mid { + marvell,pins = "mpp64"; + marvell,function = "gpio"; + }; + + pmx_fan_ctrl_high: pmx-fan-ctrl-high { + marvell,pins = "mpp63"; + marvell,function = "gpo"; + }; + + pmx_fan_alarm: pmx-fan-alarm { + marvell,pins = "mpp38"; + marvell,function = "gpio"; + }; + + pmx_poweroff: pmx-poweroff { + marvell,pins = "mpp4"; + marvell,function = "gpio"; + }; + }; + + mdio { + phy1: ethernet-phy at 1 { /* Marvell 88E1512 */ + reg = <1>; + }; + }; + + ethernet at 70000 { + status = "okay"; + pinctrl-0 = <&pmx_ge0>; + pinctrl-names = "default"; + phy = <&phy1>; + phy-mode = "sgmii"; + }; + + spi0: spi at 10600 { + status = "okay"; + pinctrl-0 = <&pmx_spi>; + pinctrl-names = "default"; + + spi-flash at 0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "micron,n25q064"; + reg = <0>; /* Chip select 0 */ + spi-max-frequency = <20000000>; + + /* + * Warning! + * + * Synology u-boot uses its compiled-in environment + * and it seems Synology did not care to change u-boot + * default configuration in order to allow saving a + * modified environment at a sensible location. So, + * if you do a 'saveenv' under u-boot, your modified + * environment be saved will at 1MB after the start + * of the flash, i.e. in the middle of the uImage. + * For that reason, it is strongly advised not to + * change default environment, unless you know what + * you are doing. + */ + partition at 00000000 { /* u-boot */ + label = "RedBoot"; + reg = <0x00000000 0x000c0000>; /* 768KB */ + }; + + partition at 000c0000 { /* uImage */ + label = "zImage"; + reg = <0x000c0000 0x002d0000>; /* 2880KB */ + }; + + partition at 00390000 { /* uInitramfs */ + label = "rd.gz"; + reg = <0x00390000 0x00440000>; /* 4250KB */ + }; + + partition at 007d0000 { /* MAC address and serial number */ + label = "vendor"; + reg = <0x007d0000 0x00010000>; /* 64KB */ + }; + + partition at 007e0000 { + label = "RedBoot config"; + reg = <0x007e0000 0x00010000>; /* 64KB */ + }; + + partition at 007f0000 { + label = "FIS directory"; + reg = <0x007f0000 0x00010000>; /* 64KB */ + }; + }; + }; + + /* rear USB port, near reset button */ + usb at 50000 { + status = "okay"; + }; + + /* rear USB port, near RJ45 port */ + usb at 51000 { + status = "okay"; + }; + + i2c at 11000 { + compatible = "marvell,mv64xxx-i2c"; + clock-frequency = <400000>; + status = "okay"; + + /* Main device RTC chip */ + s35390a: s35390a at 30 { + compatible = "ssi,s35390a"; + reg = <0x30>; + }; + }; + + /* RTC provided by Seiko S-35390A above */ + rtc at 10300 { + status = "disabled"; + }; + + /* Connected to a header on device's PCB */ + serial at 12000 { + status = "okay"; + }; + + /* Connected to a TI MSP430F2111 for power control */ + serial at 12100 { + status = "okay"; + }; + + poweroff at 12100 { + compatible = "synology,power-off"; + reg = <0x12100 0x100>; + clocks = <&coreclk 0>; + }; + }; + }; + + gpio-fan-100-32-35 { + status = "okay"; + compatible = "gpio-fan"; + pinctrl-0 = <&pmx_fan_ctrl_low &pmx_fan_ctrl_mid + &pmx_fan_ctrl_high &pmx_fan_alarm>; + pinctrl-names = "default"; + gpios = <&gpio1 31 GPIO_ACTIVE_HIGH + &gpio2 0 GPIO_ACTIVE_HIGH + &gpio2 1 GPIO_ACTIVE_HIGH>; + alarm-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>; + gpio-fan,speed-map = < 0 0 + 2200 1 + 2500 2 + 3000 4 + 3300 3 + 3700 5 + 3800 6 + 4200 7 >; + }; + + gpio-leds { + compatible = "gpio-leds"; + pinctrl-0 = <&pmx_disk1_led + &pmx_disk2_led>; + pinctrl-names = "default"; + + disk1-led-amber { + label = "synology:amber:disk1"; + gpios = <&gpio0 31 GPIO_ACTIVE_LOW>; + default-state = "keep"; + }; + + disk2-led-amber { + label = "synology:amber:disk2"; + gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; + default-state = "keep"; + }; + }; + + regulators { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-0 = <&pmx_sata1_pwr &pmx_sata2_pwr>; + pinctrl-names = "default"; + + sata1_regulator: sata1-regulator { + compatible = "regulator-fixed"; + reg = <1>; + regulator-name = "SATA1 Power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + startup-delay-us = <2000000>; + enable-active-high; + regulator-always-on; + regulator-boot-on; + gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>; + }; + + sata2_regulator: sata2-regulator { + compatible = "regulator-fixed"; + reg = <2>; + regulator-name = "SATA2 Power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + startup-delay-us = <4000000>; + enable-active-high; + regulator-always-on; + regulator-boot-on; + gpio = <&gpio1 30 GPIO_ACTIVE_HIGH>; + }; + }; +}; -- 2.1.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCHv1 2/3] arm: mvebu: add .dts file for Synology DS213j 2014-11-16 0:04 ` [PATCHv1 2/3] arm: mvebu: add .dts file for Synology DS213j Arnaud Ebalard @ 2014-11-16 2:00 ` Andrew Lunn 2014-11-16 2:31 ` Andrew Lunn 2014-11-16 13:14 ` Arnaud Ebalard 0 siblings, 2 replies; 17+ messages in thread From: Andrew Lunn @ 2014-11-16 2:00 UTC (permalink / raw) To: linux-arm-kernel On Sun, Nov 16, 2014 at 01:04:23AM +0100, Arnaud Ebalard wrote: > > Synology DS213j is a 2-bay NAS powered by a Marvell Armada 370 > (88F6710 @1.2Ghz). It is very similar on many aspects to previous > 2-bay synology models based on Marvell kirkwood SoC. Here is a > short summary of the device: > > - 512MB RAM > - boot on SPI flash (64Mbit Micron N25Q064) > - 1 GbE interface (Armada MAC connected to a Marvell 88E1512 > PHY via SGMII) > - 2 rear USB 2.0 ports (directly handled by the Armada 370) > - 2 internal SATA ports handled by the Armada 370: 2 GPIO for > presence, 2 for powering them > - two front amber LED (disk1, disk2) controlled by the SoC > - Seiko S-35390A I2C RTC chip > - UART0 providing serial console > - UART1 used for poweroff (connected to a TI MSP430F2111) > - Fan handled via 4 GPIO (3 for speed, 1 for alarm) > > Signed-off-by: Arnaud Ebalard <arno@natisbad.org> > --- > arch/arm/boot/dts/Makefile | 3 +- > arch/arm/boot/dts/armada-370-synology-ds213j.dts | 351 +++++++++++++++++++++++ > 2 files changed, 353 insertions(+), 1 deletion(-) > create mode 100644 arch/arm/boot/dts/armada-370-synology-ds213j.dts > > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > index 38c89cafa1ab..95387b59ebb2 100644 > --- a/arch/arm/boot/dts/Makefile > +++ b/arch/arm/boot/dts/Makefile > @@ -495,7 +495,8 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \ > armada-370-mirabox.dtb \ > armada-370-netgear-rn102.dtb \ > armada-370-netgear-rn104.dtb \ > - armada-370-rd.dtb > + armada-370-rd.dtb \ > + armada-370-synology-ds213j.dtb > dtb-$(CONFIG_MACH_ARMADA_375) += \ > armada-375-db.dtb > dtb-$(CONFIG_MACH_ARMADA_38X) += \ > diff --git a/arch/arm/boot/dts/armada-370-synology-ds213j.dts b/arch/arm/boot/dts/armada-370-synology-ds213j.dts > new file mode 100644 > index 000000000000..3cba5c7d36f1 > --- /dev/null > +++ b/arch/arm/boot/dts/armada-370-synology-ds213j.dts > @@ -0,0 +1,351 @@ > +/* > + * Device Tree file for Synology DS213j > + * > + * Copyright (C) 2014, Arnaud EBALARD <arno@natisbad.org> > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version > + * 2 of the License, or (at your option) any later version. > + * > + * Note: this Device Tree assumes that the bootloader has remapped the > + * internal registers to 0xf1000000 (instead of the old 0xd0000000). > + * The 0xf1000000 is the default used by the recent, DT-capable, U-Boot > + * bootloaders provided by Marvell. It is used in recent versions of > + * DSM software provided by Synology. Nonetheless, some earlier boards > + * were delivered with an older version of u-boot that left internal > + * registers mapped at 0xd0000000. If you have such a device you will > + * not be able to directly boot a kernel based on this Device Tree. In > + * that case, the preferred solution is to update your bootloader (e.g. > + * by upgrading to latest version of DSM, or building a new one and > + * installing it from u-boot prompt) or adjust the Devive Tree > + * (s/0xf1000000/0xd0000000/ in 'ranges' below). > + */ > + > +/dts-v1/; > + > +#include <dt-bindings/input/input.h> > +#include <dt-bindings/gpio/gpio.h> > +#include "armada-370.dtsi" > + > +/ { > + model = "Synology DS213j"; > + compatible = "synology,ds213j", "marvell,armada370", > + "marvell,armada-370-xp"; > + > + chosen { > + bootargs = "console=ttyS0,115200 earlyprintk"; > + stdout-path = &uart0; > + }; > + > + memory { > + device_type = "memory"; > + reg = <0x00000000 0x20000000>; /* 512 MB */ > + }; > + > + soc { > + ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000 > + MBUS_ID(0x01, 0xe0) 0 0xfff00000 0x100000>; > + > + internal-regs { > + > + sata at a0000 { > + nr-ports = <2>; > + status = "okay"; > + }; > + > + pinctrl { > + pmx_ge0: pmx-ge0 { > + marvell,pins = "mpp5", "mpp6", "mpp7", "mpp8", > + "mpp9", "mpp10", "mpp11", "mpp12", > + "mpp13", "mpp14", "mpp15", "mpp16"; > + marvell,function = "ge0"; > + }; This is already available in armada-370.dtsi as ge0_rgmii_pins. > + > + pmx_uart0: pmx-uart0 { > + marvell,pins = "mpp0", "mpp1"; > + marvell,function = "uart0"; > + }; This however does not seem to be in armada-370.dtsi. This is probably because there are a few options: MPP_FUNCTION(0x0, "gpio", NULL), MPP_FUNCTION(0x1, "uart0", "rxd")), MPP_MODE(1, MPP_FUNCTION(0x0, "gpo", NULL), MPP_FUNCTION(0x1, "uart0", "txd")), MPP_MODE(2, MPP_FUNCTION(0x0, "gpio", NULL), MPP_FUNCTION(0x1, "i2c0", "sck"), MPP_FUNCTION(0x2, "uart0", "txd")), MPP_MODE(3, MPP_FUNCTION(0x0, "gpio", NULL), MPP_FUNCTION(0x1, "i2c0", "sda"), MPP_FUNCTION(0x2, "uart0", "rxd")), What we found with Kirkwood, is that everybody picks the same. Probably because of Marvell's RDK and U-boot etc. It is not clear from the current 370 boards what is being used. I should go look at Mirabox and 370 RD. If they are all mpp0 & mpp1, i suggest we put this into armada-370.dtsi > + > + pmx_i2c: pmx-i2c { > + marvell,pins = "mpp2", "mpp3"; > + marvell,function = "i2c0"; > + }; i2c0_pins > + pmx_spi: pmx-spi { > + marvell,pins = "mpp33", "mpp34", > + "mpp35", "mpp36"; > + marvell,function = "spi0"; > + }; Again, we might want to put this in armada-370.dtsi. > + pmx_disk1_led: pmx-disk1-led { > + marvell,pins = "mpp31"; > + marvell,function = "gpio"; > + }; > + > + pmx_disk2_led: pmx-disk2-led { > + marvell,pins = "mpp32"; > + marvell,function = "gpio"; > + }; > + > + pmx_sata1_pwr: pmx-sata1-pwr { > + marvell,pins = "mpp37"; > + marvell,function = "gpio"; > + }; > + > + pmx_sata2_pwr: pmx-sata2-pwr { > + marvell,pins = "mpp62"; > + marvell,function = "gpio"; > + }; > + > + pmx_sata1_pres: pmx-sata1-pres { > + marvell,pins = "mpp60"; > + marvell,function = "gpio"; > + }; > + > + pmx_sata2_pres: pmx-sata2-pres { > + marvell,pins = "mpp48"; > + marvell,function = "gpio"; > + }; > + > + pmx_smi: pmx-smi { > + marvell,pins = "mpp17", "mpp18"; > + marvell,function = "ge"; > + }; mdio_pins > + pmx_syno_id_bit0: pmx-syno-id-bit0 { > + marvell,pins = "mpp55"; > + marvell,function = "gpio"; > + }; > + > + pmx_syno_id_bit1: pmx-syno-id-bit1 { > + marvell,pins = "mpp56"; > + marvell,function = "gpio"; > + }; > + > + pmx_syno_id_bit2: pmx-syno-id-bit2 { > + marvell,pins = "mpp57"; > + marvell,function = "gpio"; > + }; > + > + pmx_syno_id_bit3: pmx-syno-id-bit3 { > + marvell,pins = "mpp58"; > + marvell,function = "gpio"; > + }; > + > + pmx_fan_ctrl_low: pmx-fan-ctrl-low { > + marvell,pins = "mpp65"; > + marvell,function = "gpio"; > + }; > + > + pmx_fan_ctrl_mid: pmx-fan-ctrl-mid { > + marvell,pins = "mpp64"; > + marvell,function = "gpio"; > + }; > + > + pmx_fan_ctrl_high: pmx-fan-ctrl-high { > + marvell,pins = "mpp63"; > + marvell,function = "gpo"; > + }; > + > + pmx_fan_alarm: pmx-fan-alarm { > + marvell,pins = "mpp38"; > + marvell,function = "gpio"; > + }; > + > + pmx_poweroff: pmx-poweroff { > + marvell,pins = "mpp4"; > + marvell,function = "gpio"; > + }; > + }; > + > + mdio { > + phy1: ethernet-phy at 1 { /* Marvell 88E1512 */ > + reg = <1>; > + }; > + }; > + > + ethernet at 70000 { > + status = "okay"; > + pinctrl-0 = <&pmx_ge0>; > + pinctrl-names = "default"; > + phy = <&phy1>; > + phy-mode = "sgmii"; > + }; > + > + spi0: spi at 10600 { > + status = "okay"; > + pinctrl-0 = <&pmx_spi>; > + pinctrl-names = "default"; > + > + spi-flash at 0 { > + #address-cells = <1>; > + #size-cells = <1>; > + compatible = "micron,n25q064"; > + reg = <0>; /* Chip select 0 */ > + spi-max-frequency = <20000000>; > + > + /* > + * Warning! > + * > + * Synology u-boot uses its compiled-in environment > + * and it seems Synology did not care to change u-boot > + * default configuration in order to allow saving a > + * modified environment at a sensible location. So, > + * if you do a 'saveenv' under u-boot, your modified > + * environment be saved will at 1MB after the start * environment will be saved at 1MB after the start > + * of the flash, i.e. in the middle of the uImage. > + * For that reason, it is strongly advised not to > + * change default environment, unless you know what * change the default environment, unless you know what > + * you are doing. > + */ > + partition at 00000000 { /* u-boot */ > + label = "RedBoot"; > + reg = <0x00000000 0x000c0000>; /* 768KB */ > + }; > + > + partition at 000c0000 { /* uImage */ > + label = "zImage"; > + reg = <0x000c0000 0x002d0000>; /* 2880KB */ > + }; > + > + partition at 00390000 { /* uInitramfs */ > + label = "rd.gz"; > + reg = <0x00390000 0x00440000>; /* 4250KB */ > + }; > + > + partition at 007d0000 { /* MAC address and serial number */ > + label = "vendor"; > + reg = <0x007d0000 0x00010000>; /* 64KB */ > + }; > + > + partition at 007e0000 { > + label = "RedBoot config"; > + reg = <0x007e0000 0x00010000>; /* 64KB */ > + }; > + > + partition at 007f0000 { > + label = "FIS directory"; > + reg = <0x007f0000 0x00010000>; /* 64KB */ > + }; > + }; > + }; > + > + /* rear USB port, near reset button */ > + usb at 50000 { > + status = "okay"; > + }; > + > + /* rear USB port, near RJ45 port */ > + usb at 51000 { > + status = "okay"; > + }; > + > + i2c at 11000 { > + compatible = "marvell,mv64xxx-i2c"; > + clock-frequency = <400000>; > + status = "okay"; > + > + /* Main device RTC chip */ > + s35390a: s35390a at 30 { > + compatible = "ssi,s35390a"; sii not ssi. > + reg = <0x30>; > + }; > + }; > + > + /* RTC provided by Seiko S-35390A above */ > + rtc at 10300 { > + status = "disabled"; > + }; > + > + /* Connected to a header on device's PCB */ > + serial at 12000 { > + status = "okay"; > + }; > + > + /* Connected to a TI MSP430F2111 for power control */ > + serial at 12100 { > + status = "okay"; > + }; > + > + poweroff at 12100 { > + compatible = "synology,power-off"; > + reg = <0x12100 0x100>; > + clocks = <&coreclk 0>; > + }; > + }; > + }; > + > + gpio-fan-100-32-35 { There is some logic to this naming, but i don't remember what it is. Did you check this is appropriate? > + status = "okay"; > + compatible = "gpio-fan"; > + pinctrl-0 = <&pmx_fan_ctrl_low &pmx_fan_ctrl_mid > + &pmx_fan_ctrl_high &pmx_fan_alarm>; > + pinctrl-names = "default"; > + gpios = <&gpio1 31 GPIO_ACTIVE_HIGH > + &gpio2 0 GPIO_ACTIVE_HIGH > + &gpio2 1 GPIO_ACTIVE_HIGH>; > + alarm-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>; > + gpio-fan,speed-map = < 0 0 > + 2200 1 > + 2500 2 > + 3000 4 > + 3300 3 > + 3700 5 > + 3800 6 > + 4200 7 >; > + }; > + > + gpio-leds { > + compatible = "gpio-leds"; > + pinctrl-0 = <&pmx_disk1_led > + &pmx_disk2_led>; > + pinctrl-names = "default"; > + > + disk1-led-amber { > + label = "synology:amber:disk1"; > + gpios = <&gpio0 31 GPIO_ACTIVE_LOW>; > + default-state = "keep"; > + }; > + > + disk2-led-amber { > + label = "synology:amber:disk2"; > + gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; > + default-state = "keep"; > + }; > + }; > + > + regulators { > + compatible = "simple-bus"; > + #address-cells = <1>; > + #size-cells = <0>; > + pinctrl-0 = <&pmx_sata1_pwr &pmx_sata2_pwr>; > + pinctrl-names = "default"; > + > + sata1_regulator: sata1-regulator { > + compatible = "regulator-fixed"; > + reg = <1>; > + regulator-name = "SATA1 Power"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + startup-delay-us = <2000000>; > + enable-active-high; > + regulator-always-on; > + regulator-boot-on; > + gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>; > + }; > + > + sata2_regulator: sata2-regulator { > + compatible = "regulator-fixed"; > + reg = <2>; > + regulator-name = "SATA2 Power"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + startup-delay-us = <4000000>; > + enable-active-high; > + regulator-always-on; > + regulator-boot-on; > + gpio = <&gpio1 30 GPIO_ACTIVE_HIGH>; > + }; > + }; > +}; > -- > 2.1.1 > > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 2/3] arm: mvebu: add .dts file for Synology DS213j 2014-11-16 2:00 ` Andrew Lunn @ 2014-11-16 2:31 ` Andrew Lunn 2014-11-16 13:14 ` Arnaud Ebalard 1 sibling, 0 replies; 17+ messages in thread From: Andrew Lunn @ 2014-11-16 2:31 UTC (permalink / raw) To: linux-arm-kernel > > + pmx_uart0: pmx-uart0 { > > + marvell,pins = "mpp0", "mpp1"; > > + marvell,function = "uart0"; > > + }; > > This however does not seem to be in armada-370.dtsi. This is probably > because there are a few options: > > MPP_FUNCTION(0x0, "gpio", NULL), > MPP_FUNCTION(0x1, "uart0", "rxd")), > MPP_MODE(1, > MPP_FUNCTION(0x0, "gpo", NULL), > MPP_FUNCTION(0x1, "uart0", "txd")), > MPP_MODE(2, > MPP_FUNCTION(0x0, "gpio", NULL), > MPP_FUNCTION(0x1, "i2c0", "sck"), > MPP_FUNCTION(0x2, "uart0", "txd")), > MPP_MODE(3, > MPP_FUNCTION(0x0, "gpio", NULL), > MPP_FUNCTION(0x1, "i2c0", "sda"), > MPP_FUNCTION(0x2, "uart0", "rxd")), > > What we found with Kirkwood, is that everybody picks the > same. Probably because of Marvell's RDK and U-boot etc. It is not > clear from the current 370 boards what is being used. I should go look > at Mirabox and 370 RD. If they are all mpp0 & mpp1, i suggest we put > this into armada-370.dtsi So i went and checked. Both Mirabox and 370 RD use mpp0 and mmp1. So i suggest you add these to armada-370.dtsi. Andrew ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 2/3] arm: mvebu: add .dts file for Synology DS213j 2014-11-16 2:00 ` Andrew Lunn 2014-11-16 2:31 ` Andrew Lunn @ 2014-11-16 13:14 ` Arnaud Ebalard 2014-11-16 23:23 ` Ben Peddell 1 sibling, 1 reply; 17+ messages in thread From: Arnaud Ebalard @ 2014-11-16 13:14 UTC (permalink / raw) To: linux-arm-kernel Hi Andrew, Andrew Lunn <andrew@lunn.ch> writes: >> + internal-regs { >> + >> + sata at a0000 { >> + nr-ports = <2>; >> + status = "okay"; >> + }; >> + >> + pinctrl { >> + pmx_ge0: pmx-ge0 { >> + marvell,pins = "mpp5", "mpp6", "mpp7", "mpp8", >> + "mpp9", "mpp10", "mpp11", "mpp12", >> + "mpp13", "mpp14", "mpp15", "mpp16"; >> + marvell,function = "ge0"; >> + }; > > This is already available in armada-370.dtsi as ge0_rgmii_pins. Will use armada-370.dtsi ones. >> + >> + pmx_uart0: pmx-uart0 { >> + marvell,pins = "mpp0", "mpp1"; >> + marvell,function = "uart0"; >> + }; > > This however does not seem to be in armada-370.dtsi. This is probably > because there are a few options: > > MPP_FUNCTION(0x0, "gpio", NULL), > MPP_FUNCTION(0x1, "uart0", "rxd")), > MPP_MODE(1, > MPP_FUNCTION(0x0, "gpo", NULL), > MPP_FUNCTION(0x1, "uart0", "txd")), > MPP_MODE(2, > MPP_FUNCTION(0x0, "gpio", NULL), > MPP_FUNCTION(0x1, "i2c0", "sck"), > MPP_FUNCTION(0x2, "uart0", "txd")), > MPP_MODE(3, > MPP_FUNCTION(0x0, "gpio", NULL), > MPP_FUNCTION(0x1, "i2c0", "sda"), > MPP_FUNCTION(0x2, "uart0", "rxd")), > > What we found with Kirkwood, is that everybody picks the > same. Probably because of Marvell's RDK and U-boot etc. It is not > clear from the current 370 boards what is being used. I should go look > at Mirabox and 370 RD. If they are all mpp0 & mpp1, i suggest we put > this into armada-370.dtsi Will do. >> + >> + pmx_i2c: pmx-i2c { >> + marvell,pins = "mpp2", "mpp3"; >> + marvell,function = "i2c0"; >> + }; > > i2c0_pins ack. will also rename everything to -/_pins instead of pmx_/- >> + pmx_spi: pmx-spi { >> + marvell,pins = "mpp33", "mpp34", >> + "mpp35", "mpp36"; >> + marvell,function = "spi0"; >> + }; > > Again, we might want to put this in armada-370.dtsi. will do. >> + pmx_smi: pmx-smi { >> + marvell,pins = "mpp17", "mpp18"; >> + marvell,function = "ge"; >> + }; > > mdio_pins ack. >> + * if you do a 'saveenv' under u-boot, your modified >> + * environment be saved will at 1MB after the start > > * environment will be saved at 1MB after the start > > >> + * of the flash, i.e. in the middle of the uImage. >> + * For that reason, it is strongly advised not to >> + * change default environment, unless you know what > > * change the default environment, unless you know what ack. >> + compatible = "marvell,mv64xxx-i2c"; >> + clock-frequency = <400000>; >> + status = "okay"; >> + >> + /* Main device RTC chip */ >> + s35390a: s35390a at 30 { >> + compatible = "ssi,s35390a"; > > sii not ssi. My bad. I reused what I found in kirkwood files w/o checking trivial-devices.txt or vendor-prefixes.txt. Do you want me to add an additional patch for kirkwood files too? >> + reg = <0x30>; >> + }; >> + }; >> + >> + /* RTC provided by Seiko S-35390A above */ >> + rtc at 10300 { >> + status = "disabled"; >> + }; >> + >> + /* Connected to a header on device's PCB */ >> + serial at 12000 { >> + status = "okay"; >> + }; >> + >> + /* Connected to a TI MSP430F2111 for power control */ >> + serial at 12100 { >> + status = "okay"; >> + }; >> + >> + poweroff at 12100 { >> + compatible = "synology,power-off"; >> + reg = <0x12100 0x100>; >> + clocks = <&coreclk 0>; >> + }; >> + }; >> + }; >> + >> + gpio-fan-100-32-35 { > > There is some logic to this naming, but i don't remember what it is. > Did you check this is appropriate? The 32-35 is for the MPP i.e. fan uses mpp32 to mpp35 (3 MPP for speed, one for alarm). I don't know what the 100 part means. What I did is I googled to see which fan supported kirkwood models have and noticed that the DS212j uses the exact same fan, i.e. Y.S.Tech FD129225LL-N so I opted for the same naming. On that aspect, you may be able to explain why the speed-map for this fan goes up to 5000 RPM. This fan is supposed to operate at 1900RPM. Note that it does not matter in practice. Cheers, a+ ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 2/3] arm: mvebu: add .dts file for Synology DS213j 2014-11-16 13:14 ` Arnaud Ebalard @ 2014-11-16 23:23 ` Ben Peddell 2014-11-17 8:25 ` Arnaud Ebalard 0 siblings, 1 reply; 17+ messages in thread From: Ben Peddell @ 2014-11-16 23:23 UTC (permalink / raw) To: linux-arm-kernel On 16/11/2014 11:14 PM, Arnaud Ebalard wrote: >>> + gpio-fan-100-32-35 { >> There is some logic to this naming, but i don't remember what it is. >> Did you check this is appropriate? > The 32-35 is for the MPP i.e. fan uses mpp32 to mpp35 (3 MPP for speed, > one for alarm). I don't know what the 100 part means. What I did is I > googled to see which fan supported kirkwood models have and noticed > that the DS212j uses the exact same fan, i.e. Y.S.Tech FD129225LL-N so > I opted for the same naming. > > On that aspect, you may be able to explain why the speed-map for this > fan goes up to 5000 RPM. This fan is supposed to operate at 1900RPM. > Note that it does not matter in practice. On the Kirkwood Diskstations, the first number (100, 120 or 150) refers to the middle of the three fan speed resistors, the second number (15 or 32) refers to the first fan control pin, and the third number (18 or 35) refers to the first fan alarm pin. i.e. the 100-32-35 uses fan speed resistors of 33, 100 and 150 ohms, uses pins 32-34 for fan control, and uses pin 35 for the fan alarm. The 5000RPM was interpolated from my measured RPM pulse rate (4200PPM) of the 80mm fan in my DS211j (which uses the 150-32-35 fan config) at maximum RPM. -- Ben Peddell * ICT - School Support Officer - St Mary's School Bowen - St Catherine's School Proserpine - St John Bosco's School Collinsville * Mobile: 0431 800 195 *** Disclaimer *** This email is only for the addressees, so please don't disclose it to others without prior agreement. The opinions expressed are mine, and not my employer's. My employer shall not be liable. I am not a lawyer. I check my attachments for viruses, but I can't guarantee my email will arrive unaltered. #include "http://klightspeed.killerwolves.net/stddisclaimer.txt" ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 2/3] arm: mvebu: add .dts file for Synology DS213j 2014-11-16 23:23 ` Ben Peddell @ 2014-11-17 8:25 ` Arnaud Ebalard 2014-11-17 22:41 ` Ben Peddell 0 siblings, 1 reply; 17+ messages in thread From: Arnaud Ebalard @ 2014-11-17 8:25 UTC (permalink / raw) To: linux-arm-kernel Hi, Ben Peddell <klightspeed@killerwolves.net> writes: > On 16/11/2014 11:14 PM, Arnaud Ebalard wrote: >>>> + gpio-fan-100-32-35 { >>> There is some logic to this naming, but i don't remember what it is. >>> Did you check this is appropriate? >> The 32-35 is for the MPP i.e. fan uses mpp32 to mpp35 (3 MPP for speed, >> one for alarm). I don't know what the 100 part means. What I did is I >> googled to see which fan supported kirkwood models have and noticed >> that the DS212j uses the exact same fan, i.e. Y.S.Tech FD129225LL-N so >> I opted for the same naming. >> >> On that aspect, you may be able to explain why the speed-map for this >> fan goes up to 5000 RPM. This fan is supposed to operate at 1900RPM. >> Note that it does not matter in practice. > > On the Kirkwood Diskstations, the first number (100, 120 or 150) refers > to the middle of the three fan speed resistors, Would not have found that alone ;-) Thanks for clarifying. > the second number (15 or > 32) refers to the first fan control pin, and the third number (18 or 35) > refers to the first fan alarm pin. > > i.e. the 100-32-35 uses fan speed resistors of 33, 100 and 150 ohms, > uses pins 32-34 for fan control, and uses pin 35 for the fan alarm. > > The 5000RPM was interpolated from my measured RPM pulse rate (4200PPM) > of the 80mm fan in my DS211j (which uses the 150-32-35 fan config) at > maximum RPM. Then, I think I need to change the speed map to have 1900 RPM as max speed. Out of curiosity, how did you measured the RPM pulse rate exactly? Cheers, a+ ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 2/3] arm: mvebu: add .dts file for Synology DS213j 2014-11-17 8:25 ` Arnaud Ebalard @ 2014-11-17 22:41 ` Ben Peddell 2014-11-17 23:23 ` Arnaud Ebalard 0 siblings, 1 reply; 17+ messages in thread From: Ben Peddell @ 2014-11-17 22:41 UTC (permalink / raw) To: linux-arm-kernel On 17/11/14 18:25, Arnaud Ebalard wrote: > Hi, > > Ben Peddell <klightspeed@killerwolves.net> writes: > >> On 16/11/2014 11:14 PM, Arnaud Ebalard wrote: >>>>> + gpio-fan-100-32-35 { >>>> There is some logic to this naming, but i don't remember what it is. >>>> Did you check this is appropriate? >>> The 32-35 is for the MPP i.e. fan uses mpp32 to mpp35 (3 MPP for speed, >>> one for alarm). I don't know what the 100 part means. What I did is I >>> googled to see which fan supported kirkwood models have and noticed >>> that the DS212j uses the exact same fan, i.e. Y.S.Tech FD129225LL-N so >>> I opted for the same naming. >>> >>> On that aspect, you may be able to explain why the speed-map for this >>> fan goes up to 5000 RPM. This fan is supposed to operate at 1900RPM. >>> Note that it does not matter in practice. >> >> On the Kirkwood Diskstations, the first number (100, 120 or 150) refers >> to the middle of the three fan speed resistors, > > Would not have found that alone ;-) Thanks for clarifying. > >> the second number (15 or >> 32) refers to the first fan control pin, and the third number (18 or 35) >> refers to the first fan alarm pin. >> >> i.e. the 100-32-35 uses fan speed resistors of 33, 100 and 150 ohms, >> uses pins 32-34 for fan control, and uses pin 35 for the fan alarm. >> >> The 5000RPM was interpolated from my measured RPM pulse rate (4200PPM) >> of the 80mm fan in my DS211j (which uses the 150-32-35 fan config) at >> maximum RPM. > > Then, I think I need to change the speed map to have 1900 RPM as max > speed. Out of curiosity, how did you measured the RPM pulse rate > exactly? I hooked a logic analyzer to the sense pin and measured the pulse rate. Looking at the specifications of the fan in this unit (an EC7025L12ER), it has a maximum fan speed of 3000RPM, so it looks like it uses two pulses per revolution and not one as I had assumed when I created the speed map. ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 2/3] arm: mvebu: add .dts file for Synology DS213j 2014-11-17 22:41 ` Ben Peddell @ 2014-11-17 23:23 ` Arnaud Ebalard 0 siblings, 0 replies; 17+ messages in thread From: Arnaud Ebalard @ 2014-11-17 23:23 UTC (permalink / raw) To: linux-arm-kernel Hi Ben, Ben Peddell <klightspeed@killerwolves.net> writes: >>> The 5000RPM was interpolated from my measured RPM pulse rate (4200PPM) >>> of the 80mm fan in my DS211j (which uses the 150-32-35 fan config) at >>> maximum RPM. >> >> Then, I think I need to change the speed map to have 1900 RPM as max >> speed. Out of curiosity, how did you measured the RPM pulse rate >> exactly? > > I hooked a logic analyzer to the sense pin and measured the pulse rate. > > Looking at the specifications of the fan in this unit (an EC7025L12ER), > it has a maximum fan speed of 3000RPM, so it looks like it uses two > pulses per revolution and not one as I had assumed when I created the > speed map. Thanks for this feedback. Cheers, a+ ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 3/3] arm: mvebu: add .dts file for Synology DS414 2014-11-16 0:04 [PATCHv1 0/3] arm: mvebu: add Synology DS213j and DS414 .dts files Arnaud Ebalard 2014-11-16 0:04 ` [PATCHv1 1/3] arm: mvebu: add uartX labels for Armada SoC serial nodes Arnaud Ebalard 2014-11-16 0:04 ` [PATCHv1 2/3] arm: mvebu: add .dts file for Synology DS213j Arnaud Ebalard @ 2014-11-16 0:04 ` Arnaud Ebalard 2014-11-16 2:15 ` Andrew Lunn 2014-11-16 2:20 ` [PATCHv1 0/3] arm: mvebu: add Synology DS213j and DS414 .dts files Andrew Lunn 3 siblings, 1 reply; 17+ messages in thread From: Arnaud Ebalard @ 2014-11-16 0:04 UTC (permalink / raw) To: linux-arm-kernel Synology DS414 is a 4-bay NAS powered by a Marvell Armada XP (mv78230 dual-core @1.33Ghz). It is very similar on many aspects to previous 4-bay synology models based on Marvell kirkwood SoC. Here is a short summary of the device: - 1GB RAM - Boot on SPI flash (64Mbit Micron N25Q064) - 2 GbE interfaces (Armada MAC connected to two Marvell 88E1512 PHY via RGMII) - 1 front USB 2.0 ports (directly handled by the Armada 370) - 2 rear USB 3.0 ports (handled by an EtronTech EJ168A XHCI controller on the PCIe bus) - 4 internal SATA ports handled by a Marvell 88SX7042 SATA-II controller on the PCIe bus) - Seiko S-35390A I2C RTC chip - UART0 providing serial console - UART1 used for poweroff (connected to a Microchip PIC16F883) Additional note: the front LEDs, the two fans and the buzzer are not directly connected to the SoC and under its control. The former are presumably driven by the SATA controller, the latter by the PIC. Signed-off-by: Arnaud Ebalard <arno@natisbad.org> --- arch/arm/boot/dts/Makefile | 3 +- arch/arm/boot/dts/armada-xp-synology-ds414.dts | 343 +++++++++++++++++++++++++ 2 files changed, 345 insertions(+), 1 deletion(-) create mode 100644 arch/arm/boot/dts/armada-xp-synology-ds414.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index 95387b59ebb2..c181ee8055ac 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -509,7 +509,8 @@ dtb-$(CONFIG_MACH_ARMADA_XP) += \ armada-xp-lenovo-ix4-300d.dtb \ armada-xp-matrix.dtb \ armada-xp-netgear-rn2120.dtb \ - armada-xp-openblocks-ax3-4.dtb + armada-xp-openblocks-ax3-4.dtb \ + armada-xp-synology-ds414.dtb dtb-$(CONFIG_MACH_DOVE) += dove-cm-a510.dtb \ dove-cubox.dtb \ dove-cubox-es.dtb \ diff --git a/arch/arm/boot/dts/armada-xp-synology-ds414.dts b/arch/arm/boot/dts/armada-xp-synology-ds414.dts new file mode 100644 index 000000000000..1f99e1a27e00 --- /dev/null +++ b/arch/arm/boot/dts/armada-xp-synology-ds414.dts @@ -0,0 +1,343 @@ +/* + * Device Tree file for Synology DS414 + * + * Copyright (C) 2014, Arnaud EBALARD <arno@natisbad.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. + * + * Note: this Device Tree assumes that the bootloader has remapped the + * internal registers to 0xf1000000 (instead of the old 0xd0000000). + * The 0xf1000000 is the default used by the recent, DT-capable, U-Boot + * bootloaders provided by Marvell. It is used in recent versions of + * DSM software provided by Synology. Nonetheless, some earlier boards + * were delivered with an older version of u-boot that left internal + * registers mapped at 0xd0000000. If you have such a device you will + * not be able to directly boot a kernel based on this Device Tree. In + * that case, the preferred solution is to update your bootloader (e.g. + * by upgrading to latest version of DSM, or building a new one and + * installing it from u-boot prompt) or adjust the Devive Tree + * (s/0xf1000000/0xd0000000/ in 'ranges' below). + */ + +/dts-v1/; + +#include <dt-bindings/input/input.h> +#include <dt-bindings/gpio/gpio.h> +#include "armada-xp-mv78230.dtsi" + +/ { + model = "Synology DS414"; + compatible = "synology,ds414", "marvell,armadaxp-mv78230", + "marvell,armadaxp", "marvell,armada-370-xp"; + + chosen { + bootargs = "console=ttyS0,115200 earlyprintk"; + stdout-path = &uart0; + }; + + memory { + device_type = "memory"; + reg = <0 0x00000000 0 0x40000000>; /* 1GB */ + }; + + soc { + ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000 + MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000>; + + pcie-controller { + status = "okay"; + + /* + * Connected to Marvell 88SX7042 SATA-II controller + * handling the four disks. + */ + pcie at 1,0 { + /* Port 0, Lane 0 */ + status = "okay"; + }; + + /* + * Connected to EtronTech EJ168A XHCI controller + * providing the two rear USB 3.0 ports. + */ + pcie at 5,0 { + /* Port 1, Lane 0 */ + status = "okay"; + }; + }; + + internal-regs { + + pinctrl { + pmx_ge0: pmx-ge0 { + marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3", + "mpp4", "mpp5", "mpp6", "mpp7", + "mpp8", "mpp9", "mpp10", "mpp11"; + marvell,function = "ge0"; + }; + + pmx_ge1: pmx-ge1 { + marvell,pins = "mpp12", "mpp13", "mpp14", "mpp15", + "mpp16", "mpp17", "mpp18", "mpp19", + "mpp20", "mpp21", "mpp22", "mpp23"; + marvell,function = "ge1"; + }; + + pmx_spi: pmx-spi { + marvell,pins = "mpp36", "mpp37", + "mpp38", "mpp39"; + marvell,function = "spi"; + }; + + pmx_sata1_pwr: pmx-sata1-pwr { + marvell,pins = "mpp42"; + marvell,function = "gpio"; + }; + + pmx_sata2_pwr: pmx-sata2-pwr { + marvell,pins = "mpp44"; + marvell,function = "gpio"; + }; + + pmx_sata3_pwr: pmx-sata3-pwr { + marvell,pins = "mpp45"; + marvell,function = "gpio"; + }; + + pmx_sata4_pwr: pmx-sata4-pwr { + marvell,pins = "mpp46"; + marvell,function = "gpio"; + }; + + pmx_sata1_pres: pmx-sata1-pres { + marvell,pins = "mpp34"; + marvell,function = "gpio"; + }; + + pmx_sata2_pres: pmx-sata2-pres { + marvell,pins = "mpp35"; + marvell,function = "gpio"; + }; + + pmx_sata3_pres: pmx-sata3-pres { + marvell,pins = "mpp40"; + marvell,function = "gpio"; + }; + + pmx_sata4_pres: pmx-sata4-pres { + marvell,pins = "mpp41"; + marvell,function = "gpio"; + }; + + pmx_syno_id_bit0: pmx_syno_id_bit0 { + marvell,pins = "mpp26"; + marvell,function = "gpio"; + }; + + pmx_syno_id_bit1: pmx_syno_id_bit1 { + marvell,pins = "mpp28"; + marvell,function = "gpio"; + }; + + pmx_syno_id_bit2: pmx_syno_id_bit2 { + marvell,pins = "mpp29"; + marvell,function = "gpio"; + }; + + pmx_fan1_alarm: pmx-fan1-alarm { + marvell,pins = "mpp33"; + marvell,function = "gpio"; + }; + + pmx_fan2_alarm: pmx-fan2-alarm { + marvell,pins = "mpp32"; + marvell,function = "gpio"; + }; + }; + + mdio { + phy0: ethernet-phy at 0 { /* Marvell 88E1512 */ + reg = <0>; + }; + + phy1: ethernet-phy at 1 { /* Marvell 88E1512 */ + reg = <1>; + }; + }; + + ethernet at 70000 { + status = "okay"; + pinctrl-0 = <&pmx_ge0>; + pinctrl-names = "default"; + phy = <&phy1>; + phy-mode = "rgmii-id"; + }; + + ethernet at 74000 { + pinctrl-0 = <&pmx_ge1>; + pinctrl-names = "default"; + status = "okay"; + phy = <&phy0>; + phy-mode = "rgmii-id"; + }; + + spi0: spi at 10600 { + status = "okay"; + pinctrl-0 = <&pmx_spi>; + pinctrl-names = "default"; + + spi-flash at 0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "micron,n25q064"; + reg = <0>; /* Chip select 0 */ + spi-max-frequency = <20000000>; + + /* + * Warning! + * + * Synology u-boot uses its compiled-in environment + * and it seems Synology did not care to change u-boot + * default configuration in order to allow saving a + * modified environment at a sensible location. So, + * if you do a 'saveenv' under u-boot, your modified + * environment be saved will at 1MB after the start + * of the flash, i.e. in the middle of the uImage. + * For that reason, it is strongly advised not to + * change default environment, unless you know what + * you are doing. + */ + partition at 00000000 { /* u-boot */ + label = "RedBoot"; + reg = <0x00000000 0x000d0000>; /* 832KB */ + }; + + partition at 000c0000 { /* uImage */ + label = "zImage"; + reg = <0x000d0000 0x002d0000>; /* 2880KB */ + }; + + partition at 003a0000 { /* uInitramfs */ + label = "rd.gz"; + reg = <0x003a0000 0x00430000>; /* 4250KB */ + }; + + partition at 007d0000 { /* MAC address and serial number */ + label = "vendor"; + reg = <0x007d0000 0x00010000>; /* 64KB */ + }; + + partition at 007e0000 { + label = "RedBoot config"; + reg = <0x007e0000 0x00010000>; /* 64KB */ + }; + + partition at 007f0000 { + label = "FIS directory"; + reg = <0x007f0000 0x00010000>; /* 64KB */ + }; + }; + }; + + /* Front USB 2.0 port */ + usb at 50000 { + status = "okay"; + }; + + i2c at 11000 { + clock-frequency = <400000>; + status = "okay"; + + s35390a: s35390a at 30 { + compatible = "ssi,s35390a"; + reg = <0x30>; + }; + }; + + /* RTC is provided by Seiko S-35390A above */ + rtc at 10300 { + status = "disabled"; + }; + + /* Connected to a header on device's PCB */ + serial at 12000 { + status = "okay"; + }; + + /* Connected to a Microchip PIC16F883 for power control */ + serial at 12100 { + status = "okay"; + }; + + poweroff at 12100 { + compatible = "synology,power-off"; + reg = <0x12100 0x100>; + clocks = <&coreclk 0>; + }; + }; + }; + + regulators { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-0 = <&pmx_sata1_pwr &pmx_sata2_pwr + &pmx_sata3_pwr &pmx_sata4_pwr>; + pinctrl-names = "default"; + + sata1_regulator: sata1-regulator { + compatible = "regulator-fixed"; + reg = <1>; + regulator-name = "SATA1 Power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + startup-delay-us = <2000000>; + enable-active-high; + regulator-always-on; + regulator-boot-on; + gpio = <&gpio1 10 GPIO_ACTIVE_HIGH>; + }; + + sata2_regulator: sata2-regulator { + compatible = "regulator-fixed"; + reg = <2>; + regulator-name = "SATA2 Power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + startup-delay-us = <4000000>; + enable-active-high; + regulator-always-on; + regulator-boot-on; + gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>; + }; + + sata3_regulator: sata3-regulator { + compatible = "regulator-fixed"; + reg = <3>; + regulator-name = "SATA3 Power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + startup-delay-us = <6000000>; + enable-active-high; + regulator-always-on; + regulator-boot-on; + gpio = <&gpio1 13 GPIO_ACTIVE_HIGH>; + }; + + sata4_regulator: sata4-regulator { + compatible = "regulator-fixed"; + reg = <4>; + regulator-name = "SATA4 Power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + startup-delay-us = <8000000>; + enable-active-high; + regulator-always-on; + regulator-boot-on; + gpio = <&gpio1 14 GPIO_ACTIVE_HIGH>; + }; + }; +}; -- 2.1.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCHv1 3/3] arm: mvebu: add .dts file for Synology DS414 2014-11-16 0:04 ` [PATCHv1 3/3] arm: mvebu: add .dts file for Synology DS414 Arnaud Ebalard @ 2014-11-16 2:15 ` Andrew Lunn 2014-11-16 13:17 ` Arnaud Ebalard 0 siblings, 1 reply; 17+ messages in thread From: Andrew Lunn @ 2014-11-16 2:15 UTC (permalink / raw) To: linux-arm-kernel On Sun, Nov 16, 2014 at 01:04:34AM +0100, Arnaud Ebalard wrote: > > Synology DS414 is a 4-bay NAS powered by a Marvell Armada XP > (mv78230 dual-core @1.33Ghz). It is very similar on many aspects > to previous 4-bay synology models based on Marvell kirkwood SoC. > Here is a short summary of the device: > > - 1GB RAM > - Boot on SPI flash (64Mbit Micron N25Q064) > - 2 GbE interfaces (Armada MAC connected to two Marvell 88E1512 > PHY via RGMII) > - 1 front USB 2.0 ports (directly handled by the Armada 370) > - 2 rear USB 3.0 ports (handled by an EtronTech EJ168A XHCI > controller on the PCIe bus) > - 4 internal SATA ports handled by a Marvell 88SX7042 SATA-II > controller on the PCIe bus) > - Seiko S-35390A I2C RTC chip > - UART0 providing serial console > - UART1 used for poweroff (connected to a Microchip PIC16F883) > > Additional note: the front LEDs, the two fans and the buzzer are not > directly connected to the SoC and under its control. The former are > presumably driven by the SATA controller, the latter by the PIC. > > Signed-off-by: Arnaud Ebalard <arno@natisbad.org> > --- > arch/arm/boot/dts/Makefile | 3 +- > arch/arm/boot/dts/armada-xp-synology-ds414.dts | 343 +++++++++++++++++++++++++ > 2 files changed, 345 insertions(+), 1 deletion(-) > create mode 100644 arch/arm/boot/dts/armada-xp-synology-ds414.dts > > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > index 95387b59ebb2..c181ee8055ac 100644 > --- a/arch/arm/boot/dts/Makefile > +++ b/arch/arm/boot/dts/Makefile > @@ -509,7 +509,8 @@ dtb-$(CONFIG_MACH_ARMADA_XP) += \ > armada-xp-lenovo-ix4-300d.dtb \ > armada-xp-matrix.dtb \ > armada-xp-netgear-rn2120.dtb \ > - armada-xp-openblocks-ax3-4.dtb > + armada-xp-openblocks-ax3-4.dtb \ > + armada-xp-synology-ds414.dtb > dtb-$(CONFIG_MACH_DOVE) += dove-cm-a510.dtb \ > dove-cubox.dtb \ > dove-cubox-es.dtb \ > diff --git a/arch/arm/boot/dts/armada-xp-synology-ds414.dts b/arch/arm/boot/dts/armada-xp-synology-ds414.dts > new file mode 100644 > index 000000000000..1f99e1a27e00 > --- /dev/null > +++ b/arch/arm/boot/dts/armada-xp-synology-ds414.dts > @@ -0,0 +1,343 @@ > +/* > + * Device Tree file for Synology DS414 > + * > + * Copyright (C) 2014, Arnaud EBALARD <arno@natisbad.org> > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version > + * 2 of the License, or (at your option) any later version. > + * > + * Note: this Device Tree assumes that the bootloader has remapped the > + * internal registers to 0xf1000000 (instead of the old 0xd0000000). > + * The 0xf1000000 is the default used by the recent, DT-capable, U-Boot > + * bootloaders provided by Marvell. It is used in recent versions of > + * DSM software provided by Synology. Nonetheless, some earlier boards > + * were delivered with an older version of u-boot that left internal > + * registers mapped at 0xd0000000. If you have such a device you will > + * not be able to directly boot a kernel based on this Device Tree. In > + * that case, the preferred solution is to update your bootloader (e.g. > + * by upgrading to latest version of DSM, or building a new one and > + * installing it from u-boot prompt) or adjust the Devive Tree > + * (s/0xf1000000/0xd0000000/ in 'ranges' below). > + */ > + > +/dts-v1/; > + > +#include <dt-bindings/input/input.h> > +#include <dt-bindings/gpio/gpio.h> > +#include "armada-xp-mv78230.dtsi" > + > +/ { > + model = "Synology DS414"; > + compatible = "synology,ds414", "marvell,armadaxp-mv78230", > + "marvell,armadaxp", "marvell,armada-370-xp"; > + > + chosen { > + bootargs = "console=ttyS0,115200 earlyprintk"; > + stdout-path = &uart0; > + }; > + > + memory { > + device_type = "memory"; > + reg = <0 0x00000000 0 0x40000000>; /* 1GB */ > + }; > + > + soc { > + ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000 > + MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000>; > + > + pcie-controller { > + status = "okay"; > + > + /* > + * Connected to Marvell 88SX7042 SATA-II controller > + * handling the four disks. > + */ > + pcie at 1,0 { > + /* Port 0, Lane 0 */ > + status = "okay"; > + }; > + > + /* > + * Connected to EtronTech EJ168A XHCI controller > + * providing the two rear USB 3.0 ports. > + */ > + pcie at 5,0 { > + /* Port 1, Lane 0 */ > + status = "okay"; > + }; > + }; > + > + internal-regs { > + > + pinctrl { > + pmx_ge0: pmx-ge0 { > + marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3", > + "mpp4", "mpp5", "mpp6", "mpp7", > + "mpp8", "mpp9", "mpp10", "mpp11"; > + marvell,function = "ge0"; > + }; > + > + pmx_ge1: pmx-ge1 { > + marvell,pins = "mpp12", "mpp13", "mpp14", "mpp15", > + "mpp16", "mpp17", "mpp18", "mpp19", > + "mpp20", "mpp21", "mpp22", "mpp23"; > + marvell,function = "ge1"; > + }; > + > + pmx_spi: pmx-spi { > + marvell,pins = "mpp36", "mpp37", > + "mpp38", "mpp39"; > + marvell,function = "spi"; > + }; It would be good to move these to armada-xp-mv78230.dtsi. I would suggest following the naming convention used by the 370. > + > + pmx_sata1_pwr: pmx-sata1-pwr { > + marvell,pins = "mpp42"; > + marvell,function = "gpio"; > + }; > + > + pmx_sata2_pwr: pmx-sata2-pwr { > + marvell,pins = "mpp44"; > + marvell,function = "gpio"; > + }; > + > + pmx_sata3_pwr: pmx-sata3-pwr { > + marvell,pins = "mpp45"; > + marvell,function = "gpio"; > + }; > + > + pmx_sata4_pwr: pmx-sata4-pwr { > + marvell,pins = "mpp46"; > + marvell,function = "gpio"; > + }; > + > + pmx_sata1_pres: pmx-sata1-pres { > + marvell,pins = "mpp34"; > + marvell,function = "gpio"; > + }; > + > + pmx_sata2_pres: pmx-sata2-pres { > + marvell,pins = "mpp35"; > + marvell,function = "gpio"; > + }; > + > + pmx_sata3_pres: pmx-sata3-pres { > + marvell,pins = "mpp40"; > + marvell,function = "gpio"; > + }; > + > + pmx_sata4_pres: pmx-sata4-pres { > + marvell,pins = "mpp41"; > + marvell,function = "gpio"; > + }; > + > + pmx_syno_id_bit0: pmx_syno_id_bit0 { > + marvell,pins = "mpp26"; > + marvell,function = "gpio"; > + }; > + > + pmx_syno_id_bit1: pmx_syno_id_bit1 { > + marvell,pins = "mpp28"; > + marvell,function = "gpio"; > + }; > + > + pmx_syno_id_bit2: pmx_syno_id_bit2 { > + marvell,pins = "mpp29"; > + marvell,function = "gpio"; > + }; > + > + pmx_fan1_alarm: pmx-fan1-alarm { > + marvell,pins = "mpp33"; > + marvell,function = "gpio"; > + }; > + > + pmx_fan2_alarm: pmx-fan2-alarm { > + marvell,pins = "mpp32"; > + marvell,function = "gpio"; > + }; > + }; > + > + mdio { > + phy0: ethernet-phy at 0 { /* Marvell 88E1512 */ > + reg = <0>; > + }; > + > + phy1: ethernet-phy at 1 { /* Marvell 88E1512 */ > + reg = <1>; > + }; > + }; > + > + ethernet at 70000 { > + status = "okay"; > + pinctrl-0 = <&pmx_ge0>; > + pinctrl-names = "default"; > + phy = <&phy1>; > + phy-mode = "rgmii-id"; > + }; > + > + ethernet at 74000 { > + pinctrl-0 = <&pmx_ge1>; > + pinctrl-names = "default"; > + status = "okay"; > + phy = <&phy0>; > + phy-mode = "rgmii-id"; > + }; > + > + spi0: spi at 10600 { > + status = "okay"; > + pinctrl-0 = <&pmx_spi>; > + pinctrl-names = "default"; > + > + spi-flash at 0 { > + #address-cells = <1>; > + #size-cells = <1>; > + compatible = "micron,n25q064"; > + reg = <0>; /* Chip select 0 */ > + spi-max-frequency = <20000000>; > + > + /* > + * Warning! > + * > + * Synology u-boot uses its compiled-in environment > + * and it seems Synology did not care to change u-boot > + * default configuration in order to allow saving a > + * modified environment at a sensible location. So, > + * if you do a 'saveenv' under u-boot, your modified > + * environment be saved will at 1MB after the start > + * of the flash, i.e. in the middle of the uImage. > + * For that reason, it is strongly advised not to > + * change default environment, unless you know what > + * you are doing. > + */ Seems to be a cut/paste of the 370 text. So same comments. > + partition at 00000000 { /* u-boot */ > + label = "RedBoot"; > + reg = <0x00000000 0x000d0000>; /* 832KB */ > + }; > + > + partition at 000c0000 { /* uImage */ > + label = "zImage"; > + reg = <0x000d0000 0x002d0000>; /* 2880KB */ > + }; > + > + partition at 003a0000 { /* uInitramfs */ > + label = "rd.gz"; > + reg = <0x003a0000 0x00430000>; /* 4250KB */ > + }; > + > + partition at 007d0000 { /* MAC address and serial number */ > + label = "vendor"; > + reg = <0x007d0000 0x00010000>; /* 64KB */ > + }; > + > + partition at 007e0000 { > + label = "RedBoot config"; > + reg = <0x007e0000 0x00010000>; /* 64KB */ > + }; > + > + partition at 007f0000 { > + label = "FIS directory"; > + reg = <0x007f0000 0x00010000>; /* 64KB */ > + }; > + }; > + }; > + > + /* Front USB 2.0 port */ > + usb at 50000 { > + status = "okay"; > + }; > + > + i2c at 11000 { > + clock-frequency = <400000>; > + status = "okay"; > + > + s35390a: s35390a at 30 { > + compatible = "ssi,s35390a"; sii Ah! It is also wrong in kirkwood-synology.dtsi > + reg = <0x30>; > + }; > + }; > + > + /* RTC is provided by Seiko S-35390A above */ > + rtc at 10300 { > + status = "disabled"; > + }; > + > + /* Connected to a header on device's PCB */ > + serial at 12000 { > + status = "okay"; > + }; > + > + /* Connected to a Microchip PIC16F883 for power control */ > + serial at 12100 { > + status = "okay"; > + }; > + > + poweroff at 12100 { > + compatible = "synology,power-off"; > + reg = <0x12100 0x100>; > + clocks = <&coreclk 0>; > + }; > + }; > + }; > + > + regulators { > + compatible = "simple-bus"; > + #address-cells = <1>; > + #size-cells = <0>; > + pinctrl-0 = <&pmx_sata1_pwr &pmx_sata2_pwr > + &pmx_sata3_pwr &pmx_sata4_pwr>; > + pinctrl-names = "default"; > + > + sata1_regulator: sata1-regulator { > + compatible = "regulator-fixed"; > + reg = <1>; > + regulator-name = "SATA1 Power"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + startup-delay-us = <2000000>; > + enable-active-high; > + regulator-always-on; > + regulator-boot-on; > + gpio = <&gpio1 10 GPIO_ACTIVE_HIGH>; > + }; > + > + sata2_regulator: sata2-regulator { > + compatible = "regulator-fixed"; > + reg = <2>; > + regulator-name = "SATA2 Power"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + startup-delay-us = <4000000>; > + enable-active-high; > + regulator-always-on; > + regulator-boot-on; > + gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>; > + }; > + > + sata3_regulator: sata3-regulator { > + compatible = "regulator-fixed"; > + reg = <3>; > + regulator-name = "SATA3 Power"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + startup-delay-us = <6000000>; > + enable-active-high; > + regulator-always-on; > + regulator-boot-on; > + gpio = <&gpio1 13 GPIO_ACTIVE_HIGH>; > + }; > + > + sata4_regulator: sata4-regulator { > + compatible = "regulator-fixed"; > + reg = <4>; > + regulator-name = "SATA4 Power"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + startup-delay-us = <8000000>; > + enable-active-high; > + regulator-always-on; > + regulator-boot-on; > + gpio = <&gpio1 14 GPIO_ACTIVE_HIGH>; > + }; > + }; > +}; > -- > 2.1.1 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 3/3] arm: mvebu: add .dts file for Synology DS414 2014-11-16 2:15 ` Andrew Lunn @ 2014-11-16 13:17 ` Arnaud Ebalard 0 siblings, 0 replies; 17+ messages in thread From: Arnaud Ebalard @ 2014-11-16 13:17 UTC (permalink / raw) To: linux-arm-kernel Hi, Andrew Lunn <andrew@lunn.ch> writes: >> + internal-regs { >> + >> + pinctrl { >> + pmx_ge0: pmx-ge0 { >> + marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3", >> + "mpp4", "mpp5", "mpp6", "mpp7", >> + "mpp8", "mpp9", "mpp10", "mpp11"; >> + marvell,function = "ge0"; >> + }; >> + >> + pmx_ge1: pmx-ge1 { >> + marvell,pins = "mpp12", "mpp13", "mpp14", "mpp15", >> + "mpp16", "mpp17", "mpp18", "mpp19", >> + "mpp20", "mpp21", "mpp22", "mpp23"; >> + marvell,function = "ge1"; >> + }; >> + >> + pmx_spi: pmx-spi { >> + marvell,pins = "mpp36", "mpp37", >> + "mpp38", "mpp39"; >> + marvell,function = "spi"; >> + }; > > It would be good to move these to armada-xp-mv78230.dtsi. I would > suggest following the naming convention used by the 370. Will do. >> + spi0: spi at 10600 { >> + status = "okay"; >> + pinctrl-0 = <&pmx_spi>; >> + pinctrl-names = "default"; >> + >> + spi-flash at 0 { >> + #address-cells = <1>; >> + #size-cells = <1>; >> + compatible = "micron,n25q064"; >> + reg = <0>; /* Chip select 0 */ >> + spi-max-frequency = <20000000>; >> + >> + /* >> + * Warning! >> + * >> + * Synology u-boot uses its compiled-in environment >> + * and it seems Synology did not care to change u-boot >> + * default configuration in order to allow saving a >> + * modified environment at a sensible location. So, >> + * if you do a 'saveenv' under u-boot, your modified >> + * environment be saved will at 1MB after the start >> + * of the flash, i.e. in the middle of the uImage. >> + * For that reason, it is strongly advised not to >> + * change default environment, unless you know what >> + * you are doing. >> + */ > > Seems to be a cut/paste of the 370 text. So same comments. Will correct typos. >> + i2c at 11000 { >> + clock-frequency = <400000>; >> + status = "okay"; >> + >> + s35390a: s35390a at 30 { >> + compatible = "ssi,s35390a"; > > sii > > Ah! It is also wrong in kirkwood-synology.dtsi Good catch anyway ;-) Cheers, a+ ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 0/3] arm: mvebu: add Synology DS213j and DS414 .dts files 2014-11-16 0:04 [PATCHv1 0/3] arm: mvebu: add Synology DS213j and DS414 .dts files Arnaud Ebalard ` (2 preceding siblings ...) 2014-11-16 0:04 ` [PATCHv1 3/3] arm: mvebu: add .dts file for Synology DS414 Arnaud Ebalard @ 2014-11-16 2:20 ` Andrew Lunn 2014-11-16 13:24 ` Arnaud Ebalard 3 siblings, 1 reply; 17+ messages in thread From: Andrew Lunn @ 2014-11-16 2:20 UTC (permalink / raw) To: linux-arm-kernel > Andrew, in this v1, the two .dts files are still separate w/o any common > .dtsi. I took a quick look it seems there are small differences between > the two which make me wonder if its worth the trouble: > > - DS414 fans are not handled by the SoC > - various pinctrl variations > - a tiny difference in SPI flash partitioning > - phy-mode for ethernet interfaces > - different comments associated w/ same nodes (e.g. uart1) > - etc O.K, lets wait for the moment. It could be that there is more in common between different 370 devices, and between different XP devices, but less in common across 370 and XP. We can refactor it later when a pattern starts to appear. > - Added a comment in the .dts file about the bootloader screwing the kernel > if the environment is saved. Is this well know in the forums? Do you think Synology knows about it? It would be nice if it was fixed. Maybe not for these products, but for the next generation. Andrew ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHv1 0/3] arm: mvebu: add Synology DS213j and DS414 .dts files 2014-11-16 2:20 ` [PATCHv1 0/3] arm: mvebu: add Synology DS213j and DS414 .dts files Andrew Lunn @ 2014-11-16 13:24 ` Arnaud Ebalard 0 siblings, 0 replies; 17+ messages in thread From: Arnaud Ebalard @ 2014-11-16 13:24 UTC (permalink / raw) To: linux-arm-kernel Hi, Andrew Lunn <andrew@lunn.ch> writes: >> Andrew, in this v1, the two .dts files are still separate w/o any common >> .dtsi. I took a quick look it seems there are small differences between >> the two which make me wonder if its worth the trouble: >> >> - DS414 fans are not handled by the SoC >> - various pinctrl variations >> - a tiny difference in SPI flash partitioning >> - phy-mode for ethernet interfaces >> - different comments associated w/ same nodes (e.g. uart1) >> - etc > > O.K, lets wait for the moment. It could be that there is more in > common between different 370 devices, and between different XP > devices, but less in common across 370 and XP. > > We can refactor it later when a pattern starts to appear. ok. >> - Added a comment in the .dts file about the bootloader screwing the kernel >> if the environment is saved. > > Is this well know in the forums? Do you think Synology knows about it? > It would be nice if it was fixed. Maybe not for these products, but > for the next generation. I never went to synology forum to check if someone had broken her NAS doing a saveenv under u-boot. But I doubt that: doing a 'synology saveenv' search on google gives DS213j .dts submission (with the comment on the issue) as 10th link. If you have some contact to provide, I can report it. Cheers, a+ ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2014-11-17 23:23 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-11-16 0:04 [PATCHv1 0/3] arm: mvebu: add Synology DS213j and DS414 .dts files Arnaud Ebalard 2014-11-16 0:04 ` [PATCHv1 1/3] arm: mvebu: add uartX labels for Armada SoC serial nodes Arnaud Ebalard 2014-11-16 1:09 ` Andrew Lunn 2014-11-16 12:34 ` Arnaud Ebalard 2014-11-16 0:04 ` [PATCHv1 2/3] arm: mvebu: add .dts file for Synology DS213j Arnaud Ebalard 2014-11-16 2:00 ` Andrew Lunn 2014-11-16 2:31 ` Andrew Lunn 2014-11-16 13:14 ` Arnaud Ebalard 2014-11-16 23:23 ` Ben Peddell 2014-11-17 8:25 ` Arnaud Ebalard 2014-11-17 22:41 ` Ben Peddell 2014-11-17 23:23 ` Arnaud Ebalard 2014-11-16 0:04 ` [PATCHv1 3/3] arm: mvebu: add .dts file for Synology DS414 Arnaud Ebalard 2014-11-16 2:15 ` Andrew Lunn 2014-11-16 13:17 ` Arnaud Ebalard 2014-11-16 2:20 ` [PATCHv1 0/3] arm: mvebu: add Synology DS213j and DS414 .dts files Andrew Lunn 2014-11-16 13:24 ` Arnaud Ebalard
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).