arm: mvebu: add Synology DS213j and DS414 .dts files
cover arm: mvebu: add Synology DS213j and DS414 .dts files
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
Signature · 1 line
2.1.1
PATCH 1/3 arm: mvebu: add uartX labels for Armada SoC serial nodes
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.
--- arch/arm/boot/dts/armada-370-xp.dtsi | 5 +++-- arch/arm/boot/dts/armada-xp.dtsi | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-)
arch/arm/boot/dts/armada-370-xp.dtsi +3 -2
@@ -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>;
arch/arm/boot/dts/armada-xp.dtsi +3 -2
@@ -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>;
Signature · 1 line
2.1.1
PATCH 2/3 arm: mvebu: add .dts file for Synology DS213j
In reply to Arnaud EbalardSynology 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)
--- 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
arch/arm/boot/dts/Makefile +2 -1
@@ -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) += \
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +351 -0
351 lines not on this page · raw message
Signature · 1 line
2.1.1
PATCH 3/3 arm: mvebu: add .dts file for Synology DS414
In reply to Arnaud EbalardSynology 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.
--- 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
arch/arm/boot/dts/Makefile +2 -1
@@ -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 \
arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +343 -0
343 lines not on this page · raw message
Signature · 1 line
2.1.1
PATCH 1/3 arm: mvebu: add uartX labels for Armada SoC serial nodes
In reply to Arnaud EbalardQuoted 7 lines · Arnaud Ebalard
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 <[email protected]>
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
Quoted 60 lines
--- arch/arm/boot/dts/armada-370-xp.dtsi | 5 +++-- arch/arm/boot/dts/armada-xp.dtsi | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-)arch/arm/boot/dts/armada-370-xp.dtsi +3
-2@@ -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>;arch/arm/boot/dts/armada-xp.dtsi +3
-2@@ -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>;Signature · 8 lines
2.1.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel at lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
PATCH 2/3 arm: mvebu: add .dts file for Synology DS213j
In reply to Arnaud EbalardQuoted 99 lines · Arnaud Ebalard
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 <[email protected]>--- 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.dtsarch/arm/boot/dts/Makefile +2
-1@@ -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) += \arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +53
-0@@ -0,0 +1,351 @@ +/* + * Device Tree file for Synology DS213j + * + * Copyright (C) 2014, Arnaud EBALARD <[email protected]> + * + * 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>;
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 63
Quoted 10 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +10
-0+ 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.
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 68
Quoted 5 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +5
-0+ + 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
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 73
Quoted 5 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +5
-0+ + pmx_i2c: pmx-i2c { + marvell,pins = "mpp2", "mpp3"; + marvell,function = "i2c0"; + };
i2c0_pins
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 79
Quoted 5 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +5
-0+ pmx_spi: pmx-spi { + marvell,pins = "mpp33", "mpp34", + "mpp35", "mpp36"; + marvell,function = "spi0"; + };
Again, we might want to put this in armada-370.dtsi.
Quoted 24 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +24
-0+ 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"; + };
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 114
Quoted 10 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +10
-0+ + 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
Quoted 71 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +71
-0+ 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>;
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 196
Quoted 10 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +10
-0+ + /* + * 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
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 199
Quoted 3 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +3
-0+ * 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
Quoted 42 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +42
-0+ * 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";
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 251
Quoted 10 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +10
-0+ }; + + 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.
Quoted 18 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +18
-0+ 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"; + };
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 279
Quoted 10 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +10
-0+ + 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?
Quoted 81 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +72
-0+ 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>; + }; + }; +};Signature · 8 lines
2.1.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel at lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
PATCH 3/3 arm: mvebu: add .dts file for Synology DS414
In reply to Arnaud EbalardQuoted 133 lines · Arnaud Ebalard
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 <[email protected]>--- 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.dtsarch/arm/boot/dts/Makefile +2
-1@@ -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 \arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +83
-0@@ -0,0 +1,343 @@ +/* + * Device Tree file for Synology DS414 + * + * Copyright (C) 2014, Arnaud EBALARD <[email protected]> + * + * 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",
arch/arm/boot/dts/armada-xp-synology-ds414.dts line 93
Quoted 10 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +10
-0+ "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.
Quoted 109 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +109
-0+ + 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
arch/arm/boot/dts/armada-xp-synology-ds414.dts line 212
Quoted 10 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +10
-0+ * 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.
Quoted 33 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +33
-0+ 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 */
arch/arm/boot/dts/armada-xp-synology-ds414.dts line 255
Quoted 10 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +10
-0+ 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
Quoted 96 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +88
-0+ 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>; + }; + }; +};Signature · 7 lines
2.1.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel at lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
cover arm: mvebu: add Synology DS213j and DS414 .dts files
In reply to Arnaud EbalardQuoted 10 lines
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.
Quoted 2 lines
- 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
PATCH 2/3 arm: mvebu: add .dts file for Synology DS213j
In reply to Andrew LunnQuoted 22 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 68
Quoted 4 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +4
-0+ 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")),
Quoted 5 lines
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
PATCH 1/3 arm: mvebu: add uartX labels for Armada SoC serial nodes
In reply to Andrew LunnHi Andrew,
Quoted 7 lines · Andrew Lunn
Quoted 6 lines · Arnaud Ebalard
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.
Quoted 8 lines
Quoted 1 line
Signed-off-by Arnaud Ebalard <[email protected]>Acked-by Andrew Lunn <[email protected]>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+
PATCH 2/3 arm: mvebu: add .dts file for Synology DS213j
In reply to Andrew LunnHi Andrew,
Quoted 8 lines · Andrew Lunn
Quoted 8 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +8
-0+ internal-regs { + + sata at a0000 { + nr-ports = <2>; + status = "okay"; + }; + + pinctrl {
Quoted 8 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 63
Quoted 6 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +6
-0+ 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.dtsiasge0_rgmii_pins.
Will use armada-370.dtsi ones.
Quoted 23 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 68
Quoted 5 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +5
-0+ + 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")),
Quoted 5 lines
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.
Quoted 7 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 73
Quoted 5 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +5
-0+ + pmx_i2c: pmx-i2c { + marvell,pins = "mpp2", "mpp3"; + marvell,function = "i2c0"; + };
i2c0_pins
ack. will also rename everything to -/_pins instead of pmx_/-
Quoted 7 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 79
Quoted 5 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +5
-0+ 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.
Quoted 6 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 114
Quoted 4 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +4
-0+ pmx_smi: pmx-smi { + marvell,pins = "mpp17", "mpp18"; + marvell,function = "ge"; + };
mdio_pins
ack.
Quoted 11 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 196
Quoted 2 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +2
-0+ * 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
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 199
Quoted 3 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +3
-0+ * 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.
Quoted 9 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 251
Quoted 7 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +7
-0+ 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?
Quoted 23 lines
Quoted 23 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +23
-0+ 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>;
Quoted 8 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 279
Quoted 5 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +5
-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+
PATCH 3/3 arm: mvebu: add .dts file for Synology DS414
In reply to Andrew LunnHi,
Quoted 17 lines · Andrew Lunn
Quoted 17 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +17
-0+ 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"; + }; +
Quoted 8 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts line 93
Quoted 5 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +5
-0+ 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.
Quoted 20 lines
Quoted 20 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +20
-0+ 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
Quoted 8 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts line 212
Quoted 6 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +6
-0+ * 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.
Quoted 10 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts line 255
Quoted 6 lines
arch/arm/boot/dts/armada-xp-synology-ds414.dts new file +6
-0+ 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+
cover arm: mvebu: add Synology DS213j and DS414 .dts files
In reply to Andrew LunnHi,
Quoted 11 lines · Andrew Lunn
Quoted 10 lines
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
Quoted 5 lines
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.
Quoted 6 lines
Quoted 2 lines
- 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+
PATCH 2/3 arm: mvebu: add .dts file for Synology DS213j
In reply to Arnaud EbalardQuoted 9 lines · Arnaud Ebalard
Quoted 3 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 279
Quoted 1 line
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +1
-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.
Quoted 3 lines
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.
Signature · 15 lines
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"
PATCH 2/3 arm: mvebu: add .dts file for Synology DS213j
Hi,
Quoted 10 lines · Ben Peddell
Quoted 9 lines · Arnaud Ebalard
Quoted 3 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 279
Quoted 1 line
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +1
-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.
Quoted 6 lines
Quoted 3 lines
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.
Quoted 10 lines
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+
PATCH 2/3 arm: mvebu: add .dts file for Synology DS213j
Quoted 30 lines · Arnaud Ebalard
Hi,
Quoted 10 lines · Ben Peddell
Quoted 9 lines · Arnaud Ebalard
Quoted 3 lines
arch/arm/boot/dts/armada-370-synology-ds213j.dts line 279
Quoted 1 line
arch/arm/boot/dts/armada-370-synology-ds213j.dts new file +1
-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.
Quoted 6 lines
Quoted 3 lines
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.
Quoted 7 lines
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.
Quoted 7 lines
Quoted 3 lines
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.
PATCH 2/3 arm: mvebu: add .dts file for Synology DS213j
Hi Ben,
Quoted 8 lines · Ben Peddell
Quoted 7 lines
Quoted 3 lines
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?
Quoted 6 lines
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+