Devicetree
 help / color / mirror / Atom feed
* Re: [PATCH 0/5] enable i2c on koelsch-dt (and cleanup lager)
From: Simon Horman @ 2014-02-17  3:19 UTC (permalink / raw)
  To: Magnus Damm
  Cc: Wolfram Sang, SH-Linux, linux-arm-kernel@lists.infradead.org,
	devicetree
In-Reply-To: <CANqRtoRvB5zqEPFJBaC548+_S_+KXY5+acQ-zXFPG5DSxp2L7g@mail.gmail.com>

On Mon, Feb 17, 2014 at 12:13:09PM +0900, Magnus Damm wrote:
> Hi Wolfram,
> 
> On Sun, Feb 16, 2014 at 6:40 PM, Wolfram Sang <wsa@the-dreams.de> wrote:
> > This series adds all rcar cores to the r8a7791 dtsi and enables bus 2 on the
> > koelsch board. Functionality was tested with reading/writing to an eeprom. Some
> > rcar driver issues have been observed, but they are independent from the dt
> > binding provided here. On the way, some cleanups were found which apply to
> > r8a7790 as well, yet those are only compile tested since I don't have HW access
> > to the lager board (yet).
> >
> > The series is based on tag 'renesas-devel-v3.14-rc2-20140213' and can be found here
> > git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/r8a7791-i2c
> >
> > Please review/apply.
> 
> Thanks for your patches. I think they look good in general, but patch
> [2/5] needs to be reworked to exclude the r8a7790 compatible string.
> Patch [3/5] probably depends on [2/5] so it needs to wait too.
> 
> > Wolfram Sang (5):
> >   ARM: shmobile: r8a7791: remove superfluous interrupt-parents
> [1/5] looks fine
> 
> >   ARM: shmobile: r8a7791: add i2c master nodes to dtsi
> >   ARM: shmobile: r8a7791: add i2c2 bus to koelsch dt
> [2/5] needs rework
> [3/5] depends on [2/5] - needs to wait
> 
> >   ARM: shmobile: r8a7790: remove superfluous interrupt-parents
> >   ARM: shmobile: r8a7790: add i2c aliases to dtsi
> [4/5] looks good
> [5/5] looks good
> 
> For the patches [1/5], [4/5], [5/5]
> 
> Acked-by: Magnus Damm <damm@opensource.se>

Thanks, I will queue those up.

> Let us discuss [2/5] in a separate thread.
> 
> Thanks for your help!
> 
> / magnus
> --
> To unsubscribe from this list: send the line "unsubscribe linux-sh" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

^ permalink raw reply

* Re: [PATCH 0/5] enable i2c on koelsch-dt (and cleanup lager)
From: Magnus Damm @ 2014-02-17  3:13 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: SH-Linux, linux-arm-kernel@lists.infradead.org, devicetree,
	Simon Horman
In-Reply-To: <1392543658-5030-1-git-send-email-wsa@the-dreams.de>

Hi Wolfram,

On Sun, Feb 16, 2014 at 6:40 PM, Wolfram Sang <wsa@the-dreams.de> wrote:
> This series adds all rcar cores to the r8a7791 dtsi and enables bus 2 on the
> koelsch board. Functionality was tested with reading/writing to an eeprom. Some
> rcar driver issues have been observed, but they are independent from the dt
> binding provided here. On the way, some cleanups were found which apply to
> r8a7790 as well, yet those are only compile tested since I don't have HW access
> to the lager board (yet).
>
> The series is based on tag 'renesas-devel-v3.14-rc2-20140213' and can be found here
> git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/r8a7791-i2c
>
> Please review/apply.

Thanks for your patches. I think they look good in general, but patch
[2/5] needs to be reworked to exclude the r8a7790 compatible string.
Patch [3/5] probably depends on [2/5] so it needs to wait too.

> Wolfram Sang (5):
>   ARM: shmobile: r8a7791: remove superfluous interrupt-parents
[1/5] looks fine

>   ARM: shmobile: r8a7791: add i2c master nodes to dtsi
>   ARM: shmobile: r8a7791: add i2c2 bus to koelsch dt
[2/5] needs rework
[3/5] depends on [2/5] - needs to wait

>   ARM: shmobile: r8a7790: remove superfluous interrupt-parents
>   ARM: shmobile: r8a7790: add i2c aliases to dtsi
[4/5] looks good
[5/5] looks good

For the patches [1/5], [4/5], [5/5]

Acked-by: Magnus Damm <damm@opensource.se>

Let us discuss [2/5] in a separate thread.

Thanks for your help!

/ magnus

^ permalink raw reply

* Re: [PATCH v3 1/3] ARM: EXYNOS: initial board support for exynos5260 SoC
From: Sachin Kamat @ 2014-02-17  3:10 UTC (permalink / raw)
  To: Rahul Sharma
  Cc: linux-samsung-soc, devicetree@vger.kernel.org, linux-arm-kernel,
	Kukjin Kim, Tomasz Figa, sunil joshi, Rahul Sharma, Pankaj Dubey
In-Reply-To: <1392385032-22015-2-git-send-email-rahul.sharma@samsung.com>

Hi Rahul,

On 14 February 2014 19:07, Rahul Sharma <rahul.sharma@samsung.com> wrote:
> From: Pankaj Dubey <pankaj.dubey@samsung.com>
>
> This patch add basic arch side support for exynos5260 SoC.
>
> Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> Signed-off-by: Arun Kumar K <arun.kk@samsung.com>
> Signed-off-by: Rahul Sharma <rahul.sharma@samsung.com>
> ---
>  arch/arm/mach-exynos/Kconfig             |    9 +++++++++
>  arch/arm/mach-exynos/common.c            |   11 +++++++++++
>  arch/arm/mach-exynos/include/mach/map.h  |    1 +
>  arch/arm/mach-exynos/mach-exynos5-dt.c   |    1 +
>  arch/arm/plat-samsung/include/plat/cpu.h |    8 ++++++++
>  5 files changed, 30 insertions(+)
>
> diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
> index 4c414af..5c96248 100644
> --- a/arch/arm/mach-exynos/Kconfig
> +++ b/arch/arm/mach-exynos/Kconfig
> @@ -91,6 +91,15 @@ config SOC_EXYNOS5250
>         help
>           Enable EXYNOS5250 SoC support
>
> +config SOC_EXYNOS5260
> +       bool "SAMSUNG EXYNOS5260"
> +       default y
> +       depends on ARCH_EXYNOS5
> +       select AUTO_ZRELADDR
> +       select SAMSUNG_DMADEV
> +       help
> +         Enable EXYNOS5260 SoC support
> +

Per SoC entries are no longer needed with the patch at [1].

[1] http://www.spinics.net/lists/linux-samsung-soc/msg26253.html

-- 
With warm regards,
Sachin

^ permalink raw reply

* Re: [PATCH v4 07/13] ARM: dts: mvebu: Add a new set of registers to the PMSU node
From: Jason Cooper @ 2014-02-17  2:57 UTC (permalink / raw)
  To: Gregory CLEMENT
  Cc: Daniel Lezcano, Rafael J. Wysocki, linux-pm, Lorenzo Pieralisi,
	Andrew Lunn, Sebastian Hesselbarth, Thomas Petazzoni,
	Lior Amsalem, Tawfik Bayouk, devicetree, Nadav Haklai,
	Ezequiel Garcia, linux-arm-kernel
In-Reply-To: <1392312816-17657-8-git-send-email-gregory.clement@free-electrons.com>

On Thu, Feb 13, 2014 at 06:33:30PM +0100, Gregory CLEMENT wrote:
> The Power Management Unit Service block also controls the Coherency
> Fabric subsystem. This new set of registers is needed for the CPU idle
> implementation for the Armada XP, it allows to enter in a deep CPU
> idle state where the Coherency Fabric and the L2 cache are powerdown.
> 
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
> ---
>  Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt | 12 +++++++-----
>  arch/arm/boot/dts/armada-xp.dtsi                             |  2 +-
>  2 files changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt b/Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt
> index 926b4d6aae7e..8a9db0c32ba5 100644
> --- a/Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt
> +++ b/Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt
> @@ -7,14 +7,16 @@ Required properties:
>  - compatible: "marvell,armada-370-xp-pmsu"
>  
>  - reg: Should contain PMSU registers location and length. First pair
> -  for the per-CPU SW Reset Control registers, second pair for the
> -  Power Management Service Unit.
> +  for the per-CPU SW Reset Control registers, second pair for the CPU
> +  Power Management Service Unit registers, third pair for the Fabric Power
> +  Management Service Unit registers.

Please mention explicitly that previous versions of this binding only
specified the first two registers.  I haven't dug through the rest of
this series yet, but I assume the driver will behave sanely when
encountering an old dtb w/o the third reg entry?

thx,

Jason.

>  
>  Example:
>  
> -armada-370-xp-pmsu@d0022000 {
> +armada-370-xp-pmsu@22000 {
>  	compatible = "marvell,armada-370-xp-pmsu";
> -	reg = <0xd0022100 0x430>,
> -	      <0xd0020800 0x20>;
> +	reg = <0x22100 0x430>,
> +	      <0x20800 0x20>,
> +	      <0x22000 0x24>;
>  };
>  
> diff --git a/arch/arm/boot/dts/armada-xp.dtsi b/arch/arm/boot/dts/armada-xp.dtsi
> index b8b84a22f0f3..f717da4f4d97 100644
> --- a/arch/arm/boot/dts/armada-xp.dtsi
> +++ b/arch/arm/boot/dts/armada-xp.dtsi
> @@ -113,7 +113,7 @@
>  
>  			armada-370-xp-pmsu@22000 {
>  				compatible = "marvell,armada-370-xp-pmsu";
> -				reg = <0x22100 0x400>, <0x20800 0x20>;
> +				reg = <0x22100 0x400>, <0x20800 0x20>, <0x22000 0x24>;
>  			};
>  
>  			eth2: ethernet@30000 {
> -- 
> 1.8.1.2
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply

* Re: [PATCH 0/6] Marvell Armada 375 and 38x clocks drivers
From: Jason Cooper @ 2014-02-17  2:20 UTC (permalink / raw)
  To: Gregory CLEMENT
  Cc: Mike Turquette, Thomas Petazzoni, Lior Amsalem, Tawfik Bayouk,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Nadav Haklai,
	Ezequiel Garcia,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Sebastian Hesselbarth
In-Reply-To: <1392053569-28037-1-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>

On Mon, Feb 10, 2014 at 06:32:43PM +0100, Gregory CLEMENT wrote:
> Hi Mike,
> 
> Here are patches that add the clocks drivers for two new Marvell ARM
> SOCs that belong to the mach-mvebu family: the Armada 375 and the
> Armada 380/385. They are based on Cortex-A9 CPU cores, and share a
> number of peripherals with their predecessors in the mach-mvebu
> family.
> 
> The drivers added are similar to the one already used for the other
> SoCs of this family, as usual only the data are different the logic
> remains the same ans allow us to use the common part.
> 
> The core support (arch/arm/mach-mvebu) for these SOCs have just been
> posted, and we're aiming at having this merged for 3.15 if possible.
> 
> Thanks,
> 
> Gregory
> 
> Gregory CLEMENT (4):
>   clk: mvebu: add clock support for Armada 375
>   dt: Update binding information for mvebu core clocks with Armada 375
>   dt: Update binding information for mvebu gating clocks with Armada 375
>   clk: mvebu: add clock support for Armada 380/385
> 
> Thomas Petazzoni (2):
>   dt: Update binding information for mvebu core clocks with Armada
>     380/385
>   dt: Update binding information for mvebu gating clocks with Armada
>     380/385
> 
>  .../devicetree/bindings/clock/mvebu-core-clock.txt |  14 ++
>  .../bindings/clock/mvebu-gated-clock.txt           |  65 +++++++-
>  drivers/clk/mvebu/Kconfig                          |   8 +
>  drivers/clk/mvebu/Makefile                         |   2 +
>  drivers/clk/mvebu/armada-375.c                     | 184 +++++++++++++++++++++
>  drivers/clk/mvebu/armada-38x.c                     | 167 +++++++++++++++++++
>  6 files changed, 436 insertions(+), 4 deletions(-)
>  create mode 100644 drivers/clk/mvebu/armada-375.c
>  create mode 100644 drivers/clk/mvebu/armada-38x.c

Hey guys,

I've tentatively applied this series to mvebu/clk-3xx.  I can't build
test it until I pull in the core support.  So I'll keep it separate from
the regular clock driver changes just in case.

thx,

Jason.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [PATCH v2 2/7] ARM: imx6: gpc: Add PU power domain for GPU/VPU
From: Shawn Guo @ 2014-02-17  1:55 UTC (permalink / raw)
  To: Philipp Zabel
  Cc: Rob Herring, Mark Rutland, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1392302350-11729-3-git-send-email-p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>

On Thu, Feb 13, 2014 at 03:39:05PM +0100, Philipp Zabel wrote:
> +static int imx_gpc_probe(struct platform_device *pdev)
> +{
> +	struct device_node *np;
> +	int ret;
> +
> +	np = of_get_child_by_name(pdev->dev.of_node, "pu-power-domain");
> +	if (!np) {
> +		dev_err(&pdev->dev, "missing pu-power-domain node\n");
> +		return -EINVAL;
> +	}
> +	imx6q_pu_domain.of_node = np;

Once ...

> +
> +	pu_reg = devm_regulator_get(&pdev->dev, "pu");
> +	if (IS_ERR(pu_reg)) {
> +		ret = PTR_ERR(pu_reg);
> +		dev_err(&pdev->dev, "failed to get pu regulator: %d\n", ret);
> +		return ret;
> +	}
> +
> +	/* The regulator is initially enabled */
> +	ret = regulator_enable(pu_reg);
> +	if (ret < 0) {
> +		dev_err(&pdev->dev, "failed to enable pu regulator: %d\n", ret);
> +		return ret;
> +	}
> +
> +	imx6q_pu_domain.of_node = np;

Twice.

Shawn

> +	imx6q_pm_pu_power_off(&imx6q_pu_domain);
> +	pm_genpd_init(&imx6q_pu_domain, NULL, true);
> +	bus_register_notifier(&platform_bus_type, &imx6q_platform_nb);
> +
> +	return 0;
> +}
> +
> +static struct of_device_id imx_gpc_dt_ids[] = {
> +	{ .compatible = "fsl,imx6q-gpc" },
> +	{ }
> +};
> +
> +static struct platform_driver imx_gpc_driver = {
> +	.driver = {
> +		.name = "imx-gpc",
> +		.owner = THIS_MODULE,
> +		.of_match_table = imx_gpc_dt_ids,
> +	},
> +	.probe = imx_gpc_probe,
> +};
> +
> +static int __init imx_pgc_init(void)
> +{
> +	return platform_driver_register(&imx_gpc_driver);
> +}
> +subsys_initcall(imx_pgc_init);
> -- 
> 1.8.5.3
> 

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [PATCH v3 4/4] ARM: Kirkwood: Add support for many Synology NAS devices
From: Jason Cooper @ 2014-02-17  0:09 UTC (permalink / raw)
  To: klightspeed-aslSrjg9ejhWX4hkXwHRhw
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Andrew Lunn, Rob Herring,
	Ian Campbell, pawell.moll-5wv7dgnIgG8, Mark Rutland, Kumar Gala
In-Reply-To: <5a55b4$em6if8-73Sy8+Y76rVS+6ppBSHQ0J2tLTJCEHwz7bdBIQen8uI@public.gmane.org>

On Sun, Feb 16, 2014 at 08:27:51PM +1000, klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org wrote:
> Add device tree fragments and files to support many of the kirkwood
> based Synology NAS devices. This is a modification of 
> Andrew Lunn's <andrew-g2DYL2Zd6BY@public.gmane.org> translation of the board setup file 
> maintained by Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> 
> The Ricoh RS5C372 RTC was used in all 2009 units and some 2010 units.
> All other Synology Kirkwood-based DiskStations and RackStations use 
> the Seiko S35390A RTC.
> 
> Most of the 1-bay and 2-bay units use the GPIOs that are multiplexed
> with the built-in SATA interface activity/presence pins on mpp 20-23,
> while the 4-bay units use ge01 and a PCIe SATA controller, and put the
> software controlled HDD leds on mpp 36-43.
> 
> Most of the 6281 units with HDD power controls use mpp 29 and 31, while
> most of the 6282 units with HDD power controls use mpp 30, 34, 44 and 45
> and provide a model ID on mpp 28, 29, 46 and 47.  Pre-2012 units and
> most 4-bay units didn't have a separate power control for HDD1.  These 
> power controls are presumably to limit startup current from the 12V brick
> power supply.
> 
> Instead of using separate dtsi files in a synology directory, this
> patch uses a single dtsi file containing all of the modules for
> these boards, with all of the modules not common to all boards
> disabled.  The board dts files then enable the appropriate modules for
> their boards.

Awesome!  I like this approach much better.  :)

> Signed-off-by: Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> Tested-by: Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org> (ds211j)
> ---
>  arch/arm/boot/dts/Makefile                   |  15 +
>  arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi | 764 +++++++++++++++++++++++++++

How about kirkwood-synology.dtsi here?  This is just a preference, feel
free to toss out something else or leave it as is.

>  arch/arm/boot/dts/kirkwood-ds109.dts         |  42 ++
>  arch/arm/boot/dts/kirkwood-ds110jv10.dts     |  41 ++
>  arch/arm/boot/dts/kirkwood-ds111.dts         |  44 ++
>  arch/arm/boot/dts/kirkwood-ds112.dts         |  48 ++
>  arch/arm/boot/dts/kirkwood-ds209.dts         |  44 ++
>  arch/arm/boot/dts/kirkwood-ds210.dts         |  46 ++
>  arch/arm/boot/dts/kirkwood-ds212.dts         |  47 ++
>  arch/arm/boot/dts/kirkwood-ds212j.dts        |  41 ++
>  arch/arm/boot/dts/kirkwood-ds409.dts         |  48 ++
>  arch/arm/boot/dts/kirkwood-ds409slim.dts     |  40 ++
>  arch/arm/boot/dts/kirkwood-ds411.dts         |  52 ++
>  arch/arm/boot/dts/kirkwood-ds411j.dts        |  48 ++
>  arch/arm/boot/dts/kirkwood-ds411slim.dts     |  48 ++
>  arch/arm/boot/dts/kirkwood-rs212.dts         |  48 ++
>  arch/arm/boot/dts/kirkwood-rs409.dts         |  44 ++
>  arch/arm/boot/dts/kirkwood-rs411.dts         |  44 ++
>  18 files changed, 1503 insertions(+)
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds109.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds110jv10.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds111.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds112.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds209.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds210.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds212.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds212j.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds409.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds409slim.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds411.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds411j.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds411slim.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-rs212.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-rs409.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-rs411.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index b9d6a8b..6cf3a54 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -89,6 +89,18 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
>  	kirkwood-dns325.dtb \
>  	kirkwood-dockstar.dtb \
>  	kirkwood-dreamplug.dtb \
> +	kirkwood-ds109.dtb \
> +	kirkwood-ds110jv10.dtb \
> +	kirkwood-ds111.dtb \
> +	kirkwood-ds209.dtb \
> +	kirkwood-ds210.dtb \
> +	kirkwood-ds212.dtb \
> +	kirkwood-ds212j.dtb \
> +	kirkwood-ds409.dtb \
> +	kirkwood-ds409slim.dtb \
> +	kirkwood-ds411.dtb \
> +	kirkwood-ds411j.dtb \
> +	kirkwood-ds411slim.dtb \
>  	kirkwood-goflexnet.dtb \
>  	kirkwood-guruplug-server-plus.dtb \
>  	kirkwood-ib62x0.dtb \
> @@ -111,6 +123,9 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
>  	kirkwood-nsa310a.dtb \
>  	kirkwood-openblocks_a6.dtb \
>  	kirkwood-openblocks_a7.dtb \
> +	kirkwood-rs212.dtb \
> +	kirkwood-rs409.dtb \
> +	kirkwood-rs411.dtb \
>  	kirkwood-sheevaplug.dtb \
>  	kirkwood-sheevaplug-esata.dtb \
>  	kirkwood-topkick.dtb \
> diff --git a/arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi b/arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi
> new file mode 100644
> index 0000000..65f0b9d
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi
> @@ -0,0 +1,764 @@
> +/*
> + * Nodes for Marvell 628x Synology devices
> + *
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> +	mbus {
> +		pcie-controller {
> +			status = "okay";
> +
> +			pcie@1,0 {
> +				status = "okay";
> +			};
> +			pcie2: pcie@2,0 {
> +				status = "disabled";
> +			};
> +		};
> +	};
> +	ocp@f1000000 {
> +		pinctrl: pinctrl@10000 {
> +			pmx_alarmled_12: pmx-alarmled-12 {
> +				marvell,pins = "mpp12";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanctrl_15: pmx-fanctrl-15 {
> +				marvell,pins = "mpp15";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanctrl_16: pmx-fanctrl-16 {
> +				marvell,pins = "mpp16";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanctrl_17: pmx-fanctrl-17 {
> +				marvell,pins = "mpp17";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanalarm_18: pmx-fanalarm-18 {
> +				marvell,pins = "mpp18";
> +				marvell,function = "gpo";
> +			};
> +			pmx_hddled_20: pmx-hddled-20 {
> +				marvell,pins = "mpp20";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_21: pmx-hddled-21 {
> +				marvell,pins = "mpp21";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_22: pmx-hddled-22 {
> +				marvell,pins = "mpp22";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_23: pmx-hddled-23 {
> +				marvell,pins = "mpp23";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_24: pmx-hddled-24 {
> +				marvell,pins = "mpp24";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_25: pmx-hddled-25 {
> +				marvell,pins = "mpp25";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_26: pmx-hddled-26 {
> +				marvell,pins = "mpp26";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_27: pmx-hddled-27 {
> +				marvell,pins = "mpp27";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_28: pmx-hddled-28 {
> +				marvell,pins = "mpp28";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hdd1_pwr_29: pmx-hdd1-pwr-29 {
> +				marvell,pins = "mpp29";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hdd1_pwr_30: pmx-hdd-pwr-30 {
> +				marvell,pins = "mpp30";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hdd2_pwr_31: pmx-hdd2-pwr-31 {
> +				marvell,pins = "mpp31";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanctrl_32: pmx-fanctrl-32 {
> +				marvell,pins = "mpp32";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanctrl_33: pmx-fanctrl-33 {
> +				marvell,pins = "mpp33";
> +				marvell,function = "gpo";
> +			};
> +			pmx_fanctrl_34: pmx-fanctrl-34 {
> +				marvell,pins = "mpp34";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hdd2_pwr_34: pmx-hdd2-pwr-34 {
> +				marvell,pins = "mpp34";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanalarm_35: pmx-fanalarm-35 {
> +				marvell,pins = "mpp35";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_36: pmx-hddled-36 {
> +				marvell,pins = "mpp36";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_37: pmx-hddled-37 {
> +				marvell,pins = "mpp37";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_38: pmx-hddled-38 {
> +				marvell,pins = "mpp38";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_39: pmx-hddled-39 {
> +				marvell,pins = "mpp39";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_40: pmx-hddled-40 {
> +				marvell,pins = "mpp40";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_41: pmx-hddled-41 {
> +				marvell,pins = "mpp41";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_42: pmx-hddled-42 {
> +				marvell,pins = "mpp42";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_43: pmx-hddled-43 {
> +				marvell,pins = "mpp43";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_44: pmx-hddled-44 {
> +				marvell,pins = "mpp44";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_45: pmx-hddled-45 {
> +				marvell,pins = "mpp45";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hdd3_pwr_44: pmx-hdd3-pwr-44 {
> +				marvell,pins = "mpp44";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hdd4_pwr_45: pmx-hdd4-pwr-45 {
> +				marvell,pins = "mpp45";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanalarm_44: pmx-fanalarm-44 {
> +				marvell,pins = "mpp44";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanalarm_45: pmx-fanalarm-45 {
> +				marvell,pins = "mpp45";
> +				marvell,function = "gpio";
> +			};
> +		};		

nit: trailing whitespace here.

> +		i2c@11000 {
> +			status = "okay";
> +			clock-frequency = <400000>;
> +			pinctrl-0 = <&pmx_twsi0>;
> +			pinctrl-names = "default";
> +			rs5c372: rs5c372@32 {
> +				status = "disabled";
> +				compatible = "rs5c372";
> +				reg = <0x32>;
> +			};
> +			s35390a: s35390a@30 {
> +				status = "disabled";
> +				compatible = "s35390a";
> +				reg = <0x30>;
> +			};
> +		};

a newline between nodes, please.

> +		serial@12000 {
> +			status = "okay";
> +			pinctrl-0 = <&pmx_uart0>;
> +			pinctrl-names = "default";
> +		};
> +		serial@12100 {
> +			status = "okay";
> +			pinctrl-0 = <&pmx_uart1>;
> +			pinctrl-names = "default";
> +		};
> +		poweroff@12100 {

s/12100/12000/ ?  Actually, please confirm the reg addr.  serial is at
12000...

> +			compatible = "synology,power-off";
> +			reg = <0x12000 0x100>;
> +			clocks = <&gate_clk 7>;
> +		};
> +		spi@10600 {
> +			status = "okay";
> +			pinctrl-0 = <&pmx_spi>;
> +			pinctrl-names = "default";
> +
> +			m25p80@0 {
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				compatible = "m25p80";
> +				reg = <0>;
> +				spi-max-frequency = <20000000>;
> +				mode = <0>;
> +
> +				partition@00000000 {
> +					reg = <0x00000000 0x00080000>;
> +					label = "RedBoot";
> +				};
> +
> +				partition@00080000 {
> +					reg = <0x00080000 0x00200000>;
> +					label = "zImage";
> +				};
> +
> +				partition@00280000 {
> +					reg = <0x00280000 0x00140000>;
> +					label = "rd.gz";
> +				};
> +				partition@003c0000 {
> +					reg = <0x003c0000 0x00010000>;
> +					label = "vendor";
> +				};
> +				partition@003d0000 {
> +					reg = <0x003d0000 0x00020000>;
> +					label = "RedBoot config";
> +				};
> +				partition@003f0000 {
> +					reg = <0x003f0000 0x00010000>;
> +					label = "FIS directory";
> +				};
> +			};
> +		};
> +		sata@80000 {
> +			pinctrl-0 = <&pmx_sata0 &pmx_sata1>;
> +			pinctrl-names = "default";
> +			status = "okay";
> +			nr-ports = <2>;
> +		};
> +	};
> +	gpio-fan-150-32-35 {
> +		status = "disabled";
> +		compatible = "gpio-fan";
> +		pinctrl-0 = <&pmx_fanctrl_32 &pmx_fanctrl_33 &pmx_fanctrl_34
> +		             &pmx_fanalarm_35>;
> +		pinctrl-names = "default";
> +		gpios = <&gpio1 0 GPIO_ACTIVE_HIGH
> +			 &gpio1 1 GPIO_ACTIVE_HIGH
> +			 &gpio1 2 GPIO_ACTIVE_HIGH>;
> +		gpio-fan,speed-map = <    0 0
> +				       2200 1
> +				       2500 2
> +				       3000 4
> +				       3300 3
> +				       3700 5
> +				       3800 6
> +				       4200 7 >;
> +	};
> +	gpio-fan-150-15-18 {
> +		status = "disabled";
> +		compatible = "gpio-fan";
> +		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17
> +		             &pmx_fanalarm_18>;
> +		pinctrl-names = "default";
> +		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
> +			 &gpio0 16 GPIO_ACTIVE_HIGH
> +			 &gpio0 17 GPIO_ACTIVE_HIGH>;
> +		alarm-gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
> +		gpio-fan,speed-map = <    0 0
> +				       2200 1
> +				       2500 2
> +				       3000 4
> +				       3300 3
> +				       3700 5
> +				       3800 6
> +				       4200 7 >;
> +	};
> +	gpio-fan-100-32-35 {
> +		status = "disabled";
> +		compatible = "gpio-fan";
> +		pinctrl-0 = <&pmx_fanctrl_32 &pmx_fanctrl_33 &pmx_fanctrl_34 

trailing whitespace (same for next three pinctrl-0 - ...)

> +		             &pmx_fanalarm_35>;
> +		pinctrl-names = "default";
> +		gpios = <&gpio1 0 GPIO_ACTIVE_HIGH
> +			 &gpio1 1 GPIO_ACTIVE_HIGH
> +			 &gpio1 2 GPIO_ACTIVE_HIGH>;
> +		alarm-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
> +		gpio-fan,speed-map = <    0 0
> +				       2500 1
> +				       3100 2
> +				       3800 3
> +				       4600 4
> +				       4800 5
> +				       4900 6
> +				       5000 7 >;
> +	};
> +	gpio-fan-100-15-18 {
> +		status = "disabled";
> +		compatible = "gpio-fan";
> +		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17 
> +		             &pmx_fanalarm_18>;
> +		pinctrl-names = "default";
> +		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
> +			 &gpio0 16 GPIO_ACTIVE_HIGH
> +			 &gpio0 17 GPIO_ACTIVE_HIGH>;
> +		alarm-gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
> +		gpio-fan,speed-map = <    0 0
> +				       2500 1
> +				       3100 2
> +				       3800 3
> +				       4600 4
> +				       4800 5
> +				       4900 6
> +				       5000 7 >;
> +	};
> +	gpio-fan-100-15-35-1 {
> +		status = "disabled";
> +		compatible = "gpio-fan";
> +		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17 
> +		             &pmx_fanalarm_35>;
> +		pinctrl-names = "default";
> +		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
> +			 &gpio0 16 GPIO_ACTIVE_HIGH
> +			 &gpio0 17 GPIO_ACTIVE_HIGH>;
> +		alarm-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
> +		gpio-fan,speed-map = <    0 0
> +				       2500 1
> +				       3100 2
> +				       3800 3
> +				       4600 4
> +				       4800 5
> +				       4900 6
> +				       5000 7 >;
> +	};
> +	gpio-fan-100-15-35-3 {
> +		status = "disabled";
> +		compatible = "gpio-fan";
> +		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17
> +		             &pmx_fanalarm_35 &pmx_fanalarm_44 &pmx_fanalarm_45>;
> +		pinctrl-names = "default";
> +		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
> +			 &gpio0 16 GPIO_ACTIVE_HIGH
> +			 &gpio0 17 GPIO_ACTIVE_HIGH>;
> +		alarm-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH
> +			       &gpio1 12 GPIO_ACTIVE_HIGH
> +			       &gpio1 13 GPIO_ACTIVE_HIGH>;
> +		gpio-fan,speed-map = <    0 0
> +				       2500 1
> +				       3100 2
> +				       3800 3
> +				       4600 4
> +				       4800 5
> +				       4900 6
> +				       5000 7 >;
> +	};
> +	gpio-leds-alarm-12 {
> +		status = "disabled";
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_alarmled_12>;
> +		pinctrl-names = "default";
> +		hdd1-green {
> +			label = "synology:alarm";
> +			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +	gpio-leds-hdd-20 {
> +		status = "disabled";
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_hddled_20 &pmx_hddled_21 &pmx_hddled_22
> +			     &pmx_hddled_23 &pmx_hddled_24 &pmx_hddled_25
> +			     &pmx_hddled_26 &pmx_hddled_27>;
> +		pinctrl-names = "default";
> +		hdd1-green {
> +			label = "synology:green:hdd1";
> +			gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd1-amber {
> +			label = "synology:amber:hdd1";
> +			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-green {
> +			label = "synology:green:hdd2";
> +			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-amber {
> +			label = "synology:amber:hdd2";
> +			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd3-green {
> +			label = "synology:green:hdd3";
> +			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd3-amber {
> +			label = "synology:amber:hdd3";
> +			gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd4-green {
> +			label = "synology:green:hdd4";
> +			gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd4-amber {
> +			label = "synology:amber:hdd4";
> +			gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +	gpio-leds-hdd-21-1 {
> +		status = "disabled";
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_hddled_21 &pmx_hddled_23>;
> +		pinctrl-names = "default";
> +		hdd1-green {
> +			label = "synology:green:hdd1";
> +			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd1-amber {
> +			label = "synology:amber:hdd1";
> +			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +	gpio-leds-hdd-21-2 {
> +		status = "disabled";
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_hddled_21 &pmx_hddled_23 &pmx_hddled_20 &pmx_hddled_22>;
> +		pinctrl-names = "default";
> +		hdd1-green {
> +			label = "synology:green:hdd1";
> +			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd1-amber {
> +			label = "synology:amber:hdd1";
> +			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-green {
> +			label = "synology:green:hdd2";
> +			gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-amber {
> +			label = "synology:amber:hdd2";
> +			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +	gpio-leds-hdd-36 {
> +		status = "disabled";
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_hddled_36 &pmx_hddled_37 &pmx_hddled_38
> +			     &pmx_hddled_39 &pmx_hddled_40 &pmx_hddled_41
> +			     &pmx_hddled_42 &pmx_hddled_43 &pmx_hddled_44
> +			     &pmx_hddled_45>;
> +		pinctrl-names = "default";
> +		hdd1-green {
> +			label = "synology:green:hdd1";
> +			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd1-amber {
> +			label = "synology:amber:hdd1";
> +			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-green {
> +			label = "synology:green:hdd2";
> +			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-amber {
> +			label = "synology:amber:hdd2";
> +			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd3-green {
> +			label = "synology:green:hdd3";
> +			gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd3-amber {
> +			label = "synology:amber:hdd3";
> +			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd4-green {
> +			label = "synology:green:hdd4";
> +			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd4-amber {
> +			label = "synology:amber:hdd4";
> +			gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd5-green {
> +			label = "synology:green:hdd5";
> +			gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd5-amber {
> +			label = "synology:amber:hdd5";
> +			gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +	gpio-leds-hdd-38 {
> +		status = "disabled";
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_hddled_38 &pmx_hddled_39 &pmx_hddled_36 &pmx_hddled_37>;
> +		pinctrl-names = "default";
> +		hdd1-green {
> +			label = "synology:green:hdd1";
> +			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd1-amber {
> +			label = "synology:amber:hdd1";
> +			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-green {
> +			label = "synology:green:hdd2";
> +			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-amber {
> +			label = "synology:amber:hdd2";
> +			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +	regulators-hdd-29 {
> +		status = "disabled";
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_hdd1_pwr_29 &pmx_hdd2_pwr_31>;
> +		pinctrl-names = "default";
> +
> +		regulator@1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "hdd1power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio0 29 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "hdd2power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio0 31 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +	regulators-hdd-30-1 {
> +		status = "disabled";
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_hdd1_pwr_30>;
> +		pinctrl-names = "default";
> +
> +		regulator@1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "hdd1power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +	regulators-hdd-30-2 {
> +		status = "disabled";
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_hdd1_pwr_30 &pmx_hdd2_pwr_34>;
> +		pinctrl-names = "default";
> +
> +		regulator@1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "hdd1power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "hdd2power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +	regulators-hdd-30-4 {
> +		status = "disabled";
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_hdd1_pwr_30 &pmx_hdd2_pwr_34
> +			     &pmx_hdd3_pwr_44 &pmx_hdd4_pwr_45>;
> +		pinctrl-names = "default";
> +
> +		regulator@1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "hdd1power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "hdd2power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@3 {
> +			compatible = "regulator-fixed";
> +			reg = <3>;
> +			regulator-name = "hdd3power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@4 {
> +			compatible = "regulator-fixed";
> +			reg = <4>;
> +			regulator-name = "hdd4power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 13 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +	regulators-hdd-31 {
> +		status = "disabled";
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_hdd2_pwr_31>;
> +		pinctrl-names = "default";
> +
> +		regulator@1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "hdd2power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio0 31 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +	regulators-hdd-34 {
> +		status = "disabled";
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_hdd2_pwr_34 &pmx_hdd3_pwr_44
> +			     &pmx_hdd4_pwr_45>;
> +		pinctrl-names = "default";
> +
> +		regulator@2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "hdd2power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@3 {
> +			compatible = "regulator-fixed";
> +			reg = <3>;
> +			regulator-name = "hdd3power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@4 {
> +			compatible = "regulator-fixed";
> +			reg = <4>;
> +			regulator-name = "hdd4power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 13 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +};
> +
> +&mdio {
> +	status = "okay";
> +
> +	ethphy0: ethernet-phy@0 {
> +		device_type = "ethernet-phy";
> +		reg = <8>;
> +	};
> +	ethphy1: ethernet-phy@1 {
> +		device_type = "ethernet-phy";
> +		reg = <9>;
> +	};
> +};
> +
> +&eth0 {
> +	status = "okay";
> +	ethernet0-port@0 {
> +		phy-handle = <&ethphy0>;
> +	};
> +};
> +
> +&eth1 {
> +	status = "disabled";
> +	ethernet1-port@0 {
> +		phy-handle = <&ethphy1>;
> +	};
> +};

I'll stop the reviewing here.  I see Andrew is going to work with you on
this.  Great!  I look forward to seeing the new version.

thx,

Jason.

> diff --git a/arch/arm/boot/dts/kirkwood-ds109.dts b/arch/arm/boot/dts/kirkwood-ds109.dts
> new file mode 100644
> index 0000000..9320166
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds109.dts
> @@ -0,0 +1,42 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS109, DS110, DS110jv20";
> +	compatible = "synology,ds109", "synology,ds110jv20",
> +		     "synology,ds110", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-32-35 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-1 {
> +		status = "okay";
> +	};
> +};
> +
> +&rs5c372 {
> +	status = "okay";
> +};
> +
> diff --git a/arch/arm/boot/dts/kirkwood-ds110jv10.dts b/arch/arm/boot/dts/kirkwood-ds110jv10.dts
> new file mode 100644
> index 0000000..09d4fbb
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds110jv10.dts
> @@ -0,0 +1,41 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS110j v10 and v30";
> +	compatible = "synology,ds110jv10", "synology,ds110jv30",
> +		     "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-32-35 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-1 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds111.dts b/arch/arm/boot/dts/kirkwood-ds111.dts
> new file mode 100644
> index 0000000..0369204
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds111.dts
> @@ -0,0 +1,44 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS111";
> +	compatible = "synology,ds111", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-1 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-1 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds112.dts b/arch/arm/boot/dts/kirkwood-ds112.dts
> new file mode 100644
> index 0000000..9a70bf9
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds112.dts
> @@ -0,0 +1,48 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS111";
> +	compatible = "synology,ds111", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-1 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-21-2 {
> +		status = "okay";
> +	};
> +
> +	regulators-hdd-30 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds209.dts b/arch/arm/boot/dts/kirkwood-ds209.dts
> new file mode 100644
> index 0000000..466f584
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds209.dts
> @@ -0,0 +1,44 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS209";
> +	compatible = "synology,ds209", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-32-35 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-2 {
> +		status = "okay";
> +	};
> +
> +	regulators-hdd-31 {
> +		status = "okay";
> +	};
> +};
> +
> +&rs5c372 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds210.dts b/arch/arm/boot/dts/kirkwood-ds210.dts
> new file mode 100644
> index 0000000..0d8a0e1
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds210.dts
> @@ -0,0 +1,46 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS210 v10, v20, v30, DS211j";
> +	compatible = "synology,ds210jv10", "synology,ds210jv20",
> +		     "synology,ds210jv30", "synology,ds211j",
> +		     "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-32-35 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-2 {
> +		status = "okay";
> +	};
> +
> +	regulators-hdd-31 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds212.dts b/arch/arm/boot/dts/kirkwood-ds212.dts
> new file mode 100644
> index 0000000..dd0374e
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds212.dts
> @@ -0,0 +1,47 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS212, DS212p v10, v20, DS213air v10, DS213 v10";
> +	compatible = "synology,ds212", "synology,ds212pv10",
> +		     "synology,ds212pv10", "synology,ds212pv20",
> +		     "synology,ds213airv10", "synology,ds213v10",
> +		     "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-1 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-2 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds212j.dts b/arch/arm/boot/dts/kirkwood-ds212j.dts
> new file mode 100644
> index 0000000..7328044
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds212j.dts
> @@ -0,0 +1,41 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS212j v10, v20";
> +	compatible = "synology,ds212jv10", "synology,ds212jv20",
> +		     "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-32-35 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-2 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds409.dts b/arch/arm/boot/dts/kirkwood-ds409.dts
> new file mode 100644
> index 0000000..c6aa57b
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds409.dts
> @@ -0,0 +1,48 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS409, DS410j";
> +	compatible = "synology,ds409", "synology,ds410j", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-15-18 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-36 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-alarm-12 {
> +		status = "okay";
> +	};
> +};
> +
> +&eth1 {
> +	status = "okay";
> +};
> +
> +&rs5c372 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds409slim.dts b/arch/arm/boot/dts/kirkwood-ds409slim.dts
> new file mode 100644
> index 0000000..3c7b5bd
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds409slim.dts
> @@ -0,0 +1,40 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology 409slim";
> +	compatible = "synology,ds409slim", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-32-35 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-20 {
> +		status = "okay";
> +	};
> +};
> +
> +&rs5c372 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds411.dts b/arch/arm/boot/dts/kirkwood-ds411.dts
> new file mode 100644
> index 0000000..c8aa152
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds411.dts
> @@ -0,0 +1,52 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS411, DS413jv10";
> +	compatible = "synology,ds411", "synology,ds413jv10", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-1 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-36 {
> +		status = "okay";
> +	};
> +
> +	regulators-hdd-34 {
> +		status = "okay";
> +	};
> +};
> +
> +&eth1 {
> +	status = "okay";
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds411j.dts b/arch/arm/boot/dts/kirkwood-ds411j.dts
> new file mode 100644
> index 0000000..9546a2d
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds411j.dts
> @@ -0,0 +1,48 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS411j";
> +	compatible = "synology,ds411j", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-15-18 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-36 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-alarm-12 {
> +		status = "okay";
> +	};
> +};
> +
> +&eth1 {
> +	status = "okay";
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds411slim.dts b/arch/arm/boot/dts/kirkwood-ds411slim.dts
> new file mode 100644
> index 0000000..b2d8ea8
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds411slim.dts
> @@ -0,0 +1,48 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS411slim";
> +	compatible = "synology,ds411slim", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-1 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-36 {
> +		status = "okay";
> +	};
> +};
> +
> +&eth1 {
> +	status = "okay";
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-rs212.dts b/arch/arm/boot/dts/kirkwood-rs212.dts
> new file mode 100644
> index 0000000..3efad06
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-rs212.dts
> @@ -0,0 +1,48 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology RS212";
> +	compatible = "synology,rs212", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-3 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-38 {
> +		status = "okay";
> +	};
> +
> +	regulators-hdd-30-2 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-rs409.dts b/arch/arm/boot/dts/kirkwood-rs409.dts
> new file mode 100644
> index 0000000..cddd620
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-rs409.dts
> @@ -0,0 +1,44 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology RS409";
> +	compatible = "synology,rs409", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-15-18 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-36 {
> +		status = "okay";
> +	};
> +};
> +
> +&eth1 {
> +	status = "okay";
> +};
> +
> +&rs5c372 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-rs411.dts b/arch/arm/boot/dts/kirkwood-rs411.dts
> new file mode 100644
> index 0000000..a337a5c
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-rs411.dts
> @@ -0,0 +1,44 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology RS411 RS812";
> +	compatible = "synology,rs411", "synology,rs812", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-3 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-36 {
> +		status = "okay";
> +	};
> +};
> +
> +&eth1 {
> +	status = "okay";
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> -- 
> 1.8.3.2
> 
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [PATCH 00/10] Support TI Light Management Unit devices
From: Milo Kim @ 2014-02-16 23:51 UTC (permalink / raw)
  To: Lee Jones
  Cc: Jingoo Han, Bryan Wu, Mark Brown,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Samuel Ortiz
In-Reply-To: <20140214101439.GA9462@lee--X1>

Hi Lee,

On 02/14/2014 07:14 PM, Lee Jones wrote:
>> Milo Kim (10):
>>    mfd: Add TI LMU driver
>>    backlight: Add TI LMU backlight common driver
>>    backlight: ti-lmu-backlight: Add LM3532 driver
>>    backlight: ti-lmu-backlight: Add LM3631 driver
>>    backlight: ti-lmu-backlight: Add LM3633 driver
>>    backlight: ti-lmu-backlight: Add LM3695 driver
>>    backlight: ti-lmu-backlight: Add LM3697 driver
>>    leds: Add LM3633 driver
>>    regulator: Add LM3631 driver
>>    Documentation: Add device tree bindings for TI LMU devices
>
> It makes it much easier to track if you send your patch set (shallow)
> threaded i.e. all patches attached to [PATCH 0/x]. Having all of the
> patches sent individually they will get split up and spread out all
> over the reviewers INBOX, which becomes unwieldy very quickly.
>
> Please see git send-email options:
>    `--[no-]thread` and `--[no-]chain-reply-to`
>

Oh, sorry. I made a mistake.

I copied patch files from my working machine and sent them by using git 
send-email.

I should run
   git send-email --thread --no-chain-reply-to *.patch

but I did for each patch file, stupidly.
   git send-email --thread --no-chain-reply-to 0000-cover.patch
   git send-email --thread --no-chain-reply-to 
0001-mfd-Add-TI-LMU-driver.patch
..
   git send-email --thread --no-chain-reply-to 
0010-Documentation-Add-device-tree-bindings-for-TI-LMU-de.patch

I'm so embarrassed..

Thanks for your advice.

Best regards,
Milo
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [PATCH 02/12] dt-bindings: document s3c24xx controller for external clock output
From: Tomasz Figa @ 2014-02-16 20:51 UTC (permalink / raw)
  To: Heiko Stübner
  Cc: Kukjin Kim, t.figa, mturquette, linux-arm-kernel,
	linux-samsung-soc, Rob Herring, Pawel Moll, Mark Rutland,
	Stephen Warren, Ian Campbell, devicetree
In-Reply-To: <5620516.DA2mHk7Kko@phil>



On 16.02.2014 21:33, Heiko Stübner wrote:
> Am Sonntag, 9. Februar 2014, 02:54:40 schrieb Tomasz Figa:
>> Hi Heiko,
>>
>> On 13.12.2013 13:59, Heiko Stübner wrote:
>>> The clock settings are distributed over a regular register and parts
>>> of the misccr register.
>>>
>>> Signed-off-by: Heiko Stuebner <heiko@sntech.de>
>>> ---
>>>
>>>    .../bindings/clock/samsung,s3c2410-dclk.txt        |   53
>>>    ++++++++++++++++++++ 1 file changed, 53 insertions(+)
>>>    create mode 100644
>>>    Documentation/devicetree/bindings/clock/samsung,s3c2410-dclk.txt>
>>> diff --git
>>> a/Documentation/devicetree/bindings/clock/samsung,s3c2410-dclk.txt
>>> b/Documentation/devicetree/bindings/clock/samsung,s3c2410-dclk.txt new
>>> file mode 100644
>>> index 0000000..0a1f7b1
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/clock/samsung,s3c2410-dclk.txt
>>> @@ -0,0 +1,53 @@
>>> +* Samsung S3C24XX External Clock Output Controller
>>> +
>>> +The S3C24XX series can generate clock signals on two clock output pads.
>>> +The clock binding described here is applicable to all SoCs in
>>> +the s3c24x family.
>>> +
>>> +Required Properties:
>>> +
>>> +- compatible: should be one of the following.
>>> +  - "samsung,s3c2410-dclk" - controller in S3C2410 SoCs.
>>> +  - "samsung,s3c2412-dclk" - controller in S3C2412 SoCs.
>>> +  - "samsung,s3c2440-dclk" - controller in S3C2440 and S3C2442 SoCs.
>>> +  - "samsung,s3c2443-dclk" - controller in S3C2443 and later SoCs.
>>> +- reg: physical base address of the controller and length of memory
>>> mapped
>>> +  region.
>>> +- #clock-cells: should be 1.
>>> +- samsung,misccr: phandle to the syscon managing the misccr register,
>>> which +  holds configuration settings for different soc-components
>>> (clocks, usb, ...).
>> Hmm, looking at the datasheet, DCLK and CLKOUT registers seem to be part
>> of the pin controller. I wonder if there is really a need for different
>> driver and device node to handle them.
>>
>> Could this be simply made a part of the s3c24xx pinctrl driver,
>> extending it to register also a clock provider under the same DT node?
>
> it could, but of course the non-dt platforms would not be able to use it in
> this case.

Hmm, that's true.

> So I guess, we could get rid of this dt binding, implement the clkout handling
> in the pinctrl driver for dt platforms, but use the platform-driver this
> binding described for the time we're still handling non-dt s3c24xx machines.

I guess you could make this a separate driver that would be instantiated 
by pinctrl driver registering another platform device in DT case and a 
static platform device registered by board files in non-DT case.

Best regards,
Tomasz

^ permalink raw reply

* Re: [PATCH 02/12] dt-bindings: document s3c24xx controller for external clock output
From: Heiko Stübner @ 2014-02-16 20:33 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Kukjin Kim, t.figa, mturquette, linux-arm-kernel,
	linux-samsung-soc, Rob Herring, Pawel Moll, Mark Rutland,
	Stephen Warren, Ian Campbell, devicetree
In-Reply-To: <52F6DFE0.7030508@gmail.com>

Am Sonntag, 9. Februar 2014, 02:54:40 schrieb Tomasz Figa:
> Hi Heiko,
> 
> On 13.12.2013 13:59, Heiko Stübner wrote:
> > The clock settings are distributed over a regular register and parts
> > of the misccr register.
> > 
> > Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> > ---
> > 
> >   .../bindings/clock/samsung,s3c2410-dclk.txt        |   53
> >   ++++++++++++++++++++ 1 file changed, 53 insertions(+)
> >   create mode 100644
> >   Documentation/devicetree/bindings/clock/samsung,s3c2410-dclk.txt> 
> > diff --git
> > a/Documentation/devicetree/bindings/clock/samsung,s3c2410-dclk.txt
> > b/Documentation/devicetree/bindings/clock/samsung,s3c2410-dclk.txt new
> > file mode 100644
> > index 0000000..0a1f7b1
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/clock/samsung,s3c2410-dclk.txt
> > @@ -0,0 +1,53 @@
> > +* Samsung S3C24XX External Clock Output Controller
> > +
> > +The S3C24XX series can generate clock signals on two clock output pads.
> > +The clock binding described here is applicable to all SoCs in
> > +the s3c24x family.
> > +
> > +Required Properties:
> > +
> > +- compatible: should be one of the following.
> > +  - "samsung,s3c2410-dclk" - controller in S3C2410 SoCs.
> > +  - "samsung,s3c2412-dclk" - controller in S3C2412 SoCs.
> > +  - "samsung,s3c2440-dclk" - controller in S3C2440 and S3C2442 SoCs.
> > +  - "samsung,s3c2443-dclk" - controller in S3C2443 and later SoCs.
> > +- reg: physical base address of the controller and length of memory
> > mapped
> > +  region.
> > +- #clock-cells: should be 1.
> > +- samsung,misccr: phandle to the syscon managing the misccr register,
> > which +  holds configuration settings for different soc-components
> > (clocks, usb, ...).
> Hmm, looking at the datasheet, DCLK and CLKOUT registers seem to be part
> of the pin controller. I wonder if there is really a need for different
> driver and device node to handle them.
> 
> Could this be simply made a part of the s3c24xx pinctrl driver,
> extending it to register also a clock provider under the same DT node?

it could, but of course the non-dt platforms would not be able to use it in 
this case.

So I guess, we could get rid of this dt binding, implement the clkout handling 
in the pinctrl driver for dt platforms, but use the platform-driver this 
binding described for the time we're still handling non-dt s3c24xx machines.


Heiko

^ permalink raw reply

* Re: [PATCH net-next v5 00/10] Support for the Broadcom GENET driver
From: Florian Fainelli @ 2014-02-16 18:34 UTC (permalink / raw)
  To: Richard Cochran
  Cc: David Miller, netdev, devicetree, cernekee, mark.rutland, romieu
In-Reply-To: <20140214091943.GB3906@netboy>

Le vendredi 14 février 2014, 10:19:43 Richard Cochran a écrit :
> On Thu, Feb 13, 2014 at 11:07:00PM -0800, Florian Fainelli wrote:
> > Le 13/02/2014 21:29, David Miller a écrit :
> > >Series applied, thanks.
> > 
> > Great, thanks David!
> 
> Sorry for the late comment, but how about adding a call to
> skb_tx_timestamp(), in order to support so_timestamping?

The MAC itself is capable of providing a HW timestamp, I will look into this a 
little later.

Thanks!
-- 
Florian

^ permalink raw reply

* [PATCH v4 1/4] ASoC: tlv320aic32x4: Support for master clock
From: Markus Pargmann @ 2014-02-16 18:27 UTC (permalink / raw)
  To: Mark Brown
  Cc: Liam Girdwood, Lars-Peter Clausen,
	alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	Markus Pargmann, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, devicetree-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1392575252-9222-1-git-send-email-mpa-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>

Add support for a master clock passed through DT. The master clock of
the codec is only active when the codec is in use.

Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>
Cc: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>
Cc: Ian Campbell <ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>
Cc: Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Signed-off-by: Markus Pargmann <mpa-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
---
 .../devicetree/bindings/sound/tlv320aic32x4.txt    |  4 ++++
 sound/soc/codecs/tlv320aic32x4.c                   | 23 ++++++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt b/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt
index db05510..352be7b 100644
--- a/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt
+++ b/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt
@@ -8,6 +8,8 @@ Required properties:
 
 Optional properties:
  - reset-gpios: Reset-GPIO phandle with args as described in gpio/gpio.txt
+ - clocks/clock-names: Clock named 'mclk' for the master clock of the codec.
+   See clock/clock-bindings.txt for information about the detailed format.
 
 
 Example:
@@ -15,4 +17,6 @@ Example:
 codec: tlv320aic32x4@18 {
 	compatible = "ti,tlv320aic32x4";
 	reg = <0x18>;
+	clocks = <&clks 201>;
+	clock-names = "mclk";
 };
diff --git a/sound/soc/codecs/tlv320aic32x4.c b/sound/soc/codecs/tlv320aic32x4.c
index 1dd50e4..d96cb7c 100644
--- a/sound/soc/codecs/tlv320aic32x4.c
+++ b/sound/soc/codecs/tlv320aic32x4.c
@@ -33,6 +33,7 @@
 #include <linux/i2c.h>
 #include <linux/cdev.h>
 #include <linux/slab.h>
+#include <linux/clk.h>
 
 #include <sound/tlv320aic32x4.h>
 #include <sound/core.h>
@@ -67,6 +68,7 @@ struct aic32x4_priv {
 	u32 micpga_routing;
 	bool swapdacs;
 	int rstn_gpio;
+	struct clk *mclk;
 };
 
 /* 0dB min, 0.5dB steps */
@@ -487,8 +489,21 @@ static int aic32x4_mute(struct snd_soc_dai *dai, int mute)
 static int aic32x4_set_bias_level(struct snd_soc_codec *codec,
 				  enum snd_soc_bias_level level)
 {
+	struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
+
 	switch (level) {
 	case SND_SOC_BIAS_ON:
+		/* Switch on master clock */
+		if (!IS_ERR(aic32x4->mclk)) {
+			int ret;
+
+			ret = clk_prepare_enable(aic32x4->mclk);
+			if (ret) {
+				dev_err(codec->dev, "Failed to enable master clock\n");
+				return ret;
+			}
+		}
+
 		/* Switch on PLL */
 		snd_soc_update_bits(codec, AIC32X4_PLLPR,
 				    AIC32X4_PLLEN, AIC32X4_PLLEN);
@@ -539,6 +554,10 @@ static int aic32x4_set_bias_level(struct snd_soc_codec *codec,
 		/* Switch off BCLK_N Divider */
 		snd_soc_update_bits(codec, AIC32X4_BCLKN,
 				    AIC32X4_BCLKEN, 0);
+
+		/* Switch off master clock */
+		if (!IS_ERR(aic32x4->mclk))
+			clk_disable_unprepare(aic32x4->mclk);
 		break;
 	case SND_SOC_BIAS_OFF:
 		break;
@@ -717,6 +736,10 @@ static int aic32x4_i2c_probe(struct i2c_client *i2c,
 		aic32x4->rstn_gpio = -1;
 	}
 
+	aic32x4->mclk = devm_clk_get(&i2c->dev, "mclk");
+	if (IS_ERR(aic32x4->mclk))
+		dev_info(&i2c->dev, "No mclk found, continuing without clock\n");
+
 	if (gpio_is_valid(aic32x4->rstn_gpio)) {
 		ret = devm_gpio_request_one(&i2c->dev, aic32x4->rstn_gpio,
 				GPIOF_OUT_INIT_LOW, "tlv320aic32x4 rstn");
-- 
1.8.5.3

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related

* Re: [PATCH] hwmon: twl4030-madc-hwmon: Add device tree support.
From: Sebastian Reichel @ 2014-02-16 17:44 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Belisko Marek, Mark Rutland, robh+dt@kernel.org, Pawel Moll,
	ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
	rob@landley.net, jdelvare@suse.de, grant.likely@linaro.org,
	devicetree@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org, lm-sensors@lm-sensors.org,
	hns@goldelico.com
In-Reply-To: <5300E9DA.501@roeck-us.net>

[-- Attachment #1: Type: text/plain, Size: 1931 bytes --]

On Sun, Feb 16, 2014 at 08:39:54AM -0800, Guenter Roeck wrote:
> On 02/14/2014 06:08 AM, Belisko Marek wrote:
> >On Fri, Feb 14, 2014 at 2:31 PM, Mark Rutland <mark.rutland@arm.com> wrote:
> >>On Fri, Feb 14, 2014 at 01:20:58PM +0000, Marek Belisko wrote:
> >>>Signed-off-by: Marek Belisko <marek@goldelico.com>
> >>>---
> >>>  Documentation/devicetree/bindings/hwmon/twl4030-madc-hwmon.txt |  9 +++++++++
> >>>  drivers/hwmon/twl4030-madc-hwmon.c                             | 10 ++++++++++
> >>>  2 files changed, 19 insertions(+)
> >>>  create mode 100644 Documentation/devicetree/bindings/hwmon/twl4030-madc-hwmon.txt
> >>>
> >>>diff --git a/Documentation/devicetree/bindings/hwmon/twl4030-madc-hwmon.txt b/Documentation/devicetree/bindings/hwmon/twl4030-madc-hwmon.txt
> >>>new file mode 100644
> >>>index 0000000..e8016d1
> >>>--- /dev/null
> >>>+++ b/Documentation/devicetree/bindings/hwmon/twl4030-madc-hwmon.txt
> >>>@@ -0,0 +1,9 @@
> >>>+TWL4030 MADC hwmon.
> >>>+
> >>>+Required properties:
> >>>+- compatible: "ti,twl4030-madc-hwmon"
> >>>+
> >>>+Example:
> >>>+madc-hwmon {
> >>>+     compatible = "ti,twl4030-madc-hwmon";
> >>>+};
> >>
> >>Huh?
> >>
> >>What is this a binding for? From a look at the driver in mainline this
> >>just calls into functions from the twl4030 madc driver (which doesn't
> >>seem to have a binding).
> >I post bindings for twl4030-madc [1]. Without probing this driver
> >other things will not work (twl4030-madc-battery e.g.).
> >Is there better way to handle this situation?
> 
> Since you are converting twl4030-madc to be an iio driver,
> can't you simply use the iio_hwmon bridge and declare this driver
> obsolete ?

He didn't convert the driver, I did. That's why he included this
change.

I was thinking of using the iio_hwmon bridge and deprecating the
madc-hwmon driver. I have not tested this, though (lack of time).

-- Sebastian

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply

* Re: [PATCH] hwmon: twl4030-madc-hwmon: Add device tree support.
From: Guenter Roeck @ 2014-02-16 16:39 UTC (permalink / raw)
  To: Belisko Marek, Mark Rutland
  Cc: robh+dt@kernel.org, Pawel Moll, ijc+devicetree@hellion.org.uk,
	galak@codeaurora.org, rob@landley.net, jdelvare@suse.de,
	grant.likely@linaro.org, devicetree@vger.kernel.org,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	lm-sensors@lm-sensors.org, hns@goldelico.com
In-Reply-To: <CAAfyv36Eo578K1LAdFJdKKjs800Gz2_kfJqvEcdD_U1qRCKY6w@mail.gmail.com>

On 02/14/2014 06:08 AM, Belisko Marek wrote:
> On Fri, Feb 14, 2014 at 2:31 PM, Mark Rutland <mark.rutland@arm.com> wrote:
>> On Fri, Feb 14, 2014 at 01:20:58PM +0000, Marek Belisko wrote:
>>> Signed-off-by: Marek Belisko <marek@goldelico.com>
>>> ---
>>>   Documentation/devicetree/bindings/hwmon/twl4030-madc-hwmon.txt |  9 +++++++++
>>>   drivers/hwmon/twl4030-madc-hwmon.c                             | 10 ++++++++++
>>>   2 files changed, 19 insertions(+)
>>>   create mode 100644 Documentation/devicetree/bindings/hwmon/twl4030-madc-hwmon.txt
>>>
>>> diff --git a/Documentation/devicetree/bindings/hwmon/twl4030-madc-hwmon.txt b/Documentation/devicetree/bindings/hwmon/twl4030-madc-hwmon.txt
>>> new file mode 100644
>>> index 0000000..e8016d1
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/hwmon/twl4030-madc-hwmon.txt
>>> @@ -0,0 +1,9 @@
>>> +TWL4030 MADC hwmon.
>>> +
>>> +Required properties:
>>> +- compatible: "ti,twl4030-madc-hwmon"
>>> +
>>> +Example:
>>> +madc-hwmon {
>>> +     compatible = "ti,twl4030-madc-hwmon";
>>> +};
>>
>> Huh?
>>
>> What is this a binding for? From a look at the driver in mainline this
>> just calls into functions from the twl4030 madc driver (which doesn't
>> seem to have a binding).
> I post bindings for twl4030-madc [1]. Without probing this driver
> other things will not work (twl4030-madc-battery e.g.).
> Is there better way to handle this situation?

Since you are converting twl4030-madc to be an iio driver,
can't you simply use the iio_hwmon bridge and declare this driver
obsolete ?

Guenter


^ permalink raw reply

* Re: [PATCH v4] bus: imx-weim: support CS GPR configuration
From: Shawn Guo @ 2014-02-16 14:31 UTC (permalink / raw)
  To: Alexander Shiyan
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Philippe De Muyter, Huang Shijie, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland
In-Reply-To: <1392560564.725313659-xNJVu4UI9wlsdVUOrk1QfQ@public.gmane.org>

On Sun, Feb 16, 2014 at 06:22:44PM +0400, Alexander Shiyan wrote:
> Воскресенье, 16 февраля 2014, 22:03 +08:00 от Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>:
> > For imx50-weim and imx6q-weim type of devices, there might a WEIM CS
> > space configuration register in General Purpose Register controller,
> > e.g. IOMUXC_GPR1 on i.MX6Q.
> ...
> > +static int __init imx_weim_gpr_setup(struct platform_device *pdev)
> > +{
> > +	struct device_node *np = pdev->dev.of_node;
> > +	struct property *prop;
> > +	const __be32 *p;
> > +	struct regmap *gpr;
> > +	u32 gprvals[4] = {
> > +		05,	/* CS0(128M) CS1(0M)  CS2(0M)  CS3(0M) */
> > +		033,	/* CS0(64M)  CS1(64M) CS2(0M)  CS3(0M) */
> > +		0113,	/* CS0(64M)  CS1(32M) CS2(32M) CS3(0M) */
> > +		01111,	/* CS0(64M)  CS1(32M) CS2(32M) CS3(0M) */
> > +	};
> > +	u32 gprval = 0;
> > +	u32 val;
> > +	int cs = 0;
> > +	int i = 0;
> > +
> > +	gpr = syscon_regmap_lookup_by_phandle(np, "fsl,weim-cs-gpr");
> > +	if (IS_ERR(gpr)) {
> > +		dev_dbg(&pdev->dev, "failed to find weim-cs-gpr\n");
> > +		return 0;
> 
> Only one comment:
> You do not use these error codes in the probe(),
> so let's declare this function as void.

Oh, yes.  I should check return of imx_weim_gpr_setup() in probe().
Will add in the next version.

Shawn

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [PATCH v4] bus: imx-weim: support CS GPR configuration
From: Alexander Shiyan @ 2014-02-16 14:22 UTC (permalink / raw)
  To: Shawn Guo
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Philippe De Muyter, Huang Shijie, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland
In-Reply-To: <1392559381-30842-1-git-send-email-shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>

Воскресенье, 16 февраля 2014, 22:03 +08:00 от Shawn Guo <shawn.guo@linaro.org>:
> For imx50-weim and imx6q-weim type of devices, there might a WEIM CS
> space configuration register in General Purpose Register controller,
> e.g. IOMUXC_GPR1 on i.MX6Q.
...
> +static int __init imx_weim_gpr_setup(struct platform_device *pdev)
> +{
> +	struct device_node *np = pdev->dev.of_node;
> +	struct property *prop;
> +	const __be32 *p;
> +	struct regmap *gpr;
> +	u32 gprvals[4] = {
> +		05,	/* CS0(128M) CS1(0M)  CS2(0M)  CS3(0M) */
> +		033,	/* CS0(64M)  CS1(64M) CS2(0M)  CS3(0M) */
> +		0113,	/* CS0(64M)  CS1(32M) CS2(32M) CS3(0M) */
> +		01111,	/* CS0(64M)  CS1(32M) CS2(32M) CS3(0M) */
> +	};
> +	u32 gprval = 0;
> +	u32 val;
> +	int cs = 0;
> +	int i = 0;
> +
> +	gpr = syscon_regmap_lookup_by_phandle(np, "fsl,weim-cs-gpr");
> +	if (IS_ERR(gpr)) {
> +		dev_dbg(&pdev->dev, "failed to find weim-cs-gpr\n");
> +		return 0;

Only one comment:
You do not use these error codes in the probe(),
so let's declare this function as void.

---

^ permalink raw reply

* [PATCH v4] bus: imx-weim: support CS GPR configuration
From: Shawn Guo @ 2014-02-16 14:03 UTC (permalink / raw)
  To: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
  Cc: Philippe De Muyter, Alexander Shiyan, Huang Shijie,
	kernel-bIcnvbaLZ9MEGnE8C9+IrQ, devicetree-u79uwXL29TY76Z2rM5mHXA,
	Rob Herring, Mark Rutland, Shawn Guo

For imx50-weim and imx6q-weim type of devices, there might a WEIM CS
space configuration register in General Purpose Register controller,
e.g. IOMUXC_GPR1 on i.MX6Q.

Depending on which configuration of the following 4 is chosen for given
system, IOMUXC_GPR1[11:0] should be set up as 05, 033, 0113 or 01111
correspondingly.

	CS0(128M) CS1(0M)  CS2(0M)  CS3(0M)
	CS0(64M)  CS1(64M) CS2(0M)  CS3(0M)
	CS0(64M)  CS1(32M) CS2(32M) CS3(0M)
	CS0(32M)  CS1(32M) CS2(32M) CS3(32M)

The patch creates a function for such type of devices, which scans
'ranges' property of WEIM node and build the GPR value incrementally.
Thus the WEIM CS GPR can be set up automatically at boot time.

Signed-off-by: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
---
Changes since v3:
 - Add DT property fsl,weim-cs-gpr back, so that the support can work
   for more i.MX SoCs than just i.MX6Q.

 Documentation/devicetree/bindings/bus/imx-weim.txt |   27 +++++++++-
 drivers/bus/imx-weim.c                             |   55 ++++++++++++++++++++
 2 files changed, 81 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/bus/imx-weim.txt b/Documentation/devicetree/bindings/bus/imx-weim.txt
index 0fd76c4..363c970 100644
--- a/Documentation/devicetree/bindings/bus/imx-weim.txt
+++ b/Documentation/devicetree/bindings/bus/imx-weim.txt
@@ -8,7 +8,12 @@ The actual devices are instantiated from the child nodes of a WEIM node.
 
 Required properties:
 
- - compatible:		Should be set to "fsl,<soc>-weim"
+ - compatible:		Should contain one of the following:
+			  "fsl,imx1-weim"
+			  "fsl,imx27-weim"
+			  "fsl,imx51-weim"
+			  "fsl,imx50-weim"
+			  "fsl,imx6q-weim"
  - reg:			A resource specifier for the register space
 			(see the example below)
  - clocks:		the clock, see the example below.
@@ -19,6 +24,26 @@ Required properties:
 
 			   <cs-number> 0 <physical address of mapping> <size>
 
+Optional properties:
+
+ - fsl,weim-cs-gpr:	For "fsl,imx50-weim" and "fsl,imx6q-weim" type of
+			devices, it should be the phandle to the system General
+			Purpose Register controller that contains WEIM CS GPR
+			register, e.g. IOMUXC_GPR1 on i.MX6Q.  IOMUXC_GPR1[11:0]
+			should be set up as one of the following 4 possible
+			values depending on the CS space configuration.
+
+			IOMUXC_GPR1[11:0]    CS0    CS1    CS2    CS3
+			---------------------------------------------
+				05	    128M     0M     0M     0M
+				033          64M    64M     0M     0M
+				0113         64M    32M    32M     0M
+				01111        32M    32M    32M    32M
+
+			In case that the property is absent, the reset value or
+			what bootloader sets up in IOMUXC_GPR1[11:0] will be
+			used.
+
 Timing property for child nodes. It is mandatory, not optional.
 
  - fsl,weim-cs-timing:	The timing array, contains timing values for the
diff --git a/drivers/bus/imx-weim.c b/drivers/bus/imx-weim.c
index 3ef58c8..35e9529 100644
--- a/drivers/bus/imx-weim.c
+++ b/drivers/bus/imx-weim.c
@@ -11,6 +11,9 @@
 #include <linux/clk.h>
 #include <linux/io.h>
 #include <linux/of_device.h>
+#include <linux/mfd/syscon.h>
+#include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
+#include <linux/regmap.h>
 
 struct imx_weim_devtype {
 	unsigned int	cs_count;
@@ -56,6 +59,55 @@ static const struct of_device_id weim_id_table[] = {
 };
 MODULE_DEVICE_TABLE(of, weim_id_table);
 
+static int __init imx_weim_gpr_setup(struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct property *prop;
+	const __be32 *p;
+	struct regmap *gpr;
+	u32 gprvals[4] = {
+		05,	/* CS0(128M) CS1(0M)  CS2(0M)  CS3(0M) */
+		033,	/* CS0(64M)  CS1(64M) CS2(0M)  CS3(0M) */
+		0113,	/* CS0(64M)  CS1(32M) CS2(32M) CS3(0M) */
+		01111,	/* CS0(64M)  CS1(32M) CS2(32M) CS3(0M) */
+	};
+	u32 gprval = 0;
+	u32 val;
+	int cs = 0;
+	int i = 0;
+
+	gpr = syscon_regmap_lookup_by_phandle(np, "fsl,weim-cs-gpr");
+	if (IS_ERR(gpr)) {
+		dev_dbg(&pdev->dev, "failed to find weim-cs-gpr\n");
+		return 0;
+	}
+
+	of_property_for_each_u32(np, "ranges", prop, p, val) {
+		if (i % 4 == 0) {
+			cs = val;
+		} else if (i % 4 == 3 && val) {
+			val = (val / SZ_32M) | 1;
+			gprval |= val << cs * 3;
+		}
+		i++;
+	}
+
+	if (i == 0 || i % 4)
+		goto err;
+
+	for (i = 0; i < ARRAY_SIZE(gprvals); i++) {
+		if (gprval == gprvals[i]) {
+			/* Found it. Set up IOMUXC_GPR1[11:0] with it. */
+			regmap_update_bits(gpr, IOMUXC_GPR1, 0xfff, gprval);
+			return 0;
+		}
+	}
+
+err:
+	dev_err(&pdev->dev, "Invalid 'ranges' configuration\n");
+	return -EINVAL;
+}
+
 /* Parse and set the timing for this device. */
 static int __init weim_timing_setup(struct device_node *np, void __iomem *base,
 				    const struct imx_weim_devtype *devtype)
@@ -92,6 +144,9 @@ static int __init weim_parse_dt(struct platform_device *pdev,
 	struct device_node *child;
 	int ret;
 
+	if (devtype == &imx50_weim_devtype)
+		imx_weim_gpr_setup(pdev);
+
 	for_each_child_of_node(pdev->dev.of_node, child) {
 		if (!child->name)
 			continue;
-- 
1.7.9.5


--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related

* Re: [PATCH v3] bus: imx-weim: support CS GPR config for imx6q-weim
From: Shawn Guo @ 2014-02-16 13:10 UTC (permalink / raw)
  To: Alexander Shiyan
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Huang Shijie,
	Philippe De Muyter, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	devicetree-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1392548881.675863030-vsKlnG5ePthsdVUOrk1QfQ@public.gmane.org>

On Sun, Feb 16, 2014 at 03:08:01PM +0400, Alexander Shiyan wrote:
> Воскресенье, 16 февраля 2014, 18:56 +08:00 от Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>:
> > On Sun, Feb 16, 2014 at 04:38:44PM +0800, Shawn Guo wrote:
> > > @@ -56,6 +59,55 @@ static const struct of_device_id weim_id_table[] = {
> > >  };
> > >  MODULE_DEVICE_TABLE(of, weim_id_table);
> > >  
> > > +static int __init imx6q_weim_gpr_setup(struct platform_device *pdev)
> > > +{
> > > +	struct device_node *np = pdev->dev.of_node;
> > > +	struct property *prop;
> > > +	const __be32 *p;
> > > +	struct regmap *gpr;
> > > +	u32 gprvals[4] = {
> > > +		05,	/* CS0(128M) CS1(0M)  CS2(0M)  CS3(0M) */
> > > +		033,	/* CS0(64M)  CS1(64M) CS2(0M)  CS3(0M) */
> > > +		0113,	/* CS0(64M)  CS1(32M) CS2(32M) CS3(0M) */
> > > +		01111,	/* CS0(64M)  CS1(32M) CS2(32M) CS3(0M) */
> > > +	};
> > > +	u32 gprval = 0;
> > > +	u32 val;
> > > +	int cs = 0;
> > > +	int i = 0;
> > > +
> > > +	gpr = syscon_regmap_lookup_by_compatible("fsl,imx6q-iomuxc-gpr");
> > 
> > When trying to improve the bindings doc imx-weim.txt, I checked hardware
> > manuals and found that SoCs imx50, imx53, imx6q, imx6dl and imx6sl all
> > need the same CS GPR setup.  It's inappropriate to look up by hard-coded
> > compatible "fsl,imx6q-iomuxc-gpr" then.  So I'm going to add the
> > property fsl,weim-cs-gpr back, and update bindings doc accordingly.
> 
> You can add additional call into struct imx_weim_devtype for handle
> soc-specific stuff.

Yes, imx_weim_devtype is the place to code soc-specific stuff.  But for
this particular case, an additional DT property is more flexible.

Shawn

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* (unknown), 
From: Eleazar Molina Molina @ 2014-02-16 11:35 UTC (permalink / raw)




Good day. I am Mark Reyes Guus, I not work with Abn Amro Bank as an auditor. I have a proposition to discuss with you. Should you be interested, Please e-mail back to me.

Private Email: markreyesguus@abnmrob.co.uk OR markguus.reyes01 @ yahoo.nl

Yours Sincerely,
Guus Mark Reyes.

________________________________

La información de este correo así como la contenida en los documentos que se adjuntan, pueden ser objeto de solicitudes de acceso a la información. Visítanos: http://www.ipn.mx

^ permalink raw reply

* Re: [PATCH v3 4/4] ARM: Kirkwood: Add support for many Synology NAS devices
From: Ben Peddell @ 2014-02-16 11:08 UTC (permalink / raw)
  To: Jason Cooper
  Cc: Mark Rutland, devicetree-u79uwXL29TY76Z2rM5mHXA,
	pawel.moll-5wv7dgnIgG8, Ian Campbell, Andrew Lunn, Kumar Gala,
	Linux ARM Kernel
In-Reply-To: <5a55b4$em6if8-73Sy8+Y76rVS+6ppBSHQ0J2tLTJCEHwz7bdBIQen8uI@public.gmane.org>

Got two email addresses wrong.

On 16/02/14 20:27, klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org wrote:
> Add device tree fragments and files to support many of the kirkwood
> based Synology NAS devices. This is a modification of 
> Andrew Lunn's <andrew-g2DYL2Zd6BY@public.gmane.org> translation of the board setup file 
> maintained by Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> 
> The Ricoh RS5C372 RTC was used in all 2009 units and some 2010 units.
> All other Synology Kirkwood-based DiskStations and RackStations use 
> the Seiko S35390A RTC.
> 
> Most of the 1-bay and 2-bay units use the GPIOs that are multiplexed
> with the built-in SATA interface activity/presence pins on mpp 20-23,
> while the 4-bay units use ge01 and a PCIe SATA controller, and put the
> software controlled HDD leds on mpp 36-43.
> 
> Most of the 6281 units with HDD power controls use mpp 29 and 31, while
> most of the 6282 units with HDD power controls use mpp 30, 34, 44 and 45
> and provide a model ID on mpp 28, 29, 46 and 47.  Pre-2012 units and
> most 4-bay units didn't have a separate power control for HDD1.  These 
> power controls are presumably to limit startup current from the 12V brick
> power supply.
> 
> Instead of using separate dtsi files in a synology directory, this
> patch uses a single dtsi file containing all of the modules for
> these boards, with all of the modules not common to all boards
> disabled.  The board dts files then enable the appropriate modules for
> their boards.
> 
> Signed-off-by: Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> Tested-by: Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org> (ds211j)
> ---
>  arch/arm/boot/dts/Makefile                   |  15 +
>  arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi | 764 +++++++++++++++++++++++++++
>  arch/arm/boot/dts/kirkwood-ds109.dts         |  42 ++
>  arch/arm/boot/dts/kirkwood-ds110jv10.dts     |  41 ++
>  arch/arm/boot/dts/kirkwood-ds111.dts         |  44 ++
>  arch/arm/boot/dts/kirkwood-ds112.dts         |  48 ++
>  arch/arm/boot/dts/kirkwood-ds209.dts         |  44 ++
>  arch/arm/boot/dts/kirkwood-ds210.dts         |  46 ++
>  arch/arm/boot/dts/kirkwood-ds212.dts         |  47 ++
>  arch/arm/boot/dts/kirkwood-ds212j.dts        |  41 ++
>  arch/arm/boot/dts/kirkwood-ds409.dts         |  48 ++
>  arch/arm/boot/dts/kirkwood-ds409slim.dts     |  40 ++
>  arch/arm/boot/dts/kirkwood-ds411.dts         |  52 ++
>  arch/arm/boot/dts/kirkwood-ds411j.dts        |  48 ++
>  arch/arm/boot/dts/kirkwood-ds411slim.dts     |  48 ++
>  arch/arm/boot/dts/kirkwood-rs212.dts         |  48 ++
>  arch/arm/boot/dts/kirkwood-rs409.dts         |  44 ++
>  arch/arm/boot/dts/kirkwood-rs411.dts         |  44 ++
>  18 files changed, 1503 insertions(+)
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds109.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds110jv10.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds111.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds112.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds209.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds210.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds212.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds212j.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds409.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds409slim.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds411.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds411j.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ds411slim.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-rs212.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-rs409.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-rs411.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index b9d6a8b..6cf3a54 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -89,6 +89,18 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
>  	kirkwood-dns325.dtb \
>  	kirkwood-dockstar.dtb \
>  	kirkwood-dreamplug.dtb \
> +	kirkwood-ds109.dtb \
> +	kirkwood-ds110jv10.dtb \
> +	kirkwood-ds111.dtb \
> +	kirkwood-ds209.dtb \
> +	kirkwood-ds210.dtb \
> +	kirkwood-ds212.dtb \
> +	kirkwood-ds212j.dtb \
> +	kirkwood-ds409.dtb \
> +	kirkwood-ds409slim.dtb \
> +	kirkwood-ds411.dtb \
> +	kirkwood-ds411j.dtb \
> +	kirkwood-ds411slim.dtb \
>  	kirkwood-goflexnet.dtb \
>  	kirkwood-guruplug-server-plus.dtb \
>  	kirkwood-ib62x0.dtb \
> @@ -111,6 +123,9 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
>  	kirkwood-nsa310a.dtb \
>  	kirkwood-openblocks_a6.dtb \
>  	kirkwood-openblocks_a7.dtb \
> +	kirkwood-rs212.dtb \
> +	kirkwood-rs409.dtb \
> +	kirkwood-rs411.dtb \
>  	kirkwood-sheevaplug.dtb \
>  	kirkwood-sheevaplug-esata.dtb \
>  	kirkwood-topkick.dtb \
> diff --git a/arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi b/arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi
> new file mode 100644
> index 0000000..65f0b9d
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi
> @@ -0,0 +1,764 @@
> +/*
> + * Nodes for Marvell 628x Synology devices
> + *
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> +	mbus {
> +		pcie-controller {
> +			status = "okay";
> +
> +			pcie@1,0 {
> +				status = "okay";
> +			};
> +			pcie2: pcie@2,0 {
> +				status = "disabled";
> +			};
> +		};
> +	};
> +	ocp@f1000000 {
> +		pinctrl: pinctrl@10000 {
> +			pmx_alarmled_12: pmx-alarmled-12 {
> +				marvell,pins = "mpp12";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanctrl_15: pmx-fanctrl-15 {
> +				marvell,pins = "mpp15";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanctrl_16: pmx-fanctrl-16 {
> +				marvell,pins = "mpp16";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanctrl_17: pmx-fanctrl-17 {
> +				marvell,pins = "mpp17";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanalarm_18: pmx-fanalarm-18 {
> +				marvell,pins = "mpp18";
> +				marvell,function = "gpo";
> +			};
> +			pmx_hddled_20: pmx-hddled-20 {
> +				marvell,pins = "mpp20";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_21: pmx-hddled-21 {
> +				marvell,pins = "mpp21";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_22: pmx-hddled-22 {
> +				marvell,pins = "mpp22";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_23: pmx-hddled-23 {
> +				marvell,pins = "mpp23";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_24: pmx-hddled-24 {
> +				marvell,pins = "mpp24";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_25: pmx-hddled-25 {
> +				marvell,pins = "mpp25";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_26: pmx-hddled-26 {
> +				marvell,pins = "mpp26";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_27: pmx-hddled-27 {
> +				marvell,pins = "mpp27";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_28: pmx-hddled-28 {
> +				marvell,pins = "mpp28";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hdd1_pwr_29: pmx-hdd1-pwr-29 {
> +				marvell,pins = "mpp29";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hdd1_pwr_30: pmx-hdd-pwr-30 {
> +				marvell,pins = "mpp30";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hdd2_pwr_31: pmx-hdd2-pwr-31 {
> +				marvell,pins = "mpp31";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanctrl_32: pmx-fanctrl-32 {
> +				marvell,pins = "mpp32";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanctrl_33: pmx-fanctrl-33 {
> +				marvell,pins = "mpp33";
> +				marvell,function = "gpo";
> +			};
> +			pmx_fanctrl_34: pmx-fanctrl-34 {
> +				marvell,pins = "mpp34";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hdd2_pwr_34: pmx-hdd2-pwr-34 {
> +				marvell,pins = "mpp34";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanalarm_35: pmx-fanalarm-35 {
> +				marvell,pins = "mpp35";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_36: pmx-hddled-36 {
> +				marvell,pins = "mpp36";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_37: pmx-hddled-37 {
> +				marvell,pins = "mpp37";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_38: pmx-hddled-38 {
> +				marvell,pins = "mpp38";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_39: pmx-hddled-39 {
> +				marvell,pins = "mpp39";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_40: pmx-hddled-40 {
> +				marvell,pins = "mpp40";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_41: pmx-hddled-41 {
> +				marvell,pins = "mpp41";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_42: pmx-hddled-42 {
> +				marvell,pins = "mpp42";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_43: pmx-hddled-43 {
> +				marvell,pins = "mpp43";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_44: pmx-hddled-44 {
> +				marvell,pins = "mpp44";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hddled_45: pmx-hddled-45 {
> +				marvell,pins = "mpp45";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hdd3_pwr_44: pmx-hdd3-pwr-44 {
> +				marvell,pins = "mpp44";
> +				marvell,function = "gpio";
> +			};
> +			pmx_hdd4_pwr_45: pmx-hdd4-pwr-45 {
> +				marvell,pins = "mpp45";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanalarm_44: pmx-fanalarm-44 {
> +				marvell,pins = "mpp44";
> +				marvell,function = "gpio";
> +			};
> +			pmx_fanalarm_45: pmx-fanalarm-45 {
> +				marvell,pins = "mpp45";
> +				marvell,function = "gpio";
> +			};
> +		};		
> +		i2c@11000 {
> +			status = "okay";
> +			clock-frequency = <400000>;
> +			pinctrl-0 = <&pmx_twsi0>;
> +			pinctrl-names = "default";
> +			rs5c372: rs5c372@32 {
> +				status = "disabled";
> +				compatible = "rs5c372";
> +				reg = <0x32>;
> +			};
> +			s35390a: s35390a@30 {
> +				status = "disabled";
> +				compatible = "s35390a";
> +				reg = <0x30>;
> +			};
> +		};
> +		serial@12000 {
> +			status = "okay";
> +			pinctrl-0 = <&pmx_uart0>;
> +			pinctrl-names = "default";
> +		};
> +		serial@12100 {
> +			status = "okay";
> +			pinctrl-0 = <&pmx_uart1>;
> +			pinctrl-names = "default";
> +		};
> +		poweroff@12100 {
> +			compatible = "synology,power-off";
> +			reg = <0x12000 0x100>;
> +			clocks = <&gate_clk 7>;
> +		};
> +		spi@10600 {
> +			status = "okay";
> +			pinctrl-0 = <&pmx_spi>;
> +			pinctrl-names = "default";
> +
> +			m25p80@0 {
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				compatible = "m25p80";
> +				reg = <0>;
> +				spi-max-frequency = <20000000>;
> +				mode = <0>;
> +
> +				partition@00000000 {
> +					reg = <0x00000000 0x00080000>;
> +					label = "RedBoot";
> +				};
> +
> +				partition@00080000 {
> +					reg = <0x00080000 0x00200000>;
> +					label = "zImage";
> +				};
> +
> +				partition@00280000 {
> +					reg = <0x00280000 0x00140000>;
> +					label = "rd.gz";
> +				};
> +				partition@003c0000 {
> +					reg = <0x003c0000 0x00010000>;
> +					label = "vendor";
> +				};
> +				partition@003d0000 {
> +					reg = <0x003d0000 0x00020000>;
> +					label = "RedBoot config";
> +				};
> +				partition@003f0000 {
> +					reg = <0x003f0000 0x00010000>;
> +					label = "FIS directory";
> +				};
> +			};
> +		};
> +		sata@80000 {
> +			pinctrl-0 = <&pmx_sata0 &pmx_sata1>;
> +			pinctrl-names = "default";
> +			status = "okay";
> +			nr-ports = <2>;
> +		};
> +	};
> +	gpio-fan-150-32-35 {
> +		status = "disabled";
> +		compatible = "gpio-fan";
> +		pinctrl-0 = <&pmx_fanctrl_32 &pmx_fanctrl_33 &pmx_fanctrl_34
> +		             &pmx_fanalarm_35>;
> +		pinctrl-names = "default";
> +		gpios = <&gpio1 0 GPIO_ACTIVE_HIGH
> +			 &gpio1 1 GPIO_ACTIVE_HIGH
> +			 &gpio1 2 GPIO_ACTIVE_HIGH>;
> +		gpio-fan,speed-map = <    0 0
> +				       2200 1
> +				       2500 2
> +				       3000 4
> +				       3300 3
> +				       3700 5
> +				       3800 6
> +				       4200 7 >;
> +	};
> +	gpio-fan-150-15-18 {
> +		status = "disabled";
> +		compatible = "gpio-fan";
> +		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17
> +		             &pmx_fanalarm_18>;
> +		pinctrl-names = "default";
> +		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
> +			 &gpio0 16 GPIO_ACTIVE_HIGH
> +			 &gpio0 17 GPIO_ACTIVE_HIGH>;
> +		alarm-gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
> +		gpio-fan,speed-map = <    0 0
> +				       2200 1
> +				       2500 2
> +				       3000 4
> +				       3300 3
> +				       3700 5
> +				       3800 6
> +				       4200 7 >;
> +	};
> +	gpio-fan-100-32-35 {
> +		status = "disabled";
> +		compatible = "gpio-fan";
> +		pinctrl-0 = <&pmx_fanctrl_32 &pmx_fanctrl_33 &pmx_fanctrl_34 
> +		             &pmx_fanalarm_35>;
> +		pinctrl-names = "default";
> +		gpios = <&gpio1 0 GPIO_ACTIVE_HIGH
> +			 &gpio1 1 GPIO_ACTIVE_HIGH
> +			 &gpio1 2 GPIO_ACTIVE_HIGH>;
> +		alarm-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
> +		gpio-fan,speed-map = <    0 0
> +				       2500 1
> +				       3100 2
> +				       3800 3
> +				       4600 4
> +				       4800 5
> +				       4900 6
> +				       5000 7 >;
> +	};
> +	gpio-fan-100-15-18 {
> +		status = "disabled";
> +		compatible = "gpio-fan";
> +		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17 
> +		             &pmx_fanalarm_18>;
> +		pinctrl-names = "default";
> +		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
> +			 &gpio0 16 GPIO_ACTIVE_HIGH
> +			 &gpio0 17 GPIO_ACTIVE_HIGH>;
> +		alarm-gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
> +		gpio-fan,speed-map = <    0 0
> +				       2500 1
> +				       3100 2
> +				       3800 3
> +				       4600 4
> +				       4800 5
> +				       4900 6
> +				       5000 7 >;
> +	};
> +	gpio-fan-100-15-35-1 {
> +		status = "disabled";
> +		compatible = "gpio-fan";
> +		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17 
> +		             &pmx_fanalarm_35>;
> +		pinctrl-names = "default";
> +		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
> +			 &gpio0 16 GPIO_ACTIVE_HIGH
> +			 &gpio0 17 GPIO_ACTIVE_HIGH>;
> +		alarm-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
> +		gpio-fan,speed-map = <    0 0
> +				       2500 1
> +				       3100 2
> +				       3800 3
> +				       4600 4
> +				       4800 5
> +				       4900 6
> +				       5000 7 >;
> +	};
> +	gpio-fan-100-15-35-3 {
> +		status = "disabled";
> +		compatible = "gpio-fan";
> +		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17
> +		             &pmx_fanalarm_35 &pmx_fanalarm_44 &pmx_fanalarm_45>;
> +		pinctrl-names = "default";
> +		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
> +			 &gpio0 16 GPIO_ACTIVE_HIGH
> +			 &gpio0 17 GPIO_ACTIVE_HIGH>;
> +		alarm-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH
> +			       &gpio1 12 GPIO_ACTIVE_HIGH
> +			       &gpio1 13 GPIO_ACTIVE_HIGH>;
> +		gpio-fan,speed-map = <    0 0
> +				       2500 1
> +				       3100 2
> +				       3800 3
> +				       4600 4
> +				       4800 5
> +				       4900 6
> +				       5000 7 >;
> +	};
> +	gpio-leds-alarm-12 {
> +		status = "disabled";
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_alarmled_12>;
> +		pinctrl-names = "default";
> +		hdd1-green {
> +			label = "synology:alarm";
> +			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +	gpio-leds-hdd-20 {
> +		status = "disabled";
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_hddled_20 &pmx_hddled_21 &pmx_hddled_22
> +			     &pmx_hddled_23 &pmx_hddled_24 &pmx_hddled_25
> +			     &pmx_hddled_26 &pmx_hddled_27>;
> +		pinctrl-names = "default";
> +		hdd1-green {
> +			label = "synology:green:hdd1";
> +			gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd1-amber {
> +			label = "synology:amber:hdd1";
> +			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-green {
> +			label = "synology:green:hdd2";
> +			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-amber {
> +			label = "synology:amber:hdd2";
> +			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd3-green {
> +			label = "synology:green:hdd3";
> +			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd3-amber {
> +			label = "synology:amber:hdd3";
> +			gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd4-green {
> +			label = "synology:green:hdd4";
> +			gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd4-amber {
> +			label = "synology:amber:hdd4";
> +			gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +	gpio-leds-hdd-21-1 {
> +		status = "disabled";
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_hddled_21 &pmx_hddled_23>;
> +		pinctrl-names = "default";
> +		hdd1-green {
> +			label = "synology:green:hdd1";
> +			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd1-amber {
> +			label = "synology:amber:hdd1";
> +			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +	gpio-leds-hdd-21-2 {
> +		status = "disabled";
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_hddled_21 &pmx_hddled_23 &pmx_hddled_20 &pmx_hddled_22>;
> +		pinctrl-names = "default";
> +		hdd1-green {
> +			label = "synology:green:hdd1";
> +			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd1-amber {
> +			label = "synology:amber:hdd1";
> +			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-green {
> +			label = "synology:green:hdd2";
> +			gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-amber {
> +			label = "synology:amber:hdd2";
> +			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +	gpio-leds-hdd-36 {
> +		status = "disabled";
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_hddled_36 &pmx_hddled_37 &pmx_hddled_38
> +			     &pmx_hddled_39 &pmx_hddled_40 &pmx_hddled_41
> +			     &pmx_hddled_42 &pmx_hddled_43 &pmx_hddled_44
> +			     &pmx_hddled_45>;
> +		pinctrl-names = "default";
> +		hdd1-green {
> +			label = "synology:green:hdd1";
> +			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd1-amber {
> +			label = "synology:amber:hdd1";
> +			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-green {
> +			label = "synology:green:hdd2";
> +			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-amber {
> +			label = "synology:amber:hdd2";
> +			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd3-green {
> +			label = "synology:green:hdd3";
> +			gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd3-amber {
> +			label = "synology:amber:hdd3";
> +			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd4-green {
> +			label = "synology:green:hdd4";
> +			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd4-amber {
> +			label = "synology:amber:hdd4";
> +			gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd5-green {
> +			label = "synology:green:hdd5";
> +			gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd5-amber {
> +			label = "synology:amber:hdd5";
> +			gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +	gpio-leds-hdd-38 {
> +		status = "disabled";
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_hddled_38 &pmx_hddled_39 &pmx_hddled_36 &pmx_hddled_37>;
> +		pinctrl-names = "default";
> +		hdd1-green {
> +			label = "synology:green:hdd1";
> +			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd1-amber {
> +			label = "synology:amber:hdd1";
> +			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-green {
> +			label = "synology:green:hdd2";
> +			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
> +		};
> +		hdd2-amber {
> +			label = "synology:amber:hdd2";
> +			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +	regulators-hdd-29 {
> +		status = "disabled";
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_hdd1_pwr_29 &pmx_hdd2_pwr_31>;
> +		pinctrl-names = "default";
> +
> +		regulator@1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "hdd1power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio0 29 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "hdd2power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio0 31 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +	regulators-hdd-30-1 {
> +		status = "disabled";
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_hdd1_pwr_30>;
> +		pinctrl-names = "default";
> +
> +		regulator@1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "hdd1power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +	regulators-hdd-30-2 {
> +		status = "disabled";
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_hdd1_pwr_30 &pmx_hdd2_pwr_34>;
> +		pinctrl-names = "default";
> +
> +		regulator@1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "hdd1power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "hdd2power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +	regulators-hdd-30-4 {
> +		status = "disabled";
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_hdd1_pwr_30 &pmx_hdd2_pwr_34
> +			     &pmx_hdd3_pwr_44 &pmx_hdd4_pwr_45>;
> +		pinctrl-names = "default";
> +
> +		regulator@1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "hdd1power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "hdd2power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@3 {
> +			compatible = "regulator-fixed";
> +			reg = <3>;
> +			regulator-name = "hdd3power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@4 {
> +			compatible = "regulator-fixed";
> +			reg = <4>;
> +			regulator-name = "hdd4power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 13 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +	regulators-hdd-31 {
> +		status = "disabled";
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_hdd2_pwr_31>;
> +		pinctrl-names = "default";
> +
> +		regulator@1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "hdd2power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio0 31 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +	regulators-hdd-34 {
> +		status = "disabled";
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_hdd2_pwr_34 &pmx_hdd3_pwr_44
> +			     &pmx_hdd4_pwr_45>;
> +		pinctrl-names = "default";
> +
> +		regulator@2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "hdd2power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@3 {
> +			compatible = "regulator-fixed";
> +			reg = <3>;
> +			regulator-name = "hdd3power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
> +		};
> +		regulator@4 {
> +			compatible = "regulator-fixed";
> +			reg = <4>;
> +			regulator-name = "hdd4power";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +			enable-active-high;
> +			regulator-always-on;
> +			regulator-boot-on;
> +			startup-delay-us = <5000000>;
> +			gpio = <&gpio1 13 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +};
> +
> +&mdio {
> +	status = "okay";
> +
> +	ethphy0: ethernet-phy@0 {
> +		device_type = "ethernet-phy";
> +		reg = <8>;
> +	};
> +	ethphy1: ethernet-phy@1 {
> +		device_type = "ethernet-phy";
> +		reg = <9>;
> +	};
> +};
> +
> +&eth0 {
> +	status = "okay";
> +	ethernet0-port@0 {
> +		phy-handle = <&ethphy0>;
> +	};
> +};
> +
> +&eth1 {
> +	status = "disabled";
> +	ethernet1-port@0 {
> +		phy-handle = <&ethphy1>;
> +	};
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds109.dts b/arch/arm/boot/dts/kirkwood-ds109.dts
> new file mode 100644
> index 0000000..9320166
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds109.dts
> @@ -0,0 +1,42 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS109, DS110, DS110jv20";
> +	compatible = "synology,ds109", "synology,ds110jv20",
> +		     "synology,ds110", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-32-35 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-1 {
> +		status = "okay";
> +	};
> +};
> +
> +&rs5c372 {
> +	status = "okay";
> +};
> +
> diff --git a/arch/arm/boot/dts/kirkwood-ds110jv10.dts b/arch/arm/boot/dts/kirkwood-ds110jv10.dts
> new file mode 100644
> index 0000000..09d4fbb
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds110jv10.dts
> @@ -0,0 +1,41 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS110j v10 and v30";
> +	compatible = "synology,ds110jv10", "synology,ds110jv30",
> +		     "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-32-35 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-1 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds111.dts b/arch/arm/boot/dts/kirkwood-ds111.dts
> new file mode 100644
> index 0000000..0369204
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds111.dts
> @@ -0,0 +1,44 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS111";
> +	compatible = "synology,ds111", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-1 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-1 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds112.dts b/arch/arm/boot/dts/kirkwood-ds112.dts
> new file mode 100644
> index 0000000..9a70bf9
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds112.dts
> @@ -0,0 +1,48 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS111";
> +	compatible = "synology,ds111", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-1 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-21-2 {
> +		status = "okay";
> +	};
> +
> +	regulators-hdd-30 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds209.dts b/arch/arm/boot/dts/kirkwood-ds209.dts
> new file mode 100644
> index 0000000..466f584
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds209.dts
> @@ -0,0 +1,44 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS209";
> +	compatible = "synology,ds209", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-32-35 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-2 {
> +		status = "okay";
> +	};
> +
> +	regulators-hdd-31 {
> +		status = "okay";
> +	};
> +};
> +
> +&rs5c372 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds210.dts b/arch/arm/boot/dts/kirkwood-ds210.dts
> new file mode 100644
> index 0000000..0d8a0e1
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds210.dts
> @@ -0,0 +1,46 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS210 v10, v20, v30, DS211j";
> +	compatible = "synology,ds210jv10", "synology,ds210jv20",
> +		     "synology,ds210jv30", "synology,ds211j",
> +		     "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-32-35 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-2 {
> +		status = "okay";
> +	};
> +
> +	regulators-hdd-31 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds212.dts b/arch/arm/boot/dts/kirkwood-ds212.dts
> new file mode 100644
> index 0000000..dd0374e
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds212.dts
> @@ -0,0 +1,47 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS212, DS212p v10, v20, DS213air v10, DS213 v10";
> +	compatible = "synology,ds212", "synology,ds212pv10",
> +		     "synology,ds212pv10", "synology,ds212pv20",
> +		     "synology,ds213airv10", "synology,ds213v10",
> +		     "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-1 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-2 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds212j.dts b/arch/arm/boot/dts/kirkwood-ds212j.dts
> new file mode 100644
> index 0000000..7328044
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds212j.dts
> @@ -0,0 +1,41 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS212j v10, v20";
> +	compatible = "synology,ds212jv10", "synology,ds212jv20",
> +		     "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-32-35 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-21-2 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds409.dts b/arch/arm/boot/dts/kirkwood-ds409.dts
> new file mode 100644
> index 0000000..c6aa57b
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds409.dts
> @@ -0,0 +1,48 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS409, DS410j";
> +	compatible = "synology,ds409", "synology,ds410j", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-15-18 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-36 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-alarm-12 {
> +		status = "okay";
> +	};
> +};
> +
> +&eth1 {
> +	status = "okay";
> +};
> +
> +&rs5c372 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds409slim.dts b/arch/arm/boot/dts/kirkwood-ds409slim.dts
> new file mode 100644
> index 0000000..3c7b5bd
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds409slim.dts
> @@ -0,0 +1,40 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology 409slim";
> +	compatible = "synology,ds409slim", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-32-35 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-20 {
> +		status = "okay";
> +	};
> +};
> +
> +&rs5c372 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds411.dts b/arch/arm/boot/dts/kirkwood-ds411.dts
> new file mode 100644
> index 0000000..c8aa152
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds411.dts
> @@ -0,0 +1,52 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS411, DS413jv10";
> +	compatible = "synology,ds411", "synology,ds413jv10", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-1 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-36 {
> +		status = "okay";
> +	};
> +
> +	regulators-hdd-34 {
> +		status = "okay";
> +	};
> +};
> +
> +&eth1 {
> +	status = "okay";
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds411j.dts b/arch/arm/boot/dts/kirkwood-ds411j.dts
> new file mode 100644
> index 0000000..9546a2d
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds411j.dts
> @@ -0,0 +1,48 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS411j";
> +	compatible = "synology,ds411j", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-15-18 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-36 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-alarm-12 {
> +		status = "okay";
> +	};
> +};
> +
> +&eth1 {
> +	status = "okay";
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ds411slim.dts b/arch/arm/boot/dts/kirkwood-ds411slim.dts
> new file mode 100644
> index 0000000..b2d8ea8
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ds411slim.dts
> @@ -0,0 +1,48 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology DS411slim";
> +	compatible = "synology,ds411slim", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-1 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-36 {
> +		status = "okay";
> +	};
> +};
> +
> +&eth1 {
> +	status = "okay";
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-rs212.dts b/arch/arm/boot/dts/kirkwood-rs212.dts
> new file mode 100644
> index 0000000..3efad06
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-rs212.dts
> @@ -0,0 +1,48 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology RS212";
> +	compatible = "synology,rs212", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-3 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-38 {
> +		status = "okay";
> +	};
> +
> +	regulators-hdd-30-2 {
> +		status = "okay";
> +	};
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-rs409.dts b/arch/arm/boot/dts/kirkwood-rs409.dts
> new file mode 100644
> index 0000000..cddd620
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-rs409.dts
> @@ -0,0 +1,44 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6281.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology RS409";
> +	compatible = "synology,rs409", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-150-15-18 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-36 {
> +		status = "okay";
> +	};
> +};
> +
> +&eth1 {
> +	status = "okay";
> +};
> +
> +&rs5c372 {
> +	status = "okay";
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-rs411.dts b/arch/arm/boot/dts/kirkwood-rs411.dts
> new file mode 100644
> index 0000000..a337a5c
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-rs411.dts
> @@ -0,0 +1,44 @@
> +/*
> + * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> + * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6282.dtsi"
> +#include "kirkwood-ds-rs-common.dtsi"
> +
> +/ {
> +	model = "Synology RS411 RS812";
> +	compatible = "synology,rs411", "synology,rs812", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	gpio-fan-100-15-35-3 {
> +		status = "okay";
> +	};
> +
> +	gpio-leds-hdd-36 {
> +		status = "okay";
> +	};
> +};
> +
> +&eth1 {
> +	status = "okay";
> +};
> +
> +&s35390a {
> +	status = "okay";
> +};
> 

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [PATCH v3] bus: imx-weim: support CS GPR config for imx6q-weim
From: Alexander Shiyan @ 2014-02-16 11:08 UTC (permalink / raw)
  To: Shawn Guo
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Huang Shijie,
	Philippe De Muyter, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	devicetree-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20140216105636.GE2946-rvtDTF3kK1ictlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>

Воскресенье, 16 февраля 2014, 18:56 +08:00 от Shawn Guo <shawn.guo@linaro.org>:
> On Sun, Feb 16, 2014 at 04:38:44PM +0800, Shawn Guo wrote:
> > @@ -56,6 +59,55 @@ static const struct of_device_id weim_id_table[] = {
> >  };
> >  MODULE_DEVICE_TABLE(of, weim_id_table);
> >  
> > +static int __init imx6q_weim_gpr_setup(struct platform_device *pdev)
> > +{
> > +	struct device_node *np = pdev->dev.of_node;
> > +	struct property *prop;
> > +	const __be32 *p;
> > +	struct regmap *gpr;
> > +	u32 gprvals[4] = {
> > +		05,	/* CS0(128M) CS1(0M)  CS2(0M)  CS3(0M) */
> > +		033,	/* CS0(64M)  CS1(64M) CS2(0M)  CS3(0M) */
> > +		0113,	/* CS0(64M)  CS1(32M) CS2(32M) CS3(0M) */
> > +		01111,	/* CS0(64M)  CS1(32M) CS2(32M) CS3(0M) */
> > +	};
> > +	u32 gprval = 0;
> > +	u32 val;
> > +	int cs = 0;
> > +	int i = 0;
> > +
> > +	gpr = syscon_regmap_lookup_by_compatible("fsl,imx6q-iomuxc-gpr");
> 
> When trying to improve the bindings doc imx-weim.txt, I checked hardware
> manuals and found that SoCs imx50, imx53, imx6q, imx6dl and imx6sl all
> need the same CS GPR setup.  It's inappropriate to look up by hard-coded
> compatible "fsl,imx6q-iomuxc-gpr" then.  So I'm going to add the
> property fsl,weim-cs-gpr back, and update bindings doc accordingly.

You can add additional call into struct imx_weim_devtype for handle
soc-specific stuff.

---

^ permalink raw reply

* Re: [PATCH v3] bus: imx-weim: support CS GPR config for imx6q-weim
From: Shawn Guo @ 2014-02-16 10:56 UTC (permalink / raw)
  To: linux-arm-kernel; +Cc: Huang Shijie, Philippe De Muyter, kernel, devicetree
In-Reply-To: <1392539924-23583-1-git-send-email-shawn.guo@linaro.org>

On Sun, Feb 16, 2014 at 04:38:44PM +0800, Shawn Guo wrote:
> @@ -56,6 +59,55 @@ static const struct of_device_id weim_id_table[] = {
>  };
>  MODULE_DEVICE_TABLE(of, weim_id_table);
>  
> +static int __init imx6q_weim_gpr_setup(struct platform_device *pdev)
> +{
> +	struct device_node *np = pdev->dev.of_node;
> +	struct property *prop;
> +	const __be32 *p;
> +	struct regmap *gpr;
> +	u32 gprvals[4] = {
> +		05,	/* CS0(128M) CS1(0M)  CS2(0M)  CS3(0M) */
> +		033,	/* CS0(64M)  CS1(64M) CS2(0M)  CS3(0M) */
> +		0113,	/* CS0(64M)  CS1(32M) CS2(32M) CS3(0M) */
> +		01111,	/* CS0(64M)  CS1(32M) CS2(32M) CS3(0M) */
> +	};
> +	u32 gprval = 0;
> +	u32 val;
> +	int cs = 0;
> +	int i = 0;
> +
> +	gpr = syscon_regmap_lookup_by_compatible("fsl,imx6q-iomuxc-gpr");

When trying to improve the bindings doc imx-weim.txt, I checked hardware
manuals and found that SoCs imx50, imx53, imx6q, imx6dl and imx6sl all
need the same CS GPR setup.  It's inappropriate to look up by hard-coded
compatible "fsl,imx6q-iomuxc-gpr" then.  So I'm going to add the
property fsl,weim-cs-gpr back, and update bindings doc accordingly.

Shawn

> +	if (IS_ERR(gpr)) {
> +		dev_err(&pdev->dev, "failed to find fsl,imx6q-iomuxc-gpr\n");
> +		return -ENOENT;
> +	}
> +
> +	of_property_for_each_u32(np, "ranges", prop, p, val) {
> +		if (i % 4 == 0) {
> +			cs = val;
> +		} else if (i % 4 == 3 && val) {
> +			val = (val / SZ_32M) | 1;
> +			gprval |= val << cs * 3;
> +		}
> +		i++;
> +	}
> +
> +	if (i == 0 || i % 4)
> +		goto err;
> +
> +	for (i = 0; i < ARRAY_SIZE(gprvals); i++) {
> +		if (gprval == gprvals[i]) {
> +			/* Found it. Set up IOMUXC_GPR1[11:0] with it. */
> +			regmap_update_bits(gpr, IOMUXC_GPR1, 0xfff, gprval);
> +			return 0;
> +		}
> +	}
> +
> +err:
> +	dev_err(&pdev->dev, "Invalid 'ranges' configuration\n");
> +	return -EINVAL;
> +}
> +
>  /* Parse and set the timing for this device. */
>  static int __init weim_timing_setup(struct device_node *np, void __iomem *base,
>  				    const struct imx_weim_devtype *devtype)
> @@ -92,6 +144,9 @@ static int __init weim_parse_dt(struct platform_device *pdev,
>  	struct device_node *child;
>  	int ret;
>  
> +	if (of_device_is_compatible(pdev->dev.of_node, "fsl,imx6q-weim"))
> +		imx6q_weim_gpr_setup(pdev);
> +
>  	for_each_child_of_node(pdev->dev.of_node, child) {
>  		if (!child->name)
>  			continue;
> -- 
> 1.7.9.5
> 
> 

^ permalink raw reply

* [PATCH v3 4/4] ARM: Kirkwood: Add support for many Synology NAS devices
From: klightspeed-aslSrjg9ejhWX4hkXwHRhw @ 2014-02-16 10:27 UTC (permalink / raw)
  To: Jason Cooper
  Cc: Linux ARM Kernel, devicetree-u79uwXL29TY76Z2rM5mHXA, Andrew Lunn,
	Rob Herring, Ian Campbell, pawell.moll-5wv7dgnIgG8, Mark Rutland,
	Kumar Gala

Add device tree fragments and files to support many of the kirkwood
based Synology NAS devices. This is a modification of 
Andrew Lunn's <andrew-g2DYL2Zd6BY@public.gmane.org> translation of the board setup file 
maintained by Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>

The Ricoh RS5C372 RTC was used in all 2009 units and some 2010 units.
All other Synology Kirkwood-based DiskStations and RackStations use 
the Seiko S35390A RTC.

Most of the 1-bay and 2-bay units use the GPIOs that are multiplexed
with the built-in SATA interface activity/presence pins on mpp 20-23,
while the 4-bay units use ge01 and a PCIe SATA controller, and put the
software controlled HDD leds on mpp 36-43.

Most of the 6281 units with HDD power controls use mpp 29 and 31, while
most of the 6282 units with HDD power controls use mpp 30, 34, 44 and 45
and provide a model ID on mpp 28, 29, 46 and 47.  Pre-2012 units and
most 4-bay units didn't have a separate power control for HDD1.  These 
power controls are presumably to limit startup current from the 12V brick
power supply.

Instead of using separate dtsi files in a synology directory, this
patch uses a single dtsi file containing all of the modules for
these boards, with all of the modules not common to all boards
disabled.  The board dts files then enable the appropriate modules for
their boards.

Signed-off-by: Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
Tested-by: Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org> (ds211j)
---
 arch/arm/boot/dts/Makefile                   |  15 +
 arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi | 764 +++++++++++++++++++++++++++
 arch/arm/boot/dts/kirkwood-ds109.dts         |  42 ++
 arch/arm/boot/dts/kirkwood-ds110jv10.dts     |  41 ++
 arch/arm/boot/dts/kirkwood-ds111.dts         |  44 ++
 arch/arm/boot/dts/kirkwood-ds112.dts         |  48 ++
 arch/arm/boot/dts/kirkwood-ds209.dts         |  44 ++
 arch/arm/boot/dts/kirkwood-ds210.dts         |  46 ++
 arch/arm/boot/dts/kirkwood-ds212.dts         |  47 ++
 arch/arm/boot/dts/kirkwood-ds212j.dts        |  41 ++
 arch/arm/boot/dts/kirkwood-ds409.dts         |  48 ++
 arch/arm/boot/dts/kirkwood-ds409slim.dts     |  40 ++
 arch/arm/boot/dts/kirkwood-ds411.dts         |  52 ++
 arch/arm/boot/dts/kirkwood-ds411j.dts        |  48 ++
 arch/arm/boot/dts/kirkwood-ds411slim.dts     |  48 ++
 arch/arm/boot/dts/kirkwood-rs212.dts         |  48 ++
 arch/arm/boot/dts/kirkwood-rs409.dts         |  44 ++
 arch/arm/boot/dts/kirkwood-rs411.dts         |  44 ++
 18 files changed, 1503 insertions(+)
 create mode 100644 arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi
 create mode 100644 arch/arm/boot/dts/kirkwood-ds109.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds110jv10.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds111.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds112.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds209.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds210.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds212.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds212j.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds409.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds409slim.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds411.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds411j.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds411slim.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-rs212.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-rs409.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-rs411.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index b9d6a8b..6cf3a54 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -89,6 +89,18 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
 	kirkwood-dns325.dtb \
 	kirkwood-dockstar.dtb \
 	kirkwood-dreamplug.dtb \
+	kirkwood-ds109.dtb \
+	kirkwood-ds110jv10.dtb \
+	kirkwood-ds111.dtb \
+	kirkwood-ds209.dtb \
+	kirkwood-ds210.dtb \
+	kirkwood-ds212.dtb \
+	kirkwood-ds212j.dtb \
+	kirkwood-ds409.dtb \
+	kirkwood-ds409slim.dtb \
+	kirkwood-ds411.dtb \
+	kirkwood-ds411j.dtb \
+	kirkwood-ds411slim.dtb \
 	kirkwood-goflexnet.dtb \
 	kirkwood-guruplug-server-plus.dtb \
 	kirkwood-ib62x0.dtb \
@@ -111,6 +123,9 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
 	kirkwood-nsa310a.dtb \
 	kirkwood-openblocks_a6.dtb \
 	kirkwood-openblocks_a7.dtb \
+	kirkwood-rs212.dtb \
+	kirkwood-rs409.dtb \
+	kirkwood-rs411.dtb \
 	kirkwood-sheevaplug.dtb \
 	kirkwood-sheevaplug-esata.dtb \
 	kirkwood-topkick.dtb \
diff --git a/arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi b/arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi
new file mode 100644
index 0000000..65f0b9d
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi
@@ -0,0 +1,764 @@
+/*
+ * Nodes for Marvell 628x Synology devices
+ *
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	mbus {
+		pcie-controller {
+			status = "okay";
+
+			pcie@1,0 {
+				status = "okay";
+			};
+			pcie2: pcie@2,0 {
+				status = "disabled";
+			};
+		};
+	};
+	ocp@f1000000 {
+		pinctrl: pinctrl@10000 {
+			pmx_alarmled_12: pmx-alarmled-12 {
+				marvell,pins = "mpp12";
+				marvell,function = "gpio";
+			};
+			pmx_fanctrl_15: pmx-fanctrl-15 {
+				marvell,pins = "mpp15";
+				marvell,function = "gpio";
+			};
+			pmx_fanctrl_16: pmx-fanctrl-16 {
+				marvell,pins = "mpp16";
+				marvell,function = "gpio";
+			};
+			pmx_fanctrl_17: pmx-fanctrl-17 {
+				marvell,pins = "mpp17";
+				marvell,function = "gpio";
+			};
+			pmx_fanalarm_18: pmx-fanalarm-18 {
+				marvell,pins = "mpp18";
+				marvell,function = "gpo";
+			};
+			pmx_hddled_20: pmx-hddled-20 {
+				marvell,pins = "mpp20";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_21: pmx-hddled-21 {
+				marvell,pins = "mpp21";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_22: pmx-hddled-22 {
+				marvell,pins = "mpp22";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_23: pmx-hddled-23 {
+				marvell,pins = "mpp23";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_24: pmx-hddled-24 {
+				marvell,pins = "mpp24";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_25: pmx-hddled-25 {
+				marvell,pins = "mpp25";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_26: pmx-hddled-26 {
+				marvell,pins = "mpp26";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_27: pmx-hddled-27 {
+				marvell,pins = "mpp27";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_28: pmx-hddled-28 {
+				marvell,pins = "mpp28";
+				marvell,function = "gpio";
+			};
+			pmx_hdd1_pwr_29: pmx-hdd1-pwr-29 {
+				marvell,pins = "mpp29";
+				marvell,function = "gpio";
+			};
+			pmx_hdd1_pwr_30: pmx-hdd-pwr-30 {
+				marvell,pins = "mpp30";
+				marvell,function = "gpio";
+			};
+			pmx_hdd2_pwr_31: pmx-hdd2-pwr-31 {
+				marvell,pins = "mpp31";
+				marvell,function = "gpio";
+			};
+			pmx_fanctrl_32: pmx-fanctrl-32 {
+				marvell,pins = "mpp32";
+				marvell,function = "gpio";
+			};
+			pmx_fanctrl_33: pmx-fanctrl-33 {
+				marvell,pins = "mpp33";
+				marvell,function = "gpo";
+			};
+			pmx_fanctrl_34: pmx-fanctrl-34 {
+				marvell,pins = "mpp34";
+				marvell,function = "gpio";
+			};
+			pmx_hdd2_pwr_34: pmx-hdd2-pwr-34 {
+				marvell,pins = "mpp34";
+				marvell,function = "gpio";
+			};
+			pmx_fanalarm_35: pmx-fanalarm-35 {
+				marvell,pins = "mpp35";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_36: pmx-hddled-36 {
+				marvell,pins = "mpp36";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_37: pmx-hddled-37 {
+				marvell,pins = "mpp37";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_38: pmx-hddled-38 {
+				marvell,pins = "mpp38";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_39: pmx-hddled-39 {
+				marvell,pins = "mpp39";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_40: pmx-hddled-40 {
+				marvell,pins = "mpp40";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_41: pmx-hddled-41 {
+				marvell,pins = "mpp41";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_42: pmx-hddled-42 {
+				marvell,pins = "mpp42";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_43: pmx-hddled-43 {
+				marvell,pins = "mpp43";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_44: pmx-hddled-44 {
+				marvell,pins = "mpp44";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_45: pmx-hddled-45 {
+				marvell,pins = "mpp45";
+				marvell,function = "gpio";
+			};
+			pmx_hdd3_pwr_44: pmx-hdd3-pwr-44 {
+				marvell,pins = "mpp44";
+				marvell,function = "gpio";
+			};
+			pmx_hdd4_pwr_45: pmx-hdd4-pwr-45 {
+				marvell,pins = "mpp45";
+				marvell,function = "gpio";
+			};
+			pmx_fanalarm_44: pmx-fanalarm-44 {
+				marvell,pins = "mpp44";
+				marvell,function = "gpio";
+			};
+			pmx_fanalarm_45: pmx-fanalarm-45 {
+				marvell,pins = "mpp45";
+				marvell,function = "gpio";
+			};
+		};		
+		i2c@11000 {
+			status = "okay";
+			clock-frequency = <400000>;
+			pinctrl-0 = <&pmx_twsi0>;
+			pinctrl-names = "default";
+			rs5c372: rs5c372@32 {
+				status = "disabled";
+				compatible = "rs5c372";
+				reg = <0x32>;
+			};
+			s35390a: s35390a@30 {
+				status = "disabled";
+				compatible = "s35390a";
+				reg = <0x30>;
+			};
+		};
+		serial@12000 {
+			status = "okay";
+			pinctrl-0 = <&pmx_uart0>;
+			pinctrl-names = "default";
+		};
+		serial@12100 {
+			status = "okay";
+			pinctrl-0 = <&pmx_uart1>;
+			pinctrl-names = "default";
+		};
+		poweroff@12100 {
+			compatible = "synology,power-off";
+			reg = <0x12000 0x100>;
+			clocks = <&gate_clk 7>;
+		};
+		spi@10600 {
+			status = "okay";
+			pinctrl-0 = <&pmx_spi>;
+			pinctrl-names = "default";
+
+			m25p80@0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "m25p80";
+				reg = <0>;
+				spi-max-frequency = <20000000>;
+				mode = <0>;
+
+				partition@00000000 {
+					reg = <0x00000000 0x00080000>;
+					label = "RedBoot";
+				};
+
+				partition@00080000 {
+					reg = <0x00080000 0x00200000>;
+					label = "zImage";
+				};
+
+				partition@00280000 {
+					reg = <0x00280000 0x00140000>;
+					label = "rd.gz";
+				};
+				partition@003c0000 {
+					reg = <0x003c0000 0x00010000>;
+					label = "vendor";
+				};
+				partition@003d0000 {
+					reg = <0x003d0000 0x00020000>;
+					label = "RedBoot config";
+				};
+				partition@003f0000 {
+					reg = <0x003f0000 0x00010000>;
+					label = "FIS directory";
+				};
+			};
+		};
+		sata@80000 {
+			pinctrl-0 = <&pmx_sata0 &pmx_sata1>;
+			pinctrl-names = "default";
+			status = "okay";
+			nr-ports = <2>;
+		};
+	};
+	gpio-fan-150-32-35 {
+		status = "disabled";
+		compatible = "gpio-fan";
+		pinctrl-0 = <&pmx_fanctrl_32 &pmx_fanctrl_33 &pmx_fanctrl_34
+		             &pmx_fanalarm_35>;
+		pinctrl-names = "default";
+		gpios = <&gpio1 0 GPIO_ACTIVE_HIGH
+			 &gpio1 1 GPIO_ACTIVE_HIGH
+			 &gpio1 2 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map = <    0 0
+				       2200 1
+				       2500 2
+				       3000 4
+				       3300 3
+				       3700 5
+				       3800 6
+				       4200 7 >;
+	};
+	gpio-fan-150-15-18 {
+		status = "disabled";
+		compatible = "gpio-fan";
+		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17
+		             &pmx_fanalarm_18>;
+		pinctrl-names = "default";
+		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
+			 &gpio0 16 GPIO_ACTIVE_HIGH
+			 &gpio0 17 GPIO_ACTIVE_HIGH>;
+		alarm-gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map = <    0 0
+				       2200 1
+				       2500 2
+				       3000 4
+				       3300 3
+				       3700 5
+				       3800 6
+				       4200 7 >;
+	};
+	gpio-fan-100-32-35 {
+		status = "disabled";
+		compatible = "gpio-fan";
+		pinctrl-0 = <&pmx_fanctrl_32 &pmx_fanctrl_33 &pmx_fanctrl_34 
+		             &pmx_fanalarm_35>;
+		pinctrl-names = "default";
+		gpios = <&gpio1 0 GPIO_ACTIVE_HIGH
+			 &gpio1 1 GPIO_ACTIVE_HIGH
+			 &gpio1 2 GPIO_ACTIVE_HIGH>;
+		alarm-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map = <    0 0
+				       2500 1
+				       3100 2
+				       3800 3
+				       4600 4
+				       4800 5
+				       4900 6
+				       5000 7 >;
+	};
+	gpio-fan-100-15-18 {
+		status = "disabled";
+		compatible = "gpio-fan";
+		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17 
+		             &pmx_fanalarm_18>;
+		pinctrl-names = "default";
+		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
+			 &gpio0 16 GPIO_ACTIVE_HIGH
+			 &gpio0 17 GPIO_ACTIVE_HIGH>;
+		alarm-gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map = <    0 0
+				       2500 1
+				       3100 2
+				       3800 3
+				       4600 4
+				       4800 5
+				       4900 6
+				       5000 7 >;
+	};
+	gpio-fan-100-15-35-1 {
+		status = "disabled";
+		compatible = "gpio-fan";
+		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17 
+		             &pmx_fanalarm_35>;
+		pinctrl-names = "default";
+		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
+			 &gpio0 16 GPIO_ACTIVE_HIGH
+			 &gpio0 17 GPIO_ACTIVE_HIGH>;
+		alarm-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map = <    0 0
+				       2500 1
+				       3100 2
+				       3800 3
+				       4600 4
+				       4800 5
+				       4900 6
+				       5000 7 >;
+	};
+	gpio-fan-100-15-35-3 {
+		status = "disabled";
+		compatible = "gpio-fan";
+		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17
+		             &pmx_fanalarm_35 &pmx_fanalarm_44 &pmx_fanalarm_45>;
+		pinctrl-names = "default";
+		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
+			 &gpio0 16 GPIO_ACTIVE_HIGH
+			 &gpio0 17 GPIO_ACTIVE_HIGH>;
+		alarm-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH
+			       &gpio1 12 GPIO_ACTIVE_HIGH
+			       &gpio1 13 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map = <    0 0
+				       2500 1
+				       3100 2
+				       3800 3
+				       4600 4
+				       4800 5
+				       4900 6
+				       5000 7 >;
+	};
+	gpio-leds-alarm-12 {
+		status = "disabled";
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_alarmled_12>;
+		pinctrl-names = "default";
+		hdd1-green {
+			label = "synology:alarm";
+			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
+		};
+	};
+	gpio-leds-hdd-20 {
+		status = "disabled";
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_hddled_20 &pmx_hddled_21 &pmx_hddled_22
+			     &pmx_hddled_23 &pmx_hddled_24 &pmx_hddled_25
+			     &pmx_hddled_26 &pmx_hddled_27>;
+		pinctrl-names = "default";
+		hdd1-green {
+			label = "synology:green:hdd1";
+			gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
+		};
+		hdd1-amber {
+			label = "synology:amber:hdd1";
+			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-green {
+			label = "synology:green:hdd2";
+			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-amber {
+			label = "synology:amber:hdd2";
+			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
+		};
+		hdd3-green {
+			label = "synology:green:hdd3";
+			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
+		};
+		hdd3-amber {
+			label = "synology:amber:hdd3";
+			gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
+		};
+		hdd4-green {
+			label = "synology:green:hdd4";
+			gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
+		};
+		hdd4-amber {
+			label = "synology:amber:hdd4";
+			gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
+		};
+	};
+	gpio-leds-hdd-21-1 {
+		status = "disabled";
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_hddled_21 &pmx_hddled_23>;
+		pinctrl-names = "default";
+		hdd1-green {
+			label = "synology:green:hdd1";
+			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
+		};
+		hdd1-amber {
+			label = "synology:amber:hdd1";
+			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
+		};
+	};
+	gpio-leds-hdd-21-2 {
+		status = "disabled";
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_hddled_21 &pmx_hddled_23 &pmx_hddled_20 &pmx_hddled_22>;
+		pinctrl-names = "default";
+		hdd1-green {
+			label = "synology:green:hdd1";
+			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
+		};
+		hdd1-amber {
+			label = "synology:amber:hdd1";
+			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-green {
+			label = "synology:green:hdd2";
+			gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-amber {
+			label = "synology:amber:hdd2";
+			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
+		};
+	};
+	gpio-leds-hdd-36 {
+		status = "disabled";
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_hddled_36 &pmx_hddled_37 &pmx_hddled_38
+			     &pmx_hddled_39 &pmx_hddled_40 &pmx_hddled_41
+			     &pmx_hddled_42 &pmx_hddled_43 &pmx_hddled_44
+			     &pmx_hddled_45>;
+		pinctrl-names = "default";
+		hdd1-green {
+			label = "synology:green:hdd1";
+			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
+		};
+		hdd1-amber {
+			label = "synology:amber:hdd1";
+			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-green {
+			label = "synology:green:hdd2";
+			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-amber {
+			label = "synology:amber:hdd2";
+			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+		};
+		hdd3-green {
+			label = "synology:green:hdd3";
+			gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+		};
+		hdd3-amber {
+			label = "synology:amber:hdd3";
+			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
+		};
+		hdd4-green {
+			label = "synology:green:hdd4";
+			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+		};
+		hdd4-amber {
+			label = "synology:amber:hdd4";
+			gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
+		};
+		hdd5-green {
+			label = "synology:green:hdd5";
+			gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+		};
+		hdd5-amber {
+			label = "synology:amber:hdd5";
+			gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
+		};
+	};
+	gpio-leds-hdd-38 {
+		status = "disabled";
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_hddled_38 &pmx_hddled_39 &pmx_hddled_36 &pmx_hddled_37>;
+		pinctrl-names = "default";
+		hdd1-green {
+			label = "synology:green:hdd1";
+			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		};
+		hdd1-amber {
+			label = "synology:amber:hdd1";
+			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-green {
+			label = "synology:green:hdd2";
+			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-amber {
+			label = "synology:amber:hdd2";
+			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
+		};
+	};
+	regulators-hdd-29 {
+		status = "disabled";
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_hdd1_pwr_29 &pmx_hdd2_pwr_31>;
+		pinctrl-names = "default";
+
+		regulator@1 {
+			compatible = "regulator-fixed";
+			reg = <1>;
+			regulator-name = "hdd1power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio0 29 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@2 {
+			compatible = "regulator-fixed";
+			reg = <2>;
+			regulator-name = "hdd2power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio0 31 GPIO_ACTIVE_HIGH>;
+		};
+	};
+	regulators-hdd-30-1 {
+		status = "disabled";
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_hdd1_pwr_30>;
+		pinctrl-names = "default";
+
+		regulator@1 {
+			compatible = "regulator-fixed";
+			reg = <1>;
+			regulator-name = "hdd1power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
+		};
+	};
+	regulators-hdd-30-2 {
+		status = "disabled";
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_hdd1_pwr_30 &pmx_hdd2_pwr_34>;
+		pinctrl-names = "default";
+
+		regulator@1 {
+			compatible = "regulator-fixed";
+			reg = <1>;
+			regulator-name = "hdd1power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@2 {
+			compatible = "regulator-fixed";
+			reg = <2>;
+			regulator-name = "hdd2power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
+		};
+	};
+	regulators-hdd-30-4 {
+		status = "disabled";
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_hdd1_pwr_30 &pmx_hdd2_pwr_34
+			     &pmx_hdd3_pwr_44 &pmx_hdd4_pwr_45>;
+		pinctrl-names = "default";
+
+		regulator@1 {
+			compatible = "regulator-fixed";
+			reg = <1>;
+			regulator-name = "hdd1power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@2 {
+			compatible = "regulator-fixed";
+			reg = <2>;
+			regulator-name = "hdd2power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@3 {
+			compatible = "regulator-fixed";
+			reg = <3>;
+			regulator-name = "hdd3power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@4 {
+			compatible = "regulator-fixed";
+			reg = <4>;
+			regulator-name = "hdd4power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 13 GPIO_ACTIVE_HIGH>;
+		};
+	};
+	regulators-hdd-31 {
+		status = "disabled";
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_hdd2_pwr_31>;
+		pinctrl-names = "default";
+
+		regulator@1 {
+			compatible = "regulator-fixed";
+			reg = <1>;
+			regulator-name = "hdd2power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio0 31 GPIO_ACTIVE_HIGH>;
+		};
+	};
+	regulators-hdd-34 {
+		status = "disabled";
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_hdd2_pwr_34 &pmx_hdd3_pwr_44
+			     &pmx_hdd4_pwr_45>;
+		pinctrl-names = "default";
+
+		regulator@2 {
+			compatible = "regulator-fixed";
+			reg = <2>;
+			regulator-name = "hdd2power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@3 {
+			compatible = "regulator-fixed";
+			reg = <3>;
+			regulator-name = "hdd3power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@4 {
+			compatible = "regulator-fixed";
+			reg = <4>;
+			regulator-name = "hdd4power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 13 GPIO_ACTIVE_HIGH>;
+		};
+	};
+};
+
+&mdio {
+	status = "okay";
+
+	ethphy0: ethernet-phy@0 {
+		device_type = "ethernet-phy";
+		reg = <8>;
+	};
+	ethphy1: ethernet-phy@1 {
+		device_type = "ethernet-phy";
+		reg = <9>;
+	};
+};
+
+&eth0 {
+	status = "okay";
+	ethernet0-port@0 {
+		phy-handle = <&ethphy0>;
+	};
+};
+
+&eth1 {
+	status = "disabled";
+	ethernet1-port@0 {
+		phy-handle = <&ethphy1>;
+	};
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds109.dts b/arch/arm/boot/dts/kirkwood-ds109.dts
new file mode 100644
index 0000000..9320166
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds109.dts
@@ -0,0 +1,42 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS109, DS110, DS110jv20";
+	compatible = "synology,ds109", "synology,ds110jv20",
+		     "synology,ds110", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-32-35 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-1 {
+		status = "okay";
+	};
+};
+
+&rs5c372 {
+	status = "okay";
+};
+
diff --git a/arch/arm/boot/dts/kirkwood-ds110jv10.dts b/arch/arm/boot/dts/kirkwood-ds110jv10.dts
new file mode 100644
index 0000000..09d4fbb
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds110jv10.dts
@@ -0,0 +1,41 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS110j v10 and v30";
+	compatible = "synology,ds110jv10", "synology,ds110jv30",
+		     "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-32-35 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-1 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds111.dts b/arch/arm/boot/dts/kirkwood-ds111.dts
new file mode 100644
index 0000000..0369204
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds111.dts
@@ -0,0 +1,44 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS111";
+	compatible = "synology,ds111", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-1 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-1 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds112.dts b/arch/arm/boot/dts/kirkwood-ds112.dts
new file mode 100644
index 0000000..9a70bf9
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds112.dts
@@ -0,0 +1,48 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS111";
+	compatible = "synology,ds111", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-1 {
+		status = "okay";
+	};
+
+	gpio-leds-21-2 {
+		status = "okay";
+	};
+
+	regulators-hdd-30 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds209.dts b/arch/arm/boot/dts/kirkwood-ds209.dts
new file mode 100644
index 0000000..466f584
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds209.dts
@@ -0,0 +1,44 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS209";
+	compatible = "synology,ds209", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-32-35 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-2 {
+		status = "okay";
+	};
+
+	regulators-hdd-31 {
+		status = "okay";
+	};
+};
+
+&rs5c372 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds210.dts b/arch/arm/boot/dts/kirkwood-ds210.dts
new file mode 100644
index 0000000..0d8a0e1
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds210.dts
@@ -0,0 +1,46 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS210 v10, v20, v30, DS211j";
+	compatible = "synology,ds210jv10", "synology,ds210jv20",
+		     "synology,ds210jv30", "synology,ds211j",
+		     "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-32-35 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-2 {
+		status = "okay";
+	};
+
+	regulators-hdd-31 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds212.dts b/arch/arm/boot/dts/kirkwood-ds212.dts
new file mode 100644
index 0000000..dd0374e
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds212.dts
@@ -0,0 +1,47 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS212, DS212p v10, v20, DS213air v10, DS213 v10";
+	compatible = "synology,ds212", "synology,ds212pv10",
+		     "synology,ds212pv10", "synology,ds212pv20",
+		     "synology,ds213airv10", "synology,ds213v10",
+		     "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-1 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-2 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds212j.dts b/arch/arm/boot/dts/kirkwood-ds212j.dts
new file mode 100644
index 0000000..7328044
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds212j.dts
@@ -0,0 +1,41 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS212j v10, v20";
+	compatible = "synology,ds212jv10", "synology,ds212jv20",
+		     "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-32-35 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-2 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds409.dts b/arch/arm/boot/dts/kirkwood-ds409.dts
new file mode 100644
index 0000000..c6aa57b
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds409.dts
@@ -0,0 +1,48 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS409, DS410j";
+	compatible = "synology,ds409", "synology,ds410j", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-15-18 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-36 {
+		status = "okay";
+	};
+
+	gpio-leds-alarm-12 {
+		status = "okay";
+	};
+};
+
+&eth1 {
+	status = "okay";
+};
+
+&rs5c372 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds409slim.dts b/arch/arm/boot/dts/kirkwood-ds409slim.dts
new file mode 100644
index 0000000..3c7b5bd
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds409slim.dts
@@ -0,0 +1,40 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology 409slim";
+	compatible = "synology,ds409slim", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-32-35 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-20 {
+		status = "okay";
+	};
+};
+
+&rs5c372 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds411.dts b/arch/arm/boot/dts/kirkwood-ds411.dts
new file mode 100644
index 0000000..c8aa152
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds411.dts
@@ -0,0 +1,52 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS411, DS413jv10";
+	compatible = "synology,ds411", "synology,ds413jv10", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-1 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-36 {
+		status = "okay";
+	};
+
+	regulators-hdd-34 {
+		status = "okay";
+	};
+};
+
+&eth1 {
+	status = "okay";
+};
+
+&s35390a {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds411j.dts b/arch/arm/boot/dts/kirkwood-ds411j.dts
new file mode 100644
index 0000000..9546a2d
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds411j.dts
@@ -0,0 +1,48 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS411j";
+	compatible = "synology,ds411j", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-15-18 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-36 {
+		status = "okay";
+	};
+
+	gpio-leds-alarm-12 {
+		status = "okay";
+	};
+};
+
+&eth1 {
+	status = "okay";
+};
+
+&s35390a {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds411slim.dts b/arch/arm/boot/dts/kirkwood-ds411slim.dts
new file mode 100644
index 0000000..b2d8ea8
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds411slim.dts
@@ -0,0 +1,48 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS411slim";
+	compatible = "synology,ds411slim", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-1 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-36 {
+		status = "okay";
+	};
+};
+
+&eth1 {
+	status = "okay";
+};
+
+&s35390a {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-rs212.dts b/arch/arm/boot/dts/kirkwood-rs212.dts
new file mode 100644
index 0000000..3efad06
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-rs212.dts
@@ -0,0 +1,48 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology RS212";
+	compatible = "synology,rs212", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-3 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-38 {
+		status = "okay";
+	};
+
+	regulators-hdd-30-2 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-rs409.dts b/arch/arm/boot/dts/kirkwood-rs409.dts
new file mode 100644
index 0000000..cddd620
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-rs409.dts
@@ -0,0 +1,44 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology RS409";
+	compatible = "synology,rs409", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-15-18 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-36 {
+		status = "okay";
+	};
+};
+
+&eth1 {
+	status = "okay";
+};
+
+&rs5c372 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-rs411.dts b/arch/arm/boot/dts/kirkwood-rs411.dts
new file mode 100644
index 0000000..a337a5c
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-rs411.dts
@@ -0,0 +1,44 @@
+/*
+ * Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
+ * Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology RS411 RS812";
+	compatible = "synology,rs411", "synology,rs812", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-3 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-36 {
+		status = "okay";
+	};
+};
+
+&eth1 {
+	status = "okay";
+};
+
+&s35390a {
+	status = "okay";
+};
-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related

* [PATCH v3 4/4] ARM: Kirkwood: Add support for many Synology NAS devices
From: klightspeed @ 2014-02-16 10:27 UTC (permalink / raw)
  To: Jason Cooper
  Cc: Mark Rutland, devicetree, pawell.moll, Ian Campbell, Andrew Lunn,
	Kumar Gala, Linux ARM Kernel

Add device tree fragments and files to support many of the kirkwood
based Synology NAS devices. This is a modification of 
Andrew Lunn's <andrew@lunn.ch> translation of the board setup file 
maintained by Ben Peddell <klightspeed@killerwolves.net>

The Ricoh RS5C372 RTC was used in all 2009 units and some 2010 units.
All other Synology Kirkwood-based DiskStations and RackStations use 
the Seiko S35390A RTC.

Most of the 1-bay and 2-bay units use the GPIOs that are multiplexed
with the built-in SATA interface activity/presence pins on mpp 20-23,
while the 4-bay units use ge01 and a PCIe SATA controller, and put the
software controlled HDD leds on mpp 36-43.

Most of the 6281 units with HDD power controls use mpp 29 and 31, while
most of the 6282 units with HDD power controls use mpp 30, 34, 44 and 45
and provide a model ID on mpp 28, 29, 46 and 47.  Pre-2012 units and
most 4-bay units didn't have a separate power control for HDD1.  These 
power controls are presumably to limit startup current from the 12V brick
power supply.

Instead of using separate dtsi files in a synology directory, this
patch uses a single dtsi file containing all of the modules for
these boards, with all of the modules not common to all boards
disabled.  The board dts files then enable the appropriate modules for
their boards.

Signed-off-by: Ben Peddell <klightspeed@killerwolves.net>
Tested-by: Ben Peddell <klightspeed@killerwolves.net> (ds211j)
---
 arch/arm/boot/dts/Makefile                   |  15 +
 arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi | 764 +++++++++++++++++++++++++++
 arch/arm/boot/dts/kirkwood-ds109.dts         |  42 ++
 arch/arm/boot/dts/kirkwood-ds110jv10.dts     |  41 ++
 arch/arm/boot/dts/kirkwood-ds111.dts         |  44 ++
 arch/arm/boot/dts/kirkwood-ds112.dts         |  48 ++
 arch/arm/boot/dts/kirkwood-ds209.dts         |  44 ++
 arch/arm/boot/dts/kirkwood-ds210.dts         |  46 ++
 arch/arm/boot/dts/kirkwood-ds212.dts         |  47 ++
 arch/arm/boot/dts/kirkwood-ds212j.dts        |  41 ++
 arch/arm/boot/dts/kirkwood-ds409.dts         |  48 ++
 arch/arm/boot/dts/kirkwood-ds409slim.dts     |  40 ++
 arch/arm/boot/dts/kirkwood-ds411.dts         |  52 ++
 arch/arm/boot/dts/kirkwood-ds411j.dts        |  48 ++
 arch/arm/boot/dts/kirkwood-ds411slim.dts     |  48 ++
 arch/arm/boot/dts/kirkwood-rs212.dts         |  48 ++
 arch/arm/boot/dts/kirkwood-rs409.dts         |  44 ++
 arch/arm/boot/dts/kirkwood-rs411.dts         |  44 ++
 18 files changed, 1503 insertions(+)
 create mode 100644 arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi
 create mode 100644 arch/arm/boot/dts/kirkwood-ds109.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds110jv10.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds111.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds112.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds209.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds210.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds212.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds212j.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds409.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds409slim.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds411.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds411j.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ds411slim.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-rs212.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-rs409.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-rs411.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index b9d6a8b..6cf3a54 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -89,6 +89,18 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
 	kirkwood-dns325.dtb \
 	kirkwood-dockstar.dtb \
 	kirkwood-dreamplug.dtb \
+	kirkwood-ds109.dtb \
+	kirkwood-ds110jv10.dtb \
+	kirkwood-ds111.dtb \
+	kirkwood-ds209.dtb \
+	kirkwood-ds210.dtb \
+	kirkwood-ds212.dtb \
+	kirkwood-ds212j.dtb \
+	kirkwood-ds409.dtb \
+	kirkwood-ds409slim.dtb \
+	kirkwood-ds411.dtb \
+	kirkwood-ds411j.dtb \
+	kirkwood-ds411slim.dtb \
 	kirkwood-goflexnet.dtb \
 	kirkwood-guruplug-server-plus.dtb \
 	kirkwood-ib62x0.dtb \
@@ -111,6 +123,9 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
 	kirkwood-nsa310a.dtb \
 	kirkwood-openblocks_a6.dtb \
 	kirkwood-openblocks_a7.dtb \
+	kirkwood-rs212.dtb \
+	kirkwood-rs409.dtb \
+	kirkwood-rs411.dtb \
 	kirkwood-sheevaplug.dtb \
 	kirkwood-sheevaplug-esata.dtb \
 	kirkwood-topkick.dtb \
diff --git a/arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi b/arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi
new file mode 100644
index 0000000..65f0b9d
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds-rs-common.dtsi
@@ -0,0 +1,764 @@
+/*
+ * Nodes for Marvell 628x Synology devices
+ *
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	mbus {
+		pcie-controller {
+			status = "okay";
+
+			pcie@1,0 {
+				status = "okay";
+			};
+			pcie2: pcie@2,0 {
+				status = "disabled";
+			};
+		};
+	};
+	ocp@f1000000 {
+		pinctrl: pinctrl@10000 {
+			pmx_alarmled_12: pmx-alarmled-12 {
+				marvell,pins = "mpp12";
+				marvell,function = "gpio";
+			};
+			pmx_fanctrl_15: pmx-fanctrl-15 {
+				marvell,pins = "mpp15";
+				marvell,function = "gpio";
+			};
+			pmx_fanctrl_16: pmx-fanctrl-16 {
+				marvell,pins = "mpp16";
+				marvell,function = "gpio";
+			};
+			pmx_fanctrl_17: pmx-fanctrl-17 {
+				marvell,pins = "mpp17";
+				marvell,function = "gpio";
+			};
+			pmx_fanalarm_18: pmx-fanalarm-18 {
+				marvell,pins = "mpp18";
+				marvell,function = "gpo";
+			};
+			pmx_hddled_20: pmx-hddled-20 {
+				marvell,pins = "mpp20";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_21: pmx-hddled-21 {
+				marvell,pins = "mpp21";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_22: pmx-hddled-22 {
+				marvell,pins = "mpp22";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_23: pmx-hddled-23 {
+				marvell,pins = "mpp23";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_24: pmx-hddled-24 {
+				marvell,pins = "mpp24";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_25: pmx-hddled-25 {
+				marvell,pins = "mpp25";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_26: pmx-hddled-26 {
+				marvell,pins = "mpp26";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_27: pmx-hddled-27 {
+				marvell,pins = "mpp27";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_28: pmx-hddled-28 {
+				marvell,pins = "mpp28";
+				marvell,function = "gpio";
+			};
+			pmx_hdd1_pwr_29: pmx-hdd1-pwr-29 {
+				marvell,pins = "mpp29";
+				marvell,function = "gpio";
+			};
+			pmx_hdd1_pwr_30: pmx-hdd-pwr-30 {
+				marvell,pins = "mpp30";
+				marvell,function = "gpio";
+			};
+			pmx_hdd2_pwr_31: pmx-hdd2-pwr-31 {
+				marvell,pins = "mpp31";
+				marvell,function = "gpio";
+			};
+			pmx_fanctrl_32: pmx-fanctrl-32 {
+				marvell,pins = "mpp32";
+				marvell,function = "gpio";
+			};
+			pmx_fanctrl_33: pmx-fanctrl-33 {
+				marvell,pins = "mpp33";
+				marvell,function = "gpo";
+			};
+			pmx_fanctrl_34: pmx-fanctrl-34 {
+				marvell,pins = "mpp34";
+				marvell,function = "gpio";
+			};
+			pmx_hdd2_pwr_34: pmx-hdd2-pwr-34 {
+				marvell,pins = "mpp34";
+				marvell,function = "gpio";
+			};
+			pmx_fanalarm_35: pmx-fanalarm-35 {
+				marvell,pins = "mpp35";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_36: pmx-hddled-36 {
+				marvell,pins = "mpp36";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_37: pmx-hddled-37 {
+				marvell,pins = "mpp37";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_38: pmx-hddled-38 {
+				marvell,pins = "mpp38";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_39: pmx-hddled-39 {
+				marvell,pins = "mpp39";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_40: pmx-hddled-40 {
+				marvell,pins = "mpp40";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_41: pmx-hddled-41 {
+				marvell,pins = "mpp41";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_42: pmx-hddled-42 {
+				marvell,pins = "mpp42";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_43: pmx-hddled-43 {
+				marvell,pins = "mpp43";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_44: pmx-hddled-44 {
+				marvell,pins = "mpp44";
+				marvell,function = "gpio";
+			};
+			pmx_hddled_45: pmx-hddled-45 {
+				marvell,pins = "mpp45";
+				marvell,function = "gpio";
+			};
+			pmx_hdd3_pwr_44: pmx-hdd3-pwr-44 {
+				marvell,pins = "mpp44";
+				marvell,function = "gpio";
+			};
+			pmx_hdd4_pwr_45: pmx-hdd4-pwr-45 {
+				marvell,pins = "mpp45";
+				marvell,function = "gpio";
+			};
+			pmx_fanalarm_44: pmx-fanalarm-44 {
+				marvell,pins = "mpp44";
+				marvell,function = "gpio";
+			};
+			pmx_fanalarm_45: pmx-fanalarm-45 {
+				marvell,pins = "mpp45";
+				marvell,function = "gpio";
+			};
+		};		
+		i2c@11000 {
+			status = "okay";
+			clock-frequency = <400000>;
+			pinctrl-0 = <&pmx_twsi0>;
+			pinctrl-names = "default";
+			rs5c372: rs5c372@32 {
+				status = "disabled";
+				compatible = "rs5c372";
+				reg = <0x32>;
+			};
+			s35390a: s35390a@30 {
+				status = "disabled";
+				compatible = "s35390a";
+				reg = <0x30>;
+			};
+		};
+		serial@12000 {
+			status = "okay";
+			pinctrl-0 = <&pmx_uart0>;
+			pinctrl-names = "default";
+		};
+		serial@12100 {
+			status = "okay";
+			pinctrl-0 = <&pmx_uart1>;
+			pinctrl-names = "default";
+		};
+		poweroff@12100 {
+			compatible = "synology,power-off";
+			reg = <0x12000 0x100>;
+			clocks = <&gate_clk 7>;
+		};
+		spi@10600 {
+			status = "okay";
+			pinctrl-0 = <&pmx_spi>;
+			pinctrl-names = "default";
+
+			m25p80@0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "m25p80";
+				reg = <0>;
+				spi-max-frequency = <20000000>;
+				mode = <0>;
+
+				partition@00000000 {
+					reg = <0x00000000 0x00080000>;
+					label = "RedBoot";
+				};
+
+				partition@00080000 {
+					reg = <0x00080000 0x00200000>;
+					label = "zImage";
+				};
+
+				partition@00280000 {
+					reg = <0x00280000 0x00140000>;
+					label = "rd.gz";
+				};
+				partition@003c0000 {
+					reg = <0x003c0000 0x00010000>;
+					label = "vendor";
+				};
+				partition@003d0000 {
+					reg = <0x003d0000 0x00020000>;
+					label = "RedBoot config";
+				};
+				partition@003f0000 {
+					reg = <0x003f0000 0x00010000>;
+					label = "FIS directory";
+				};
+			};
+		};
+		sata@80000 {
+			pinctrl-0 = <&pmx_sata0 &pmx_sata1>;
+			pinctrl-names = "default";
+			status = "okay";
+			nr-ports = <2>;
+		};
+	};
+	gpio-fan-150-32-35 {
+		status = "disabled";
+		compatible = "gpio-fan";
+		pinctrl-0 = <&pmx_fanctrl_32 &pmx_fanctrl_33 &pmx_fanctrl_34
+		             &pmx_fanalarm_35>;
+		pinctrl-names = "default";
+		gpios = <&gpio1 0 GPIO_ACTIVE_HIGH
+			 &gpio1 1 GPIO_ACTIVE_HIGH
+			 &gpio1 2 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map = <    0 0
+				       2200 1
+				       2500 2
+				       3000 4
+				       3300 3
+				       3700 5
+				       3800 6
+				       4200 7 >;
+	};
+	gpio-fan-150-15-18 {
+		status = "disabled";
+		compatible = "gpio-fan";
+		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17
+		             &pmx_fanalarm_18>;
+		pinctrl-names = "default";
+		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
+			 &gpio0 16 GPIO_ACTIVE_HIGH
+			 &gpio0 17 GPIO_ACTIVE_HIGH>;
+		alarm-gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map = <    0 0
+				       2200 1
+				       2500 2
+				       3000 4
+				       3300 3
+				       3700 5
+				       3800 6
+				       4200 7 >;
+	};
+	gpio-fan-100-32-35 {
+		status = "disabled";
+		compatible = "gpio-fan";
+		pinctrl-0 = <&pmx_fanctrl_32 &pmx_fanctrl_33 &pmx_fanctrl_34 
+		             &pmx_fanalarm_35>;
+		pinctrl-names = "default";
+		gpios = <&gpio1 0 GPIO_ACTIVE_HIGH
+			 &gpio1 1 GPIO_ACTIVE_HIGH
+			 &gpio1 2 GPIO_ACTIVE_HIGH>;
+		alarm-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map = <    0 0
+				       2500 1
+				       3100 2
+				       3800 3
+				       4600 4
+				       4800 5
+				       4900 6
+				       5000 7 >;
+	};
+	gpio-fan-100-15-18 {
+		status = "disabled";
+		compatible = "gpio-fan";
+		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17 
+		             &pmx_fanalarm_18>;
+		pinctrl-names = "default";
+		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
+			 &gpio0 16 GPIO_ACTIVE_HIGH
+			 &gpio0 17 GPIO_ACTIVE_HIGH>;
+		alarm-gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map = <    0 0
+				       2500 1
+				       3100 2
+				       3800 3
+				       4600 4
+				       4800 5
+				       4900 6
+				       5000 7 >;
+	};
+	gpio-fan-100-15-35-1 {
+		status = "disabled";
+		compatible = "gpio-fan";
+		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17 
+		             &pmx_fanalarm_35>;
+		pinctrl-names = "default";
+		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
+			 &gpio0 16 GPIO_ACTIVE_HIGH
+			 &gpio0 17 GPIO_ACTIVE_HIGH>;
+		alarm-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map = <    0 0
+				       2500 1
+				       3100 2
+				       3800 3
+				       4600 4
+				       4800 5
+				       4900 6
+				       5000 7 >;
+	};
+	gpio-fan-100-15-35-3 {
+		status = "disabled";
+		compatible = "gpio-fan";
+		pinctrl-0 = <&pmx_fanctrl_15 &pmx_fanctrl_16 &pmx_fanctrl_17
+		             &pmx_fanalarm_35 &pmx_fanalarm_44 &pmx_fanalarm_45>;
+		pinctrl-names = "default";
+		gpios = <&gpio0 15 GPIO_ACTIVE_HIGH
+			 &gpio0 16 GPIO_ACTIVE_HIGH
+			 &gpio0 17 GPIO_ACTIVE_HIGH>;
+		alarm-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH
+			       &gpio1 12 GPIO_ACTIVE_HIGH
+			       &gpio1 13 GPIO_ACTIVE_HIGH>;
+		gpio-fan,speed-map = <    0 0
+				       2500 1
+				       3100 2
+				       3800 3
+				       4600 4
+				       4800 5
+				       4900 6
+				       5000 7 >;
+	};
+	gpio-leds-alarm-12 {
+		status = "disabled";
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_alarmled_12>;
+		pinctrl-names = "default";
+		hdd1-green {
+			label = "synology:alarm";
+			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
+		};
+	};
+	gpio-leds-hdd-20 {
+		status = "disabled";
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_hddled_20 &pmx_hddled_21 &pmx_hddled_22
+			     &pmx_hddled_23 &pmx_hddled_24 &pmx_hddled_25
+			     &pmx_hddled_26 &pmx_hddled_27>;
+		pinctrl-names = "default";
+		hdd1-green {
+			label = "synology:green:hdd1";
+			gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
+		};
+		hdd1-amber {
+			label = "synology:amber:hdd1";
+			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-green {
+			label = "synology:green:hdd2";
+			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-amber {
+			label = "synology:amber:hdd2";
+			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
+		};
+		hdd3-green {
+			label = "synology:green:hdd3";
+			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
+		};
+		hdd3-amber {
+			label = "synology:amber:hdd3";
+			gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
+		};
+		hdd4-green {
+			label = "synology:green:hdd4";
+			gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
+		};
+		hdd4-amber {
+			label = "synology:amber:hdd4";
+			gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
+		};
+	};
+	gpio-leds-hdd-21-1 {
+		status = "disabled";
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_hddled_21 &pmx_hddled_23>;
+		pinctrl-names = "default";
+		hdd1-green {
+			label = "synology:green:hdd1";
+			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
+		};
+		hdd1-amber {
+			label = "synology:amber:hdd1";
+			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
+		};
+	};
+	gpio-leds-hdd-21-2 {
+		status = "disabled";
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_hddled_21 &pmx_hddled_23 &pmx_hddled_20 &pmx_hddled_22>;
+		pinctrl-names = "default";
+		hdd1-green {
+			label = "synology:green:hdd1";
+			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
+		};
+		hdd1-amber {
+			label = "synology:amber:hdd1";
+			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-green {
+			label = "synology:green:hdd2";
+			gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-amber {
+			label = "synology:amber:hdd2";
+			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
+		};
+	};
+	gpio-leds-hdd-36 {
+		status = "disabled";
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_hddled_36 &pmx_hddled_37 &pmx_hddled_38
+			     &pmx_hddled_39 &pmx_hddled_40 &pmx_hddled_41
+			     &pmx_hddled_42 &pmx_hddled_43 &pmx_hddled_44
+			     &pmx_hddled_45>;
+		pinctrl-names = "default";
+		hdd1-green {
+			label = "synology:green:hdd1";
+			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
+		};
+		hdd1-amber {
+			label = "synology:amber:hdd1";
+			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-green {
+			label = "synology:green:hdd2";
+			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-amber {
+			label = "synology:amber:hdd2";
+			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+		};
+		hdd3-green {
+			label = "synology:green:hdd3";
+			gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+		};
+		hdd3-amber {
+			label = "synology:amber:hdd3";
+			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
+		};
+		hdd4-green {
+			label = "synology:green:hdd4";
+			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+		};
+		hdd4-amber {
+			label = "synology:amber:hdd4";
+			gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
+		};
+		hdd5-green {
+			label = "synology:green:hdd5";
+			gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+		};
+		hdd5-amber {
+			label = "synology:amber:hdd5";
+			gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
+		};
+	};
+	gpio-leds-hdd-38 {
+		status = "disabled";
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_hddled_38 &pmx_hddled_39 &pmx_hddled_36 &pmx_hddled_37>;
+		pinctrl-names = "default";
+		hdd1-green {
+			label = "synology:green:hdd1";
+			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		};
+		hdd1-amber {
+			label = "synology:amber:hdd1";
+			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-green {
+			label = "synology:green:hdd2";
+			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
+		};
+		hdd2-amber {
+			label = "synology:amber:hdd2";
+			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
+		};
+	};
+	regulators-hdd-29 {
+		status = "disabled";
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_hdd1_pwr_29 &pmx_hdd2_pwr_31>;
+		pinctrl-names = "default";
+
+		regulator@1 {
+			compatible = "regulator-fixed";
+			reg = <1>;
+			regulator-name = "hdd1power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio0 29 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@2 {
+			compatible = "regulator-fixed";
+			reg = <2>;
+			regulator-name = "hdd2power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio0 31 GPIO_ACTIVE_HIGH>;
+		};
+	};
+	regulators-hdd-30-1 {
+		status = "disabled";
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_hdd1_pwr_30>;
+		pinctrl-names = "default";
+
+		regulator@1 {
+			compatible = "regulator-fixed";
+			reg = <1>;
+			regulator-name = "hdd1power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
+		};
+	};
+	regulators-hdd-30-2 {
+		status = "disabled";
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_hdd1_pwr_30 &pmx_hdd2_pwr_34>;
+		pinctrl-names = "default";
+
+		regulator@1 {
+			compatible = "regulator-fixed";
+			reg = <1>;
+			regulator-name = "hdd1power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@2 {
+			compatible = "regulator-fixed";
+			reg = <2>;
+			regulator-name = "hdd2power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
+		};
+	};
+	regulators-hdd-30-4 {
+		status = "disabled";
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_hdd1_pwr_30 &pmx_hdd2_pwr_34
+			     &pmx_hdd3_pwr_44 &pmx_hdd4_pwr_45>;
+		pinctrl-names = "default";
+
+		regulator@1 {
+			compatible = "regulator-fixed";
+			reg = <1>;
+			regulator-name = "hdd1power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio0 30 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@2 {
+			compatible = "regulator-fixed";
+			reg = <2>;
+			regulator-name = "hdd2power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@3 {
+			compatible = "regulator-fixed";
+			reg = <3>;
+			regulator-name = "hdd3power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@4 {
+			compatible = "regulator-fixed";
+			reg = <4>;
+			regulator-name = "hdd4power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 13 GPIO_ACTIVE_HIGH>;
+		};
+	};
+	regulators-hdd-31 {
+		status = "disabled";
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_hdd2_pwr_31>;
+		pinctrl-names = "default";
+
+		regulator@1 {
+			compatible = "regulator-fixed";
+			reg = <1>;
+			regulator-name = "hdd2power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio0 31 GPIO_ACTIVE_HIGH>;
+		};
+	};
+	regulators-hdd-34 {
+		status = "disabled";
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_hdd2_pwr_34 &pmx_hdd3_pwr_44
+			     &pmx_hdd4_pwr_45>;
+		pinctrl-names = "default";
+
+		regulator@2 {
+			compatible = "regulator-fixed";
+			reg = <2>;
+			regulator-name = "hdd2power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@3 {
+			compatible = "regulator-fixed";
+			reg = <3>;
+			regulator-name = "hdd3power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+		};
+		regulator@4 {
+			compatible = "regulator-fixed";
+			reg = <4>;
+			regulator-name = "hdd4power";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			regulator-always-on;
+			regulator-boot-on;
+			startup-delay-us = <5000000>;
+			gpio = <&gpio1 13 GPIO_ACTIVE_HIGH>;
+		};
+	};
+};
+
+&mdio {
+	status = "okay";
+
+	ethphy0: ethernet-phy@0 {
+		device_type = "ethernet-phy";
+		reg = <8>;
+	};
+	ethphy1: ethernet-phy@1 {
+		device_type = "ethernet-phy";
+		reg = <9>;
+	};
+};
+
+&eth0 {
+	status = "okay";
+	ethernet0-port@0 {
+		phy-handle = <&ethphy0>;
+	};
+};
+
+&eth1 {
+	status = "disabled";
+	ethernet1-port@0 {
+		phy-handle = <&ethphy1>;
+	};
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds109.dts b/arch/arm/boot/dts/kirkwood-ds109.dts
new file mode 100644
index 0000000..9320166
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds109.dts
@@ -0,0 +1,42 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS109, DS110, DS110jv20";
+	compatible = "synology,ds109", "synology,ds110jv20",
+		     "synology,ds110", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-32-35 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-1 {
+		status = "okay";
+	};
+};
+
+&rs5c372 {
+	status = "okay";
+};
+
diff --git a/arch/arm/boot/dts/kirkwood-ds110jv10.dts b/arch/arm/boot/dts/kirkwood-ds110jv10.dts
new file mode 100644
index 0000000..09d4fbb
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds110jv10.dts
@@ -0,0 +1,41 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS110j v10 and v30";
+	compatible = "synology,ds110jv10", "synology,ds110jv30",
+		     "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-32-35 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-1 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds111.dts b/arch/arm/boot/dts/kirkwood-ds111.dts
new file mode 100644
index 0000000..0369204
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds111.dts
@@ -0,0 +1,44 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS111";
+	compatible = "synology,ds111", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-1 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-1 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds112.dts b/arch/arm/boot/dts/kirkwood-ds112.dts
new file mode 100644
index 0000000..9a70bf9
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds112.dts
@@ -0,0 +1,48 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS111";
+	compatible = "synology,ds111", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-1 {
+		status = "okay";
+	};
+
+	gpio-leds-21-2 {
+		status = "okay";
+	};
+
+	regulators-hdd-30 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds209.dts b/arch/arm/boot/dts/kirkwood-ds209.dts
new file mode 100644
index 0000000..466f584
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds209.dts
@@ -0,0 +1,44 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS209";
+	compatible = "synology,ds209", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-32-35 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-2 {
+		status = "okay";
+	};
+
+	regulators-hdd-31 {
+		status = "okay";
+	};
+};
+
+&rs5c372 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds210.dts b/arch/arm/boot/dts/kirkwood-ds210.dts
new file mode 100644
index 0000000..0d8a0e1
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds210.dts
@@ -0,0 +1,46 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS210 v10, v20, v30, DS211j";
+	compatible = "synology,ds210jv10", "synology,ds210jv20",
+		     "synology,ds210jv30", "synology,ds211j",
+		     "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-32-35 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-2 {
+		status = "okay";
+	};
+
+	regulators-hdd-31 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds212.dts b/arch/arm/boot/dts/kirkwood-ds212.dts
new file mode 100644
index 0000000..dd0374e
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds212.dts
@@ -0,0 +1,47 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS212, DS212p v10, v20, DS213air v10, DS213 v10";
+	compatible = "synology,ds212", "synology,ds212pv10",
+		     "synology,ds212pv10", "synology,ds212pv20",
+		     "synology,ds213airv10", "synology,ds213v10",
+		     "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-1 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-2 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds212j.dts b/arch/arm/boot/dts/kirkwood-ds212j.dts
new file mode 100644
index 0000000..7328044
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds212j.dts
@@ -0,0 +1,41 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS212j v10, v20";
+	compatible = "synology,ds212jv10", "synology,ds212jv20",
+		     "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-32-35 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-21-2 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds409.dts b/arch/arm/boot/dts/kirkwood-ds409.dts
new file mode 100644
index 0000000..c6aa57b
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds409.dts
@@ -0,0 +1,48 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS409, DS410j";
+	compatible = "synology,ds409", "synology,ds410j", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-15-18 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-36 {
+		status = "okay";
+	};
+
+	gpio-leds-alarm-12 {
+		status = "okay";
+	};
+};
+
+&eth1 {
+	status = "okay";
+};
+
+&rs5c372 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds409slim.dts b/arch/arm/boot/dts/kirkwood-ds409slim.dts
new file mode 100644
index 0000000..3c7b5bd
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds409slim.dts
@@ -0,0 +1,40 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology 409slim";
+	compatible = "synology,ds409slim", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-32-35 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-20 {
+		status = "okay";
+	};
+};
+
+&rs5c372 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds411.dts b/arch/arm/boot/dts/kirkwood-ds411.dts
new file mode 100644
index 0000000..c8aa152
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds411.dts
@@ -0,0 +1,52 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS411, DS413jv10";
+	compatible = "synology,ds411", "synology,ds413jv10", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-1 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-36 {
+		status = "okay";
+	};
+
+	regulators-hdd-34 {
+		status = "okay";
+	};
+};
+
+&eth1 {
+	status = "okay";
+};
+
+&s35390a {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds411j.dts b/arch/arm/boot/dts/kirkwood-ds411j.dts
new file mode 100644
index 0000000..9546a2d
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds411j.dts
@@ -0,0 +1,48 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS411j";
+	compatible = "synology,ds411j", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-15-18 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-36 {
+		status = "okay";
+	};
+
+	gpio-leds-alarm-12 {
+		status = "okay";
+	};
+};
+
+&eth1 {
+	status = "okay";
+};
+
+&s35390a {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-ds411slim.dts b/arch/arm/boot/dts/kirkwood-ds411slim.dts
new file mode 100644
index 0000000..b2d8ea8
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ds411slim.dts
@@ -0,0 +1,48 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology DS411slim";
+	compatible = "synology,ds411slim", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-1 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-36 {
+		status = "okay";
+	};
+};
+
+&eth1 {
+	status = "okay";
+};
+
+&s35390a {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-rs212.dts b/arch/arm/boot/dts/kirkwood-rs212.dts
new file mode 100644
index 0000000..3efad06
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-rs212.dts
@@ -0,0 +1,48 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology RS212";
+	compatible = "synology,rs212", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-3 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-38 {
+		status = "okay";
+	};
+
+	regulators-hdd-30-2 {
+		status = "okay";
+	};
+};
+
+&s35390a {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-rs409.dts b/arch/arm/boot/dts/kirkwood-rs409.dts
new file mode 100644
index 0000000..cddd620
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-rs409.dts
@@ -0,0 +1,44 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology RS409";
+	compatible = "synology,rs409", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-150-15-18 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-36 {
+		status = "okay";
+	};
+};
+
+&eth1 {
+	status = "okay";
+};
+
+&rs5c372 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/kirkwood-rs411.dts b/arch/arm/boot/dts/kirkwood-rs411.dts
new file mode 100644
index 0000000..a337a5c
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-rs411.dts
@@ -0,0 +1,44 @@
+/*
+ * Andrew Lunn <andrew@lunn.ch>
+ * Ben Peddell <klightspeed@killerwolves.net>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+#include "kirkwood-ds-rs-common.dtsi"
+
+/ {
+	model = "Synology RS411 RS812";
+	compatible = "synology,rs411", "synology,rs812", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	gpio-fan-100-15-35-3 {
+		status = "okay";
+	};
+
+	gpio-leds-hdd-36 {
+		status = "okay";
+	};
+};
+
+&eth1 {
+	status = "okay";
+};
+
+&s35390a {
+	status = "okay";
+};
-- 
1.8.3.2

^ permalink raw reply related

* [PATCH 5/5] ARM: shmobile: r8a7790: add i2c aliases to dtsi
From: Wolfram Sang @ 2014-02-16  9:40 UTC (permalink / raw)
  To: linux-sh
  Cc: linux-arm-kernel, devicetree, Magnus Damm, Simon Horman,
	Wolfram Sang
In-Reply-To: <1392543658-5030-1-git-send-email-wsa@the-dreams.de>

From: Wolfram Sang <wsa@sang-engineering.com>

Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
---
 arch/arm/boot/dts/r8a7790.dtsi | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/arch/arm/boot/dts/r8a7790.dtsi b/arch/arm/boot/dts/r8a7790.dtsi
index a6e3713..a1e7c39 100644
--- a/arch/arm/boot/dts/r8a7790.dtsi
+++ b/arch/arm/boot/dts/r8a7790.dtsi
@@ -18,6 +18,13 @@
 	#address-cells = <2>;
 	#size-cells = <2>;
 
+	aliases {
+		i2c0 = &i2c0;
+		i2c1 = &i2c1;
+		i2c2 = &i2c2;
+		i2c3 = &i2c3;
+	};
+
 	cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;
-- 
1.8.5.1


^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox