All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Add DT support for Network Space v2 and parents
@ 2012-10-15 15:34 Simon Guinot
  2012-10-15 15:34 ` [PATCH 1/4] leds: leds-ns2: add device tree binding Simon Guinot
                   ` (4 more replies)
  0 siblings, 5 replies; 20+ messages in thread
From: Simon Guinot @ 2012-10-15 15:34 UTC (permalink / raw)
  To: linux-arm-kernel

This patch series provides DT support for LaCie NAS Network Space v2 and
parents. This includes the following machines:
 - Internet Space v2
 - Network Space v2
 - Network Space Max v2
 - Network Space Lite v2
 - Network Space Mini v2

Note that the three first boards are already supported by the Linux
kernel via an "old-fashion" board setup. The two lasts (Lite and Mini)
are new boards.

Also note that the first patch of the series is related with the LED
subsystem. It adds device tree binding to the driver leds-ns2.

Simon Guinot (4):
  leds: leds-ns2: add device tree binding
  ARM: kirkwood: DT board setup for Network Space v2 and parents
  ARM: kirkwood: DT board setup for Network Space Lite v2
  ARM: kirkwood: DT board setup for Network Space Mini v2

 .../devicetree/bindings/gpio/leds-ns2.txt          |   26 ++++++
 arch/arm/boot/dts/Makefile                         |    5 ++
 arch/arm/boot/dts/kirkwood-is2.dts                 |   30 +++++++
 arch/arm/boot/dts/kirkwood-ns2-common.dtsi         |   63 ++++++++++++++
 arch/arm/boot/dts/kirkwood-ns2.dts                 |   30 +++++++
 arch/arm/boot/dts/kirkwood-ns2lite.dts             |   30 +++++++
 arch/arm/boot/dts/kirkwood-ns2max.dts              |   49 +++++++++++
 arch/arm/boot/dts/kirkwood-ns2mini.dts             |   49 +++++++++++
 arch/arm/mach-kirkwood/Kconfig                     |   36 ++++++++
 arch/arm/mach-kirkwood/Makefile                    |    5 ++
 arch/arm/mach-kirkwood/board-dt.c                  |   12 +++
 arch/arm/mach-kirkwood/board-ns2.c                 |   87 ++++++++++++++++++++
 arch/arm/mach-kirkwood/common.h                    |   10 +++
 drivers/leds/Kconfig                               |    4 +-
 drivers/leds/leds-ns2.c                            |   84 ++++++++++++++++++-
 15 files changed, 516 insertions(+), 4 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/gpio/leds-ns2.txt
 create mode 100644 arch/arm/boot/dts/kirkwood-is2.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ns2-common.dtsi
 create mode 100644 arch/arm/boot/dts/kirkwood-ns2.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ns2lite.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ns2max.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ns2mini.dts
 create mode 100644 arch/arm/mach-kirkwood/board-ns2.c

-- 
1.7.10

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/4] leds: leds-ns2: add device tree binding
  2012-10-15 15:34 [PATCH 0/4] Add DT support for Network Space v2 and parents Simon Guinot
@ 2012-10-15 15:34 ` Simon Guinot
  2012-10-15 17:41   ` Jason Cooper
  2012-10-16 13:02   ` Arnd Bergmann
  2012-10-15 15:34 ` [PATCH 2/4] ARM: kirkwood: DT board setup for Network Space v2 and parents Simon Guinot
                   ` (3 subsequent siblings)
  4 siblings, 2 replies; 20+ messages in thread
From: Simon Guinot @ 2012-10-15 15:34 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
---
 .../devicetree/bindings/gpio/leds-ns2.txt          |   26 ++++++
 drivers/leds/leds-ns2.c                            |   84 +++++++++++++++++++-
 2 files changed, 107 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/gpio/leds-ns2.txt

diff --git a/Documentation/devicetree/bindings/gpio/leds-ns2.txt b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
new file mode 100644
index 0000000..1a84969
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
@@ -0,0 +1,26 @@
+Binding for dual-GPIO LED found on Network Space v2 (and parents).
+
+Required properties:
+- compatible: "ns2-leds".
+
+Each LED is represented as a sub-node of the ns2-leds device.
+
+Required sub-node properties:
+- cmd-gpio: Command LED GPIO. See OF device-tree GPIO specification.
+- slow-gpio: Slow LED GPIO. See OF device-tree GPIO specification.
+
+Optional sub-node properties:
+- label: Name for this LED. If omitted, the label is taken from the node name.
+- linux,default-trigger: Trigger assigned to the LED.
+
+Example:
+
+ns2-leds {
+	compatible = "ns2-leds";
+
+	blue-sata {
+		label = "ns2:blue:sata";
+		slow-gpio = <&gpio0 29 0>;
+		cmd-gpio = <&gpio0 30 0>;
+	};
+};
diff --git a/drivers/leds/leds-ns2.c b/drivers/leds/leds-ns2.c
index d176ec8..55d199b 100644
--- a/drivers/leds/leds-ns2.c
+++ b/drivers/leds/leds-ns2.c
@@ -30,6 +30,7 @@
 #include <linux/leds.h>
 #include <linux/module.h>
 #include <linux/platform_data/leds-kirkwood-ns2.h>
+#include <linux/of_gpio.h>
 
 /*
  * The Network Space v2 dual-GPIO LED is wired to a CPLD and can blink in
@@ -263,6 +264,68 @@ static void delete_ns2_led(struct ns2_led_data *led_dat)
 	gpio_free(led_dat->slow);
 }
 
+#ifdef CONFIG_OF_GPIO
+/*
+ * Translate OpenFirmware node properties into platform_data.
+ */
+static int __devinit
+ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
+{
+	struct device_node *np = dev->of_node;
+	struct device_node *child;
+	struct ns2_led *leds;
+	int num_leds = 0;
+	int i = 0;
+
+	num_leds = of_get_child_count(np);
+	if (!num_leds)
+		return -ENODEV;
+
+	leds = devm_kzalloc(dev, num_leds * sizeof(struct ns2_led),
+			    GFP_KERNEL);
+	if (!leds)
+		return -ENOMEM;
+
+	for_each_child_of_node(np, child) {
+		const char *string;
+		int ret;
+
+		ret = of_get_named_gpio(child, "cmd-gpio", 0);
+		if (ret < 0)
+			return ret;
+		leds[i].cmd = ret;
+		ret = of_get_named_gpio(child, "slow-gpio", 0);
+		if (ret < 0)
+			return ret;
+		leds[i].slow = ret;
+		ret = of_property_read_string(child, "label", &string);
+		leds[i].name = (ret == 0) ? string : child->name;
+		ret = of_property_read_string(child, "linux,default-trigger",
+					      &string);
+		if (ret == 0)
+			leds[i].default_trigger = string;
+
+		i++;
+	}
+
+	pdata->leds = leds;
+	pdata->num_leds = num_leds;
+
+	return 0;
+}
+
+static const struct of_device_id of_ns2_leds_match[] = {
+	{ .compatible = "ns2-leds", },
+	{},
+};
+#else
+static int __devinit
+ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
+{
+	return -ENODEV;
+}
+#endif /* CONFIG_OF_GPIO */
+
 static int __devinit ns2_led_probe(struct platform_device *pdev)
 {
 	struct ns2_led_platform_data *pdata = pdev->dev.platform_data;
@@ -270,11 +333,25 @@ static int __devinit ns2_led_probe(struct platform_device *pdev)
 	int i;
 	int ret;
 
+#ifdef CONFIG_OF_GPIO
+	if (!pdata) {
+		pdata = devm_kzalloc(&pdev->dev,
+				     sizeof(struct ns2_led_platform_data),
+				     GFP_KERNEL);
+		if (!pdata)
+			return -ENOMEM;
+
+		ret = ns2_leds_get_of_pdata(&pdev->dev, pdata);
+		if (ret)
+			return ret;
+	}
+#else
 	if (!pdata)
 		return -EINVAL;
+#endif /* CONFIG_OF_GPIO */
 
 	leds_data = devm_kzalloc(&pdev->dev, sizeof(struct ns2_led_data) *
-			    pdata->num_leds, GFP_KERNEL);
+				 pdata->num_leds, GFP_KERNEL);
 	if (!leds_data)
 		return -ENOMEM;
 
@@ -312,8 +389,9 @@ static struct platform_driver ns2_led_driver = {
 	.probe		= ns2_led_probe,
 	.remove		= __devexit_p(ns2_led_remove),
 	.driver		= {
-		.name	= "leds-ns2",
-		.owner	= THIS_MODULE,
+		.name		= "leds-ns2",
+		.owner		= THIS_MODULE,
+		.of_match_table	= of_match_ptr(of_ns2_leds_match),
 	},
 };
 
-- 
1.7.10

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 2/4] ARM: kirkwood: DT board setup for Network Space v2 and parents
  2012-10-15 15:34 [PATCH 0/4] Add DT support for Network Space v2 and parents Simon Guinot
  2012-10-15 15:34 ` [PATCH 1/4] leds: leds-ns2: add device tree binding Simon Guinot
@ 2012-10-15 15:34 ` Simon Guinot
  2012-10-15 19:36   ` Simon Guinot
  2012-10-15 19:58   ` Rob Herring
  2012-10-15 15:34 ` [PATCH 3/4] ARM: kirkwood: DT board setup for Network Space Lite v2 Simon Guinot
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 20+ messages in thread
From: Simon Guinot @ 2012-10-15 15:34 UTC (permalink / raw)
  To: linux-arm-kernel

This patch adds DT board setup for LaCie Network Space v2 and parents,
based on the Marvell Kirkwood 6281 SoC. This includes Network Space v2
(Max) and Internet Space v2.

Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
---
 arch/arm/boot/dts/Makefile                 |    3 +
 arch/arm/boot/dts/kirkwood-is2.dts         |   30 ++++++++++
 arch/arm/boot/dts/kirkwood-ns2-common.dtsi |   63 +++++++++++++++++++++
 arch/arm/boot/dts/kirkwood-ns2.dts         |   30 ++++++++++
 arch/arm/boot/dts/kirkwood-ns2max.dts      |   49 ++++++++++++++++
 arch/arm/mach-kirkwood/Kconfig             |   21 +++++++
 arch/arm/mach-kirkwood/Makefile            |    3 +
 arch/arm/mach-kirkwood/board-dt.c          |    8 +++
 arch/arm/mach-kirkwood/board-ns2.c         |   83 ++++++++++++++++++++++++++++
 arch/arm/mach-kirkwood/common.h            |    8 +++
 drivers/leds/Kconfig                       |    4 +-
 11 files changed, 301 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/boot/dts/kirkwood-is2.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ns2-common.dtsi
 create mode 100644 arch/arm/boot/dts/kirkwood-ns2.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-ns2max.dts
 create mode 100644 arch/arm/mach-kirkwood/board-ns2.c

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index c1ce813..e6201b6 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -34,9 +34,12 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
 	kirkwood-ib62x0.dtb \
 	kirkwood-iconnect.dtb \
 	kirkwood-iomega_ix2_200.dtb \
+	kirkwood-is2.dtb \
 	kirkwood-km_kirkwood.dtb \
 	kirkwood-lschlv2.dtb \
 	kirkwood-lsxhl.dtb \
+	kirkwood-ns2.dtb \
+	kirkwood-ns2max.dtb \
 	kirkwood-ts219-6281.dtb \
 	kirkwood-ts219-6282.dtb
 dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
diff --git a/arch/arm/boot/dts/kirkwood-is2.dts b/arch/arm/boot/dts/kirkwood-is2.dts
new file mode 100644
index 0000000..7bc4677
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-is2.dts
@@ -0,0 +1,30 @@
+/dts-v1/;
+
+/include/ "kirkwood-ns2-common.dtsi"
+
+/ {
+	model = "LaCie Internet Space v2";
+	compatible = "lacie,inetspace_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	ocp at f1000000 {
+		sata at 80000 {
+			status = "okay";
+			nr-ports = <1>;
+		};
+	};
+
+	ns2-leds {
+		compatible = "ns2-leds";
+
+		blue-sata {
+			label = "ns2:blue:sata";
+			slow-gpio = <&gpio0 29 0>;
+			cmd-gpio = <&gpio0 30 0>;
+		};
+	};
+};
diff --git a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
new file mode 100644
index 0000000..9bc6785
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
@@ -0,0 +1,63 @@
+/include/ "kirkwood.dtsi"
+
+/ {
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	ocp at f1000000 {
+		serial at 12000 {
+			clock-frequency = <166666667>;
+			status = "okay";
+		};
+
+		spi at 10600 {
+			status = "okay";
+
+			flash at 0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "mx25l4005a";
+				reg = <0>;
+				spi-max-frequency = <20000000>;
+				mode = <0>;
+
+				partition at 0 {
+					reg = <0x0 0x80000>;
+					label = "u-boot";
+				};
+			};
+		};
+
+		i2c at 11000 {
+			status = "okay";
+
+			eeprom at 50 {
+				compatible = "at,24c04";
+				pagesize = <16>;
+				reg = <0x50>;
+			};
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		button at 1 {
+			label = "Power push button";
+			linux,code = <116>;
+			gpios = <&gpio1 0 0>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		red-fail {
+			label = "ns2:red:fail";
+			gpios = <&gpio0 12 0>;
+		};
+	};
+};
diff --git a/arch/arm/boot/dts/kirkwood-ns2.dts b/arch/arm/boot/dts/kirkwood-ns2.dts
new file mode 100644
index 0000000..d018213
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ns2.dts
@@ -0,0 +1,30 @@
+/dts-v1/;
+
+/include/ "kirkwood-ns2-common.dtsi"
+
+/ {
+	model = "LaCie Network Space v2";
+	compatible = "lacie,netspace_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x10000000>;
+	};
+
+	ocp at f1000000 {
+		sata at 80000 {
+			status = "okay";
+			nr-ports = <1>;
+		};
+	};
+
+	ns2-leds {
+		compatible = "ns2-leds";
+
+		blue-sata {
+			label = "ns2:blue:sata";
+			slow-gpio = <&gpio0 29 0>;
+			cmd-gpio = <&gpio0 30 0>;
+		};
+	};
+};
diff --git a/arch/arm/boot/dts/kirkwood-ns2max.dts b/arch/arm/boot/dts/kirkwood-ns2max.dts
new file mode 100644
index 0000000..82156e2
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ns2max.dts
@@ -0,0 +1,49 @@
+/dts-v1/;
+
+/include/ "kirkwood-ns2-common.dtsi"
+
+/ {
+	model = "LaCie Network Space Max v2";
+	compatible = "lacie,netspace_max_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x10000000>;
+	};
+
+	ocp at f1000000 {
+		sata at 80000 {
+			status = "okay";
+			nr-ports = <2>;
+		};
+	};
+
+	gpio_fan {
+		compatible = "gpio-fan";
+		gpios = <&gpio0 22 1
+			 &gpio0  7 1
+			 &gpio1  1 1
+			 &gpio0 23 1>;
+		gpio-fan,speed-map =
+			<   0  0
+			 1500 15
+			 1700 14
+			 1800 13
+			 2100 12
+			 3100 11
+			 3300 10
+			 4300  9
+			 5500  8>;
+		alarm-gpios = <&gpio0 25 1>;
+	};
+
+	ns2-leds {
+		compatible = "ns2-leds";
+
+		blue-sata {
+			label = "ns2:blue:sata";
+			slow-gpio = <&gpio0 29 0>;
+			cmd-gpio = <&gpio0 30 0>;
+		};
+	};
+};
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
index 50bca50..847e0c2 100644
--- a/arch/arm/mach-kirkwood/Kconfig
+++ b/arch/arm/mach-kirkwood/Kconfig
@@ -130,6 +130,27 @@ config MACH_KM_KIRKWOOD_DT
 	  Say 'Y' here if you want your kernel to support the
 	  Keymile Kirkwood Reference Desgin, using Flattened Device Tree.
 
+config MACH_INETSPACE_V2_DT
+	bool "LaCie Internet Space v2 NAS (Flattened Device Tree)"
+	select ARCH_KIRKWOOD_DT
+	help
+	  Say 'Y' here if you want your kernel to support the LaCie
+	  Internet Space v2 NAS, using Flattened Device Tree.
+
+config MACH_NETSPACE_V2_DT
+	bool "LaCie Network Space v2 NAS (Flattened Device Tree)"
+	select ARCH_KIRKWOOD_DT
+	help
+	  Say 'Y' here if you want your kernel to support the LaCie
+	  Network Space v2 NAS, using Flattened Device Tree.
+
+config MACH_NETSPACE_MAX_V2_DT
+	bool "LaCie Network Space Max v2 NAS (Flattened Device Tree)"
+	select ARCH_KIRKWOOD_DT
+	help
+	  Say 'Y' here if you want your kernel to support the LaCie
+	  Network Space Max v2 NAS, using Flattened Device Tree.
+
 config MACH_TS219
 	bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
 	help
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
index 294779f..1f63d80 100644
--- a/arch/arm/mach-kirkwood/Makefile
+++ b/arch/arm/mach-kirkwood/Makefile
@@ -31,3 +31,6 @@ obj-$(CONFIG_MACH_GOFLEXNET_DT)		+= board-goflexnet.o
 obj-$(CONFIG_MACH_LSXL_DT)		+= board-lsxl.o
 obj-$(CONFIG_MACH_IOMEGA_IX2_200_DT)	+= board-iomega_ix2_200.o
 obj-$(CONFIG_MACH_KM_KIRKWOOD_DT)	+= board-km_kirkwood.o
+obj-$(CONFIG_MACH_INETSPACE_V2_DT)	+= board-ns2.o
+obj-$(CONFIG_MACH_NETSPACE_V2_DT)	+= board-ns2.o
+obj-$(CONFIG_MACH_NETSPACE_MAX_V2_DT)	+= board-ns2.o
diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c
index 70c5a28..b3e0519 100644
--- a/arch/arm/mach-kirkwood/board-dt.c
+++ b/arch/arm/mach-kirkwood/board-dt.c
@@ -96,6 +96,11 @@ static void __init kirkwood_dt_init(void)
 	if (of_machine_is_compatible("keymile,km_kirkwood"))
 		km_kirkwood_init();
 
+	if (of_machine_is_compatible("lacie,inetspace_v2") ||
+	    of_machine_is_compatible("lacie,netspace_v2") ||
+	    of_machine_is_compatible("lacie,netspace_max_v2"))
+		ns2_init();
+
 	of_platform_populate(NULL, kirkwood_dt_match_table,
 			     kirkwood_auxdata_lookup, NULL);
 }
@@ -112,6 +117,9 @@ static const char *kirkwood_dt_board_compat[] = {
 	"buffalo,lsxl",
 	"iom,ix2-200",
 	"keymile,km_kirkwood",
+	"lacie,inetspace_v2",
+	"lacie,netspace_max_v2",
+	"lacie,netspace_v2",
 	NULL
 };
 
diff --git a/arch/arm/mach-kirkwood/board-ns2.c b/arch/arm/mach-kirkwood/board-ns2.c
new file mode 100644
index 0000000..b36c55c
--- /dev/null
+++ b/arch/arm/mach-kirkwood/board-ns2.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2012 (C), Simon Guinot <simon.guinot@sequanux.org>
+ *
+ * arch/arm/mach-kirkwood/board-ns2.c
+ *
+ * LaCie Network Space v2 board (and parents) initialization for drivers
+ * not converted to flattened device tree yet.
+ *
+ * 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 <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mv643xx_eth.h>
+#include <linux/gpio.h>
+#include "common.h"
+#include "mpp.h"
+
+static struct mv643xx_eth_platform_data ns2_ge00_data = {
+	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),
+};
+
+static unsigned int ns2_mpp_config[] __initdata = {
+	MPP0_SPI_SCn,
+	MPP1_SPI_MOSI,
+	MPP2_SPI_SCK,
+	MPP3_SPI_MISO,
+	MPP4_NF_IO6,
+	MPP5_NF_IO7,
+	MPP6_SYSRST_OUTn,
+	MPP7_GPO,		/* Fan speed (bit 1) */
+	MPP8_TW0_SDA,
+	MPP9_TW0_SCK,
+	MPP10_UART0_TXD,
+	MPP11_UART0_RXD,
+	MPP12_GPO,		/* Red led */
+	MPP14_GPIO,		/* USB fuse */
+	MPP16_GPIO,		/* SATA 0 power */
+	MPP17_GPIO,		/* SATA 1 power */
+	MPP18_NF_IO0,
+	MPP19_NF_IO1,
+	MPP20_SATA1_ACTn,
+	MPP21_SATA0_ACTn,
+	MPP22_GPIO,		/* Fan speed (bit 0) */
+	MPP23_GPIO,		/* Fan power */
+	MPP24_GPIO,		/* USB mode select */
+	MPP25_GPIO,		/* Fan rotation fail */
+	MPP26_GPIO,		/* USB device vbus */
+	MPP28_GPIO,		/* USB enable host vbus */
+	MPP29_GPIO,		/* Blue led (slow register) */
+	MPP30_GPIO,		/* Blue led (command register) */
+	MPP31_GPIO,		/* Board power off */
+	MPP32_GPIO,		/* Power button (0 = Released, 1 = Pushed) */
+	MPP33_GPO,		/* Fan speed (bit 2) */
+	0
+};
+
+#define NS2_GPIO_POWER_OFF	31
+
+static void ns2_power_off(void)
+{
+	gpio_set_value(NS2_GPIO_POWER_OFF, 1);
+}
+
+void __init ns2_init(void)
+{
+	/*
+	 * Basic setup. Needs to be called early.
+	 */
+	kirkwood_mpp_conf(ns2_mpp_config);
+
+	kirkwood_ehci_init();
+	kirkwood_ge00_init(&ns2_ge00_data);
+
+	if (gpio_request(NS2_GPIO_POWER_OFF, "power-off") == 0 &&
+	    gpio_direction_output(NS2_GPIO_POWER_OFF, 0) == 0)
+		pm_power_off = ns2_power_off;
+	else
+		pr_err("ns2: failed to configure power-off GPIO\n");
+}
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
index bcffd7c..2f75f3f 100644
--- a/arch/arm/mach-kirkwood/common.h
+++ b/arch/arm/mach-kirkwood/common.h
@@ -112,6 +112,14 @@ void km_kirkwood_init(void);
 static inline void km_kirkwood_init(void) {};
 #endif
 
+#if defined(CONFIG_MACH_INETSPACE_V2_DT) || \
+	defined(CONFIG_MACH_NETSPACE_V2_DT) || \
+	defined(CONFIG_MACH_NETSPACE_MAX_V2_DT)
+void ns2_init(void);
+#else
+static inline void ns2_init(void) {};
+#endif
+
 /* early init functions not converted to fdt yet */
 char *kirkwood_id(void);
 void kirkwood_l2_init(void);
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index f508def..e455c08 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -379,7 +379,9 @@ config LEDS_NS2
 	tristate "LED support for Network Space v2 GPIO LEDs"
 	depends on LEDS_CLASS
 	depends on MACH_NETSPACE_V2 || MACH_INETSPACE_V2 || \
-		   MACH_NETSPACE_MAX_V2 || MACH_D2NET_V2
+		   MACH_NETSPACE_MAX_V2 || MACH_D2NET_V2 || \
+		   MACH_NETSPACE_V2_DT || MACH_INETSPACE_V2_DT || \
+		   MACH_NETSPACE_MAX_V2_DT
 	default y
 	help
 	  This option enable support for the dual-GPIO LED found on the
-- 
1.7.10

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 3/4] ARM: kirkwood: DT board setup for Network Space Lite v2
  2012-10-15 15:34 [PATCH 0/4] Add DT support for Network Space v2 and parents Simon Guinot
  2012-10-15 15:34 ` [PATCH 1/4] leds: leds-ns2: add device tree binding Simon Guinot
  2012-10-15 15:34 ` [PATCH 2/4] ARM: kirkwood: DT board setup for Network Space v2 and parents Simon Guinot
@ 2012-10-15 15:34 ` Simon Guinot
  2012-10-15 15:34 ` [PATCH 4/4] ARM: kirkwood: DT board setup for Network Space Mini v2 Simon Guinot
  2012-10-15 17:01 ` [PATCH 0/4] Add DT support for Network Space v2 and parents Jason Cooper
  4 siblings, 0 replies; 20+ messages in thread
From: Simon Guinot @ 2012-10-15 15:34 UTC (permalink / raw)
  To: linux-arm-kernel

This patch adds DT board setup for the LaCie NAS Network Space Lite v2.
This board is derived from the Network Space v2 and a lot of hardware
characteristics are shared.

- CPU: Marvell 88F6192 800Mhz
- SDRAM memory: 128MB DDR2 200Mhz
- 1 SATA port: internal
- Gigabit ethernet: PHY Marvell 88E1318
- Flash memory: SPI NOR 512KB (Macronix MX25L4005A)
- i2c EEPROM: 512 bytes (24C04 type)
- 2 USB2 ports: host and host/device
- 1 push button
- 1 SATA LED (bi-color, blue and red)

Note that the SATA LED is not compatible with the driver leds-ns2. The
LED behaviour ("on", "off" or "SATA activity blink") is controlled via
a single MPP (21).

Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
---
 arch/arm/boot/dts/Makefile             |    1 +
 arch/arm/boot/dts/kirkwood-ns2lite.dts |   30 ++++++++++++++++++++++++++++++
 arch/arm/mach-kirkwood/Kconfig         |    7 +++++++
 arch/arm/mach-kirkwood/Makefile        |    1 +
 arch/arm/mach-kirkwood/board-dt.c      |    4 +++-
 arch/arm/mach-kirkwood/board-ns2.c     |    3 +++
 arch/arm/mach-kirkwood/common.h        |    3 ++-
 7 files changed, 47 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm/boot/dts/kirkwood-ns2lite.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index e6201b6..42b3e90 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -39,6 +39,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
 	kirkwood-lschlv2.dtb \
 	kirkwood-lsxhl.dtb \
 	kirkwood-ns2.dtb \
+	kirkwood-ns2lite.dtb \
 	kirkwood-ns2max.dtb \
 	kirkwood-ts219-6281.dtb \
 	kirkwood-ts219-6282.dtb
diff --git a/arch/arm/boot/dts/kirkwood-ns2lite.dts b/arch/arm/boot/dts/kirkwood-ns2lite.dts
new file mode 100644
index 0000000..b02eb4e
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ns2lite.dts
@@ -0,0 +1,30 @@
+/dts-v1/;
+
+/include/ "kirkwood-ns2-common.dtsi"
+
+/ {
+	model = "LaCie Network Space Lite v2";
+	compatible = "lacie,netspace_lite_v2", "marvell,kirkwood-88f6192", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	ocp at f1000000 {
+		sata at 80000 {
+			status = "okay";
+			nr-ports = <1>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		blue-sata {
+			label = "ns2:blue:sata";
+			gpios = <&gpio0 30 1>;
+			linux,default-trigger = "default-on";
+		};
+	};
+};
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
index 847e0c2..83df331 100644
--- a/arch/arm/mach-kirkwood/Kconfig
+++ b/arch/arm/mach-kirkwood/Kconfig
@@ -151,6 +151,13 @@ config MACH_NETSPACE_MAX_V2_DT
 	  Say 'Y' here if you want your kernel to support the LaCie
 	  Network Space Max v2 NAS, using Flattened Device Tree.
 
+config MACH_NETSPACE_LITE_V2_DT
+	bool "LaCie Network Space Lite v2 NAS (Flattened Device Tree)"
+	select ARCH_KIRKWOOD_DT
+	help
+	  Say 'Y' here if you want your kernel to support the LaCie
+	  Network Space Lite v2 NAS, using Flattened Device Tree.
+
 config MACH_TS219
 	bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
 	help
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
index 1f63d80..4d4b7d4 100644
--- a/arch/arm/mach-kirkwood/Makefile
+++ b/arch/arm/mach-kirkwood/Makefile
@@ -34,3 +34,4 @@ obj-$(CONFIG_MACH_KM_KIRKWOOD_DT)	+= board-km_kirkwood.o
 obj-$(CONFIG_MACH_INETSPACE_V2_DT)	+= board-ns2.o
 obj-$(CONFIG_MACH_NETSPACE_V2_DT)	+= board-ns2.o
 obj-$(CONFIG_MACH_NETSPACE_MAX_V2_DT)	+= board-ns2.o
+obj-$(CONFIG_MACH_NETSPACE_LITE_V2_DT)	+= board-ns2.o
diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c
index b3e0519..ab7595e 100644
--- a/arch/arm/mach-kirkwood/board-dt.c
+++ b/arch/arm/mach-kirkwood/board-dt.c
@@ -98,7 +98,8 @@ static void __init kirkwood_dt_init(void)
 
 	if (of_machine_is_compatible("lacie,inetspace_v2") ||
 	    of_machine_is_compatible("lacie,netspace_v2") ||
-	    of_machine_is_compatible("lacie,netspace_max_v2"))
+	    of_machine_is_compatible("lacie,netspace_max_v2") ||
+	    of_machine_is_compatible("lacie,netspace_lite_v2"))
 		ns2_init();
 
 	of_platform_populate(NULL, kirkwood_dt_match_table,
@@ -120,6 +121,7 @@ static const char *kirkwood_dt_board_compat[] = {
 	"lacie,inetspace_v2",
 	"lacie,netspace_max_v2",
 	"lacie,netspace_v2",
+	"lacie,netspace_lite_v2",
 	NULL
 };
 
diff --git a/arch/arm/mach-kirkwood/board-ns2.c b/arch/arm/mach-kirkwood/board-ns2.c
index b36c55c..da8c4c5 100644
--- a/arch/arm/mach-kirkwood/board-ns2.c
+++ b/arch/arm/mach-kirkwood/board-ns2.c
@@ -16,6 +16,7 @@
 #include <linux/platform_device.h>
 #include <linux/mv643xx_eth.h>
 #include <linux/gpio.h>
+#include <linux/of.h>
 #include "common.h"
 #include "mpp.h"
 
@@ -73,6 +74,8 @@ void __init ns2_init(void)
 	kirkwood_mpp_conf(ns2_mpp_config);
 
 	kirkwood_ehci_init();
+	if (of_machine_is_compatible("lacie,netspace_lite_v2"))
+		ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0);
 	kirkwood_ge00_init(&ns2_ge00_data);
 
 	if (gpio_request(NS2_GPIO_POWER_OFF, "power-off") == 0 &&
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
index 2f75f3f..6949d81 100644
--- a/arch/arm/mach-kirkwood/common.h
+++ b/arch/arm/mach-kirkwood/common.h
@@ -114,7 +114,8 @@ static inline void km_kirkwood_init(void) {};
 
 #if defined(CONFIG_MACH_INETSPACE_V2_DT) || \
 	defined(CONFIG_MACH_NETSPACE_V2_DT) || \
-	defined(CONFIG_MACH_NETSPACE_MAX_V2_DT)
+	defined(CONFIG_MACH_NETSPACE_MAX_V2_DT) || \
+	defined(CONFIG_MACH_NETSPACE_LITE_V2_DT)
 void ns2_init(void);
 #else
 static inline void ns2_init(void) {};
-- 
1.7.10

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 4/4] ARM: kirkwood: DT board setup for Network Space Mini v2
  2012-10-15 15:34 [PATCH 0/4] Add DT support for Network Space v2 and parents Simon Guinot
                   ` (2 preceding siblings ...)
  2012-10-15 15:34 ` [PATCH 3/4] ARM: kirkwood: DT board setup for Network Space Lite v2 Simon Guinot
@ 2012-10-15 15:34 ` Simon Guinot
  2012-10-15 17:01 ` [PATCH 0/4] Add DT support for Network Space v2 and parents Jason Cooper
  4 siblings, 0 replies; 20+ messages in thread
From: Simon Guinot @ 2012-10-15 15:34 UTC (permalink / raw)
  To: linux-arm-kernel

This patch adds DT board setup for the LaCie NAS Network Space Mini v2
(aka SafeBox). The hardware characteristics are very close to those of
the Network Space Lite v2. The main difference are:
- A GPIO fan which is only available on the NS2 Mini.
- A single USB host port is wired on the NS2 Mini. The NS2 Lite provides
  an additional dual-mode USB port (host/device).

Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
---
 arch/arm/boot/dts/Makefile             |    1 +
 arch/arm/boot/dts/kirkwood-ns2mini.dts |   49 ++++++++++++++++++++++++++++++++
 arch/arm/mach-kirkwood/Kconfig         |    8 ++++++
 arch/arm/mach-kirkwood/Makefile        |    1 +
 arch/arm/mach-kirkwood/board-dt.c      |    4 ++-
 arch/arm/mach-kirkwood/board-ns2.c     |    3 +-
 arch/arm/mach-kirkwood/common.h        |    3 +-
 drivers/leds/Kconfig                   |    2 +-
 8 files changed, 67 insertions(+), 4 deletions(-)
 create mode 100644 arch/arm/boot/dts/kirkwood-ns2mini.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 42b3e90..f2af858 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -41,6 +41,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
 	kirkwood-ns2.dtb \
 	kirkwood-ns2lite.dtb \
 	kirkwood-ns2max.dtb \
+	kirkwood-ns2mini.dtb \
 	kirkwood-ts219-6281.dtb \
 	kirkwood-ts219-6282.dtb
 dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
diff --git a/arch/arm/boot/dts/kirkwood-ns2mini.dts b/arch/arm/boot/dts/kirkwood-ns2mini.dts
new file mode 100644
index 0000000..b58fd3d
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-ns2mini.dts
@@ -0,0 +1,49 @@
+/dts-v1/;
+
+/include/ "kirkwood-ns2-common.dtsi"
+
+/ {
+	model = "LaCie Network Space Mini v2";
+	compatible = "lacie,netspace_mini_v2", "marvell,kirkwood-88f6192", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	ocp at f1000000 {
+		sata at 80000 {
+			status = "okay";
+			nr-ports = <1>;
+		};
+	};
+
+	gpio_fan {
+		compatible = "gpio-fan";
+		gpios = <&gpio0 22 1
+			 &gpio0  7 1
+			 &gpio1  1 1
+			 &gpio0 23 1>;
+		gpio-fan,speed-map =
+			<   0  0
+			 3000 15
+			 3180 14
+			 4140 13
+			 4570 12
+			 6760 11
+			 7140 10
+			 7980  9
+			 9200  8>;
+		alarm-gpios = <&gpio0 25 1>;
+	};
+
+	ns2-leds {
+		compatible = "ns2-leds";
+
+		blue-sata {
+			label = "ns2:blue:sata";
+			slow-gpio = <&gpio0 29 0>;
+			cmd-gpio = <&gpio0 30 0>;
+		};
+	};
+};
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
index 83df331..757bdb3 100644
--- a/arch/arm/mach-kirkwood/Kconfig
+++ b/arch/arm/mach-kirkwood/Kconfig
@@ -158,6 +158,14 @@ config MACH_NETSPACE_LITE_V2_DT
 	  Say 'Y' here if you want your kernel to support the LaCie
 	  Network Space Lite v2 NAS, using Flattened Device Tree.
 
+config MACH_NETSPACE_MINI_V2_DT
+	bool "LaCie Network Space Mini v2 NAS (Flattened Device Tree)"
+	select ARCH_KIRKWOOD_DT
+	help
+	  Say 'Y' here if you want your kernel to support the LaCie
+	  Network Space Mini v2 NAS (aka SafeBox), using Flattened
+	  Device Tree.
+
 config MACH_TS219
 	bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
 	help
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
index 4d4b7d4..3ff4aa1 100644
--- a/arch/arm/mach-kirkwood/Makefile
+++ b/arch/arm/mach-kirkwood/Makefile
@@ -35,3 +35,4 @@ obj-$(CONFIG_MACH_INETSPACE_V2_DT)	+= board-ns2.o
 obj-$(CONFIG_MACH_NETSPACE_V2_DT)	+= board-ns2.o
 obj-$(CONFIG_MACH_NETSPACE_MAX_V2_DT)	+= board-ns2.o
 obj-$(CONFIG_MACH_NETSPACE_LITE_V2_DT)	+= board-ns2.o
+obj-$(CONFIG_MACH_NETSPACE_MINI_V2_DT)	+= board-ns2.o
diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c
index ab7595e..c3dd5d2 100644
--- a/arch/arm/mach-kirkwood/board-dt.c
+++ b/arch/arm/mach-kirkwood/board-dt.c
@@ -99,7 +99,8 @@ static void __init kirkwood_dt_init(void)
 	if (of_machine_is_compatible("lacie,inetspace_v2") ||
 	    of_machine_is_compatible("lacie,netspace_v2") ||
 	    of_machine_is_compatible("lacie,netspace_max_v2") ||
-	    of_machine_is_compatible("lacie,netspace_lite_v2"))
+	    of_machine_is_compatible("lacie,netspace_lite_v2") ||
+	    of_machine_is_compatible("lacie,netspace_mini_v2"))
 		ns2_init();
 
 	of_platform_populate(NULL, kirkwood_dt_match_table,
@@ -122,6 +123,7 @@ static const char *kirkwood_dt_board_compat[] = {
 	"lacie,netspace_max_v2",
 	"lacie,netspace_v2",
 	"lacie,netspace_lite_v2",
+	"lacie,netspace_mini_v2",
 	NULL
 };
 
diff --git a/arch/arm/mach-kirkwood/board-ns2.c b/arch/arm/mach-kirkwood/board-ns2.c
index da8c4c5..78596c4 100644
--- a/arch/arm/mach-kirkwood/board-ns2.c
+++ b/arch/arm/mach-kirkwood/board-ns2.c
@@ -74,7 +74,8 @@ void __init ns2_init(void)
 	kirkwood_mpp_conf(ns2_mpp_config);
 
 	kirkwood_ehci_init();
-	if (of_machine_is_compatible("lacie,netspace_lite_v2"))
+	if (of_machine_is_compatible("lacie,netspace_lite_v2") ||
+	    of_machine_is_compatible("lacie,netspace_mini_v2"))
 		ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0);
 	kirkwood_ge00_init(&ns2_ge00_data);
 
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
index 6949d81..95eb69b 100644
--- a/arch/arm/mach-kirkwood/common.h
+++ b/arch/arm/mach-kirkwood/common.h
@@ -115,7 +115,8 @@ static inline void km_kirkwood_init(void) {};
 #if defined(CONFIG_MACH_INETSPACE_V2_DT) || \
 	defined(CONFIG_MACH_NETSPACE_V2_DT) || \
 	defined(CONFIG_MACH_NETSPACE_MAX_V2_DT) || \
-	defined(CONFIG_MACH_NETSPACE_LITE_V2_DT)
+	defined(CONFIG_MACH_NETSPACE_LITE_V2_DT) || \
+	defined(CONFIG_MACH_NETSPACE_MINI_V2_DT)
 void ns2_init(void);
 #else
 static inline void ns2_init(void) {};
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index e455c08..b58bc8a 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -381,7 +381,7 @@ config LEDS_NS2
 	depends on MACH_NETSPACE_V2 || MACH_INETSPACE_V2 || \
 		   MACH_NETSPACE_MAX_V2 || MACH_D2NET_V2 || \
 		   MACH_NETSPACE_V2_DT || MACH_INETSPACE_V2_DT || \
-		   MACH_NETSPACE_MAX_V2_DT
+		   MACH_NETSPACE_MAX_V2_DT || MACH_NETSPACE_MINI_V2_DT
 	default y
 	help
 	  This option enable support for the dual-GPIO LED found on the
-- 
1.7.10

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 0/4] Add DT support for Network Space v2 and parents
  2012-10-15 15:34 [PATCH 0/4] Add DT support for Network Space v2 and parents Simon Guinot
                   ` (3 preceding siblings ...)
  2012-10-15 15:34 ` [PATCH 4/4] ARM: kirkwood: DT board setup for Network Space Mini v2 Simon Guinot
@ 2012-10-15 17:01 ` Jason Cooper
  2012-10-15 18:50   ` Simon Guinot
  4 siblings, 1 reply; 20+ messages in thread
From: Jason Cooper @ 2012-10-15 17:01 UTC (permalink / raw)
  To: linux-arm-kernel

Hey Simon,

On Mon, Oct 15, 2012 at 05:34:51PM +0200, Simon Guinot wrote:
> This patch series provides DT support for LaCie NAS Network Space v2 and
> parents. This includes the following machines:
>  - Internet Space v2
>  - Network Space v2
>  - Network Space Max v2
>  - Network Space Lite v2
>  - Network Space Mini v2
> 
> Note that the three first boards are already supported by the Linux
> kernel via an "old-fashion" board setup. The two lasts (Lite and Mini)
> are new boards.

Have you checked building support for the old and new in one kernel?  On
a quick check, it looks okay, but I only checked that ns2_init() wasn't
the _init function for the legacy board files.

> Also note that the first patch of the series is related with the LED
> subsystem. It adds device tree binding to the driver leds-ns2.
> 
> Simon Guinot (4):
>   leds: leds-ns2: add device tree binding
>   ARM: kirkwood: DT board setup for Network Space v2 and parents
>   ARM: kirkwood: DT board setup for Network Space Lite v2
>   ARM: kirkwood: DT board setup for Network Space Mini v2

I'm pretty sure this isn't the first version of this patch series ;-)
No need to resend, but could you attach a version number and changelog?

thx,

Jason.

> 
>  .../devicetree/bindings/gpio/leds-ns2.txt          |   26 ++++++
>  arch/arm/boot/dts/Makefile                         |    5 ++
>  arch/arm/boot/dts/kirkwood-is2.dts                 |   30 +++++++
>  arch/arm/boot/dts/kirkwood-ns2-common.dtsi         |   63 ++++++++++++++
>  arch/arm/boot/dts/kirkwood-ns2.dts                 |   30 +++++++
>  arch/arm/boot/dts/kirkwood-ns2lite.dts             |   30 +++++++
>  arch/arm/boot/dts/kirkwood-ns2max.dts              |   49 +++++++++++
>  arch/arm/boot/dts/kirkwood-ns2mini.dts             |   49 +++++++++++
>  arch/arm/mach-kirkwood/Kconfig                     |   36 ++++++++
>  arch/arm/mach-kirkwood/Makefile                    |    5 ++
>  arch/arm/mach-kirkwood/board-dt.c                  |   12 +++
>  arch/arm/mach-kirkwood/board-ns2.c                 |   87 ++++++++++++++++++++
>  arch/arm/mach-kirkwood/common.h                    |   10 +++
>  drivers/leds/Kconfig                               |    4 +-
>  drivers/leds/leds-ns2.c                            |   84 ++++++++++++++++++-
>  15 files changed, 516 insertions(+), 4 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/gpio/leds-ns2.txt
>  create mode 100644 arch/arm/boot/dts/kirkwood-is2.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ns2-common.dtsi
>  create mode 100644 arch/arm/boot/dts/kirkwood-ns2.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ns2lite.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ns2max.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ns2mini.dts
>  create mode 100644 arch/arm/mach-kirkwood/board-ns2.c
> 
> -- 
> 1.7.10
> 

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/4] leds: leds-ns2: add device tree binding
  2012-10-15 15:34 ` [PATCH 1/4] leds: leds-ns2: add device tree binding Simon Guinot
@ 2012-10-15 17:41   ` Jason Cooper
  2012-10-15 19:12     ` Simon Guinot
  2012-10-16 13:02   ` Arnd Bergmann
  1 sibling, 1 reply; 20+ messages in thread
From: Jason Cooper @ 2012-10-15 17:41 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Oct 15, 2012 at 05:34:52PM +0200, Simon Guinot wrote:
> Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
> ---
>  .../devicetree/bindings/gpio/leds-ns2.txt          |   26 ++++++
>  drivers/leds/leds-ns2.c                            |   84 +++++++++++++++++++-
>  2 files changed, 107 insertions(+), 3 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/gpio/leds-ns2.txt
> 
> diff --git a/Documentation/devicetree/bindings/gpio/leds-ns2.txt b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
> new file mode 100644
> index 0000000..1a84969
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
> @@ -0,0 +1,26 @@
> +Binding for dual-GPIO LED found on Network Space v2 (and parents).
> +
> +Required properties:
> +- compatible: "ns2-leds".
> +
> +Each LED is represented as a sub-node of the ns2-leds device.
> +
> +Required sub-node properties:
> +- cmd-gpio: Command LED GPIO. See OF device-tree GPIO specification.
> +- slow-gpio: Slow LED GPIO. See OF device-tree GPIO specification.
> +
> +Optional sub-node properties:
> +- label: Name for this LED. If omitted, the label is taken from the node name.
> +- linux,default-trigger: Trigger assigned to the LED.
> +
> +Example:
> +
> +ns2-leds {
> +	compatible = "ns2-leds";
> +
> +	blue-sata {
> +		label = "ns2:blue:sata";
> +		slow-gpio = <&gpio0 29 0>;
> +		cmd-gpio = <&gpio0 30 0>;
> +	};
> +};
> diff --git a/drivers/leds/leds-ns2.c b/drivers/leds/leds-ns2.c
> index d176ec8..55d199b 100644
> --- a/drivers/leds/leds-ns2.c
> +++ b/drivers/leds/leds-ns2.c
> @@ -30,6 +30,7 @@
>  #include <linux/leds.h>
>  #include <linux/module.h>
>  #include <linux/platform_data/leds-kirkwood-ns2.h>
> +#include <linux/of_gpio.h>
>  
>  /*
>   * The Network Space v2 dual-GPIO LED is wired to a CPLD and can blink in
> @@ -263,6 +264,68 @@ static void delete_ns2_led(struct ns2_led_data *led_dat)
>  	gpio_free(led_dat->slow);
>  }
>  
> +#ifdef CONFIG_OF_GPIO
> +/*
> + * Translate OpenFirmware node properties into platform_data.
> + */
> +static int __devinit
> +ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
> +{
> +	struct device_node *np = dev->of_node;
> +	struct device_node *child;
> +	struct ns2_led *leds;
> +	int num_leds = 0;
> +	int i = 0;
> +
> +	num_leds = of_get_child_count(np);
> +	if (!num_leds)
> +		return -ENODEV;
> +
> +	leds = devm_kzalloc(dev, num_leds * sizeof(struct ns2_led),
> +			    GFP_KERNEL);
> +	if (!leds)
> +		return -ENOMEM;
> +
> +	for_each_child_of_node(np, child) {
> +		const char *string;
> +		int ret;
> +
> +		ret = of_get_named_gpio(child, "cmd-gpio", 0);
> +		if (ret < 0)
> +			return ret;

free leds?

> +		leds[i].cmd = ret;
> +		ret = of_get_named_gpio(child, "slow-gpio", 0);
> +		if (ret < 0)
> +			return ret;

same here.

> +		leds[i].slow = ret;
> +		ret = of_property_read_string(child, "label", &string);
> +		leds[i].name = (ret == 0) ? string : child->name;
> +		ret = of_property_read_string(child, "linux,default-trigger",
> +					      &string);
> +		if (ret == 0)
> +			leds[i].default_trigger = string;
> +
> +		i++;
> +	}
> +
> +	pdata->leds = leds;
> +	pdata->num_leds = num_leds;
> +
> +	return 0;
> +}
> +
> +static const struct of_device_id of_ns2_leds_match[] = {
> +	{ .compatible = "ns2-leds", },

Is this LaCie-specific?  eg "lacie,ns2-leds"?

> +	{},
> +};
> +#else
> +static int __devinit
> +ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
> +{
> +	return -ENODEV;
> +}
> +#endif /* CONFIG_OF_GPIO */

The above doesn't look right to me.  The only time
ns2_leds_get_of_pdata() gets called is when OF_GPIO is enabled.  You
should be able to remove the #else block.

> +
>  static int __devinit ns2_led_probe(struct platform_device *pdev)
>  {
>  	struct ns2_led_platform_data *pdata = pdev->dev.platform_data;
> @@ -270,11 +333,25 @@ static int __devinit ns2_led_probe(struct platform_device *pdev)
>  	int i;
>  	int ret;
>  
> +#ifdef CONFIG_OF_GPIO
> +	if (!pdata) {
> +		pdata = devm_kzalloc(&pdev->dev,
> +				     sizeof(struct ns2_led_platform_data),
> +				     GFP_KERNEL);
> +		if (!pdata)
> +			return -ENOMEM;
> +
> +		ret = ns2_leds_get_of_pdata(&pdev->dev, pdata);
> +		if (ret)
> +			return ret;
> +	}
> +#else
>  	if (!pdata)
>  		return -EINVAL;
> +#endif /* CONFIG_OF_GPIO */
>  
>  	leds_data = devm_kzalloc(&pdev->dev, sizeof(struct ns2_led_data) *
> -			    pdata->num_leds, GFP_KERNEL);
> +				 pdata->num_leds, GFP_KERNEL);
>  	if (!leds_data)
>  		return -ENOMEM;
>  
> @@ -312,8 +389,9 @@ static struct platform_driver ns2_led_driver = {
>  	.probe		= ns2_led_probe,
>  	.remove		= __devexit_p(ns2_led_remove),
>  	.driver		= {
> -		.name	= "leds-ns2",
> -		.owner	= THIS_MODULE,
> +		.name		= "leds-ns2",
> +		.owner		= THIS_MODULE,

nit.  whitespace before '=', above two lines.

> +		.of_match_table	= of_match_ptr(of_ns2_leds_match),

Have you tried this with OF_GPIO=n?  of_match_ptr() handles CONFIG_OF
being enabled/disabled.  Which means the case of CONFIG_OF=y,
CONFIG_OF_GPIO=n appears to be unhandled.

thx,

Jason.

>  	},
>  };
>  
> -- 
> 1.7.10
> 

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 0/4] Add DT support for Network Space v2 and parents
  2012-10-15 17:01 ` [PATCH 0/4] Add DT support for Network Space v2 and parents Jason Cooper
@ 2012-10-15 18:50   ` Simon Guinot
  2012-10-15 19:13     ` Jason Cooper
  0 siblings, 1 reply; 20+ messages in thread
From: Simon Guinot @ 2012-10-15 18:50 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Oct 15, 2012 at 01:01:44PM -0400, Jason Cooper wrote:
> Hey Simon,

Hi Jason,

> 
> On Mon, Oct 15, 2012 at 05:34:51PM +0200, Simon Guinot wrote:
> > This patch series provides DT support for LaCie NAS Network Space v2 and
> > parents. This includes the following machines:
> >  - Internet Space v2
> >  - Network Space v2
> >  - Network Space Max v2
> >  - Network Space Lite v2
> >  - Network Space Mini v2
> > 
> > Note that the three first boards are already supported by the Linux
> > kernel via an "old-fashion" board setup. The two lasts (Lite and Mini)
> > are new boards.
> 
> Have you checked building support for the old and new in one kernel?  On
> a quick check, it looks okay, but I only checked that ns2_init() wasn't
> the _init function for the legacy board files.

Yes, I have checked building with both old and DT board setups.

> 
> > Also note that the first patch of the series is related with the LED
> > subsystem. It adds device tree binding to the driver leds-ns2.
> > 
> > Simon Guinot (4):
> >   leds: leds-ns2: add device tree binding
> >   ARM: kirkwood: DT board setup for Network Space v2 and parents
> >   ARM: kirkwood: DT board setup for Network Space Lite v2
> >   ARM: kirkwood: DT board setup for Network Space Mini v2
> 
> I'm pretty sure this isn't the first version of this patch series ;-)
> No need to resend, but could you attach a version number and changelog?

Yes, you are right. For the second patch, it is the second version.
But all the other patches are at their first version. Then the whole
patch series is more a v1 than a v2. I am always embarrassed when the
patches versions are not the same within a series...

If you agree, I will reply against the second patch in order to
underline the changes.

Thanks,

Simon

> 
> thx,
> 
> Jason.
> 
> > 
> >  .../devicetree/bindings/gpio/leds-ns2.txt          |   26 ++++++
> >  arch/arm/boot/dts/Makefile                         |    5 ++
> >  arch/arm/boot/dts/kirkwood-is2.dts                 |   30 +++++++
> >  arch/arm/boot/dts/kirkwood-ns2-common.dtsi         |   63 ++++++++++++++
> >  arch/arm/boot/dts/kirkwood-ns2.dts                 |   30 +++++++
> >  arch/arm/boot/dts/kirkwood-ns2lite.dts             |   30 +++++++
> >  arch/arm/boot/dts/kirkwood-ns2max.dts              |   49 +++++++++++
> >  arch/arm/boot/dts/kirkwood-ns2mini.dts             |   49 +++++++++++
> >  arch/arm/mach-kirkwood/Kconfig                     |   36 ++++++++
> >  arch/arm/mach-kirkwood/Makefile                    |    5 ++
> >  arch/arm/mach-kirkwood/board-dt.c                  |   12 +++
> >  arch/arm/mach-kirkwood/board-ns2.c                 |   87 ++++++++++++++++++++
> >  arch/arm/mach-kirkwood/common.h                    |   10 +++
> >  drivers/leds/Kconfig                               |    4 +-
> >  drivers/leds/leds-ns2.c                            |   84 ++++++++++++++++++-
> >  15 files changed, 516 insertions(+), 4 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/gpio/leds-ns2.txt
> >  create mode 100644 arch/arm/boot/dts/kirkwood-is2.dts
> >  create mode 100644 arch/arm/boot/dts/kirkwood-ns2-common.dtsi
> >  create mode 100644 arch/arm/boot/dts/kirkwood-ns2.dts
> >  create mode 100644 arch/arm/boot/dts/kirkwood-ns2lite.dts
> >  create mode 100644 arch/arm/boot/dts/kirkwood-ns2max.dts
> >  create mode 100644 arch/arm/boot/dts/kirkwood-ns2mini.dts
> >  create mode 100644 arch/arm/mach-kirkwood/board-ns2.c
> > 
> > -- 
> > 1.7.10
> > 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20121015/db3504ec/attachment.sig>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/4] leds: leds-ns2: add device tree binding
  2012-10-15 17:41   ` Jason Cooper
@ 2012-10-15 19:12     ` Simon Guinot
  2012-10-15 19:58       ` Jason Cooper
  0 siblings, 1 reply; 20+ messages in thread
From: Simon Guinot @ 2012-10-15 19:12 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Oct 15, 2012 at 01:41:44PM -0400, Jason Cooper wrote:
> On Mon, Oct 15, 2012 at 05:34:52PM +0200, Simon Guinot wrote:
> > Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
> > ---
> >  .../devicetree/bindings/gpio/leds-ns2.txt          |   26 ++++++
> >  drivers/leds/leds-ns2.c                            |   84 +++++++++++++++++++-
> >  2 files changed, 107 insertions(+), 3 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/gpio/leds-ns2.txt
> > 
> > diff --git a/Documentation/devicetree/bindings/gpio/leds-ns2.txt b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
> > new file mode 100644
> > index 0000000..1a84969
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
> > @@ -0,0 +1,26 @@
> > +Binding for dual-GPIO LED found on Network Space v2 (and parents).
> > +
> > +Required properties:
> > +- compatible: "ns2-leds".
> > +
> > +Each LED is represented as a sub-node of the ns2-leds device.
> > +
> > +Required sub-node properties:
> > +- cmd-gpio: Command LED GPIO. See OF device-tree GPIO specification.
> > +- slow-gpio: Slow LED GPIO. See OF device-tree GPIO specification.
> > +
> > +Optional sub-node properties:
> > +- label: Name for this LED. If omitted, the label is taken from the node name.
> > +- linux,default-trigger: Trigger assigned to the LED.
> > +
> > +Example:
> > +
> > +ns2-leds {
> > +	compatible = "ns2-leds";
> > +
> > +	blue-sata {
> > +		label = "ns2:blue:sata";
> > +		slow-gpio = <&gpio0 29 0>;
> > +		cmd-gpio = <&gpio0 30 0>;
> > +	};
> > +};
> > diff --git a/drivers/leds/leds-ns2.c b/drivers/leds/leds-ns2.c
> > index d176ec8..55d199b 100644
> > --- a/drivers/leds/leds-ns2.c
> > +++ b/drivers/leds/leds-ns2.c
> > @@ -30,6 +30,7 @@
> >  #include <linux/leds.h>
> >  #include <linux/module.h>
> >  #include <linux/platform_data/leds-kirkwood-ns2.h>
> > +#include <linux/of_gpio.h>
> >  
> >  /*
> >   * The Network Space v2 dual-GPIO LED is wired to a CPLD and can blink in
> > @@ -263,6 +264,68 @@ static void delete_ns2_led(struct ns2_led_data *led_dat)
> >  	gpio_free(led_dat->slow);
> >  }
> >  
> > +#ifdef CONFIG_OF_GPIO
> > +/*
> > + * Translate OpenFirmware node properties into platform_data.
> > + */
> > +static int __devinit
> > +ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
> > +{
> > +	struct device_node *np = dev->of_node;
> > +	struct device_node *child;
> > +	struct ns2_led *leds;
> > +	int num_leds = 0;
> > +	int i = 0;
> > +
> > +	num_leds = of_get_child_count(np);
> > +	if (!num_leds)
> > +		return -ENODEV;
> > +
> > +	leds = devm_kzalloc(dev, num_leds * sizeof(struct ns2_led),
> > +			    GFP_KERNEL);
> > +	if (!leds)
> > +		return -ENOMEM;
> > +
> > +	for_each_child_of_node(np, child) {
> > +		const char *string;
> > +		int ret;
> > +
> > +		ret = of_get_named_gpio(child, "cmd-gpio", 0);
> > +		if (ret < 0)
> > +			return ret;
> 
> free leds?

Maybe I missed something but I though it was the purpose of using devres
function as devm_kzalloc.

> 
> > +		leds[i].cmd = ret;
> > +		ret = of_get_named_gpio(child, "slow-gpio", 0);
> > +		if (ret < 0)
> > +			return ret;
> 
> same here.
> 
> > +		leds[i].slow = ret;
> > +		ret = of_property_read_string(child, "label", &string);
> > +		leds[i].name = (ret == 0) ? string : child->name;
> > +		ret = of_property_read_string(child, "linux,default-trigger",
> > +					      &string);
> > +		if (ret == 0)
> > +			leds[i].default_trigger = string;
> > +
> > +		i++;
> > +	}
> > +
> > +	pdata->leds = leds;
> > +	pdata->num_leds = num_leds;
> > +
> > +	return 0;
> > +}
> > +
> > +static const struct of_device_id of_ns2_leds_match[] = {
> > +	{ .compatible = "ns2-leds", },
> 
> Is this LaCie-specific?  eg "lacie,ns2-leds"?

Yes I think it is LaCie specific.

> 
> > +	{},
> > +};
> > +#else
> > +static int __devinit
> > +ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
> > +{
> > +	return -ENODEV;
> > +}
> > +#endif /* CONFIG_OF_GPIO */
> 
> The above doesn't look right to me.  The only time
> ns2_leds_get_of_pdata() gets called is when OF_GPIO is enabled.  You
> should be able to remove the #else block.

Yes you are right.

> 
> > +
> >  static int __devinit ns2_led_probe(struct platform_device *pdev)
> >  {
> >  	struct ns2_led_platform_data *pdata = pdev->dev.platform_data;
> > @@ -270,11 +333,25 @@ static int __devinit ns2_led_probe(struct platform_device *pdev)
> >  	int i;
> >  	int ret;
> >  
> > +#ifdef CONFIG_OF_GPIO
> > +	if (!pdata) {
> > +		pdata = devm_kzalloc(&pdev->dev,
> > +				     sizeof(struct ns2_led_platform_data),
> > +				     GFP_KERNEL);
> > +		if (!pdata)
> > +			return -ENOMEM;
> > +
> > +		ret = ns2_leds_get_of_pdata(&pdev->dev, pdata);
> > +		if (ret)
> > +			return ret;
> > +	}
> > +#else
> >  	if (!pdata)
> >  		return -EINVAL;
> > +#endif /* CONFIG_OF_GPIO */
> >  
> >  	leds_data = devm_kzalloc(&pdev->dev, sizeof(struct ns2_led_data) *
> > -			    pdata->num_leds, GFP_KERNEL);
> > +				 pdata->num_leds, GFP_KERNEL);
> >  	if (!leds_data)
> >  		return -ENOMEM;
> >  
> > @@ -312,8 +389,9 @@ static struct platform_driver ns2_led_driver = {
> >  	.probe		= ns2_led_probe,
> >  	.remove		= __devexit_p(ns2_led_remove),
> >  	.driver		= {
> > -		.name	= "leds-ns2",
> > -		.owner	= THIS_MODULE,
> > +		.name		= "leds-ns2",
> > +		.owner		= THIS_MODULE,
> 
> nit.  whitespace before '=', above two lines.

Sorry I don't get it. For the two lines before, I used two tabs before
'='. As a result, this lines are aligned with the next one. I got no
warnings and no errors from checkpatch.pl.

> 
> > +		.of_match_table	= of_match_ptr(of_ns2_leds_match),
> 
> Have you tried this with OF_GPIO=n?  of_match_ptr() handles CONFIG_OF
> being enabled/disabled.  Which means the case of CONFIG_OF=y,
> CONFIG_OF_GPIO=n appears to be unhandled.

Good caught. I guess I have just copied a bug from the driver gpio-fan.

Thank you for the review.

Simon

> 
> thx,
> 
> Jason.
> 
> >  	},
> >  };
> >  
> > -- 
> > 1.7.10
> > 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20121015/f4add623/attachment.sig>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 0/4] Add DT support for Network Space v2 and parents
  2012-10-15 18:50   ` Simon Guinot
@ 2012-10-15 19:13     ` Jason Cooper
  0 siblings, 0 replies; 20+ messages in thread
From: Jason Cooper @ 2012-10-15 19:13 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Oct 15, 2012 at 08:50:37PM +0200, Simon Guinot wrote:
> On Mon, Oct 15, 2012 at 01:01:44PM -0400, Jason Cooper wrote:
> > I'm pretty sure this isn't the first version of this patch series ;-)
> > No need to resend, but could you attach a version number and changelog?
> 
> Yes, you are right. For the second patch, it is the second version.
> But all the other patches are at their first version. Then the whole
> patch series is more a v1 than a v2. I am always embarrassed when the
> patches versions are not the same within a series...

Yes, it makes my skin crawl when I send something out like that as well.

My rule of thumb is that if the patch subject matter is still identical
to the previous version, then I only increment that patch.  If suggested
changes cause a reshuffle of the whole series, then I just increment the
version number across the board.

In this case, incrementing the first patch would have been fine.

> If you agree, I will reply against the second patch in order to
> underline the changes.

Perfect.

thx,

Jason.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 2/4] ARM: kirkwood: DT board setup for Network Space v2 and parents
  2012-10-15 15:34 ` [PATCH 2/4] ARM: kirkwood: DT board setup for Network Space v2 and parents Simon Guinot
@ 2012-10-15 19:36   ` Simon Guinot
  2012-10-15 19:58   ` Rob Herring
  1 sibling, 0 replies; 20+ messages in thread
From: Simon Guinot @ 2012-10-15 19:36 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Oct 15, 2012 at 05:34:53PM +0200, Simon Guinot wrote:
> This patch adds DT board setup for LaCie Network Space v2 and parents,
> based on the Marvell Kirkwood 6281 SoC. This includes Network Space v2
> (Max) and Internet Space v2.
> 
> Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
> ---

It is not mentioned in the title but this patch is a v2. Here are the
differences with v1:

- Rebased against Linux 3.7-rc1.
- Add missing Kconfig options MACH_INETSPACE_V2_DT and
  MACH_NETSPACE_MAX_V2_DT.
- Use ns2-leds DT binding.
- Move gpio-leds definition out from kirkwood-ns2-common.dtsi. The ns2
  lite board (patch 3/4) uses a different configuration for GPIO LEDs.

>  arch/arm/boot/dts/Makefile                 |    3 +
>  arch/arm/boot/dts/kirkwood-is2.dts         |   30 ++++++++++
>  arch/arm/boot/dts/kirkwood-ns2-common.dtsi |   63 +++++++++++++++++++++
>  arch/arm/boot/dts/kirkwood-ns2.dts         |   30 ++++++++++
>  arch/arm/boot/dts/kirkwood-ns2max.dts      |   49 ++++++++++++++++
>  arch/arm/mach-kirkwood/Kconfig             |   21 +++++++
>  arch/arm/mach-kirkwood/Makefile            |    3 +
>  arch/arm/mach-kirkwood/board-dt.c          |    8 +++
>  arch/arm/mach-kirkwood/board-ns2.c         |   83 ++++++++++++++++++++++++++++
>  arch/arm/mach-kirkwood/common.h            |    8 +++
>  drivers/leds/Kconfig                       |    4 +-
>  11 files changed, 301 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/boot/dts/kirkwood-is2.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ns2-common.dtsi
>  create mode 100644 arch/arm/boot/dts/kirkwood-ns2.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ns2max.dts
>  create mode 100644 arch/arm/mach-kirkwood/board-ns2.c
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index c1ce813..e6201b6 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -34,9 +34,12 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
>  	kirkwood-ib62x0.dtb \
>  	kirkwood-iconnect.dtb \
>  	kirkwood-iomega_ix2_200.dtb \
> +	kirkwood-is2.dtb \
>  	kirkwood-km_kirkwood.dtb \
>  	kirkwood-lschlv2.dtb \
>  	kirkwood-lsxhl.dtb \
> +	kirkwood-ns2.dtb \
> +	kirkwood-ns2max.dtb \
>  	kirkwood-ts219-6281.dtb \
>  	kirkwood-ts219-6282.dtb
>  dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
> diff --git a/arch/arm/boot/dts/kirkwood-is2.dts b/arch/arm/boot/dts/kirkwood-is2.dts
> new file mode 100644
> index 0000000..7bc4677
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-is2.dts
> @@ -0,0 +1,30 @@
> +/dts-v1/;
> +
> +/include/ "kirkwood-ns2-common.dtsi"
> +
> +/ {
> +	model = "LaCie Internet Space v2";
> +	compatible = "lacie,inetspace_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	ocp at f1000000 {
> +		sata at 80000 {
> +			status = "okay";
> +			nr-ports = <1>;
> +		};
> +	};
> +
> +	ns2-leds {
> +		compatible = "ns2-leds";
> +
> +		blue-sata {
> +			label = "ns2:blue:sata";
> +			slow-gpio = <&gpio0 29 0>;
> +			cmd-gpio = <&gpio0 30 0>;
> +		};
> +	};
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
> new file mode 100644
> index 0000000..9bc6785
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
> @@ -0,0 +1,63 @@
> +/include/ "kirkwood.dtsi"
> +
> +/ {
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	ocp at f1000000 {
> +		serial at 12000 {
> +			clock-frequency = <166666667>;
> +			status = "okay";
> +		};
> +
> +		spi at 10600 {
> +			status = "okay";
> +
> +			flash at 0 {
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				compatible = "mx25l4005a";
> +				reg = <0>;
> +				spi-max-frequency = <20000000>;
> +				mode = <0>;
> +
> +				partition at 0 {
> +					reg = <0x0 0x80000>;
> +					label = "u-boot";
> +				};
> +			};
> +		};
> +
> +		i2c at 11000 {
> +			status = "okay";
> +
> +			eeprom at 50 {
> +				compatible = "at,24c04";
> +				pagesize = <16>;
> +				reg = <0x50>;
> +			};
> +		};
> +	};
> +
> +	gpio_keys {
> +		compatible = "gpio-keys";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		button at 1 {
> +			label = "Power push button";
> +			linux,code = <116>;
> +			gpios = <&gpio1 0 0>;
> +		};
> +	};
> +
> +	gpio-leds {
> +		compatible = "gpio-leds";
> +
> +		red-fail {
> +			label = "ns2:red:fail";
> +			gpios = <&gpio0 12 0>;
> +		};
> +	};
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ns2.dts b/arch/arm/boot/dts/kirkwood-ns2.dts
> new file mode 100644
> index 0000000..d018213
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ns2.dts
> @@ -0,0 +1,30 @@
> +/dts-v1/;
> +
> +/include/ "kirkwood-ns2-common.dtsi"
> +
> +/ {
> +	model = "LaCie Network Space v2";
> +	compatible = "lacie,netspace_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x10000000>;
> +	};
> +
> +	ocp at f1000000 {
> +		sata at 80000 {
> +			status = "okay";
> +			nr-ports = <1>;
> +		};
> +	};
> +
> +	ns2-leds {
> +		compatible = "ns2-leds";
> +
> +		blue-sata {
> +			label = "ns2:blue:sata";
> +			slow-gpio = <&gpio0 29 0>;
> +			cmd-gpio = <&gpio0 30 0>;
> +		};
> +	};
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ns2max.dts b/arch/arm/boot/dts/kirkwood-ns2max.dts
> new file mode 100644
> index 0000000..82156e2
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ns2max.dts
> @@ -0,0 +1,49 @@
> +/dts-v1/;
> +
> +/include/ "kirkwood-ns2-common.dtsi"
> +
> +/ {
> +	model = "LaCie Network Space Max v2";
> +	compatible = "lacie,netspace_max_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x10000000>;
> +	};
> +
> +	ocp at f1000000 {
> +		sata at 80000 {
> +			status = "okay";
> +			nr-ports = <2>;
> +		};
> +	};
> +
> +	gpio_fan {
> +		compatible = "gpio-fan";
> +		gpios = <&gpio0 22 1
> +			 &gpio0  7 1
> +			 &gpio1  1 1
> +			 &gpio0 23 1>;
> +		gpio-fan,speed-map =
> +			<   0  0
> +			 1500 15
> +			 1700 14
> +			 1800 13
> +			 2100 12
> +			 3100 11
> +			 3300 10
> +			 4300  9
> +			 5500  8>;
> +		alarm-gpios = <&gpio0 25 1>;
> +	};
> +
> +	ns2-leds {
> +		compatible = "ns2-leds";
> +
> +		blue-sata {
> +			label = "ns2:blue:sata";
> +			slow-gpio = <&gpio0 29 0>;
> +			cmd-gpio = <&gpio0 30 0>;
> +		};
> +	};
> +};
> diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
> index 50bca50..847e0c2 100644
> --- a/arch/arm/mach-kirkwood/Kconfig
> +++ b/arch/arm/mach-kirkwood/Kconfig
> @@ -130,6 +130,27 @@ config MACH_KM_KIRKWOOD_DT
>  	  Say 'Y' here if you want your kernel to support the
>  	  Keymile Kirkwood Reference Desgin, using Flattened Device Tree.
>  
> +config MACH_INETSPACE_V2_DT
> +	bool "LaCie Internet Space v2 NAS (Flattened Device Tree)"
> +	select ARCH_KIRKWOOD_DT
> +	help
> +	  Say 'Y' here if you want your kernel to support the LaCie
> +	  Internet Space v2 NAS, using Flattened Device Tree.
> +
> +config MACH_NETSPACE_V2_DT
> +	bool "LaCie Network Space v2 NAS (Flattened Device Tree)"
> +	select ARCH_KIRKWOOD_DT
> +	help
> +	  Say 'Y' here if you want your kernel to support the LaCie
> +	  Network Space v2 NAS, using Flattened Device Tree.
> +
> +config MACH_NETSPACE_MAX_V2_DT
> +	bool "LaCie Network Space Max v2 NAS (Flattened Device Tree)"
> +	select ARCH_KIRKWOOD_DT
> +	help
> +	  Say 'Y' here if you want your kernel to support the LaCie
> +	  Network Space Max v2 NAS, using Flattened Device Tree.
> +
>  config MACH_TS219
>  	bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
>  	help
> diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
> index 294779f..1f63d80 100644
> --- a/arch/arm/mach-kirkwood/Makefile
> +++ b/arch/arm/mach-kirkwood/Makefile
> @@ -31,3 +31,6 @@ obj-$(CONFIG_MACH_GOFLEXNET_DT)		+= board-goflexnet.o
>  obj-$(CONFIG_MACH_LSXL_DT)		+= board-lsxl.o
>  obj-$(CONFIG_MACH_IOMEGA_IX2_200_DT)	+= board-iomega_ix2_200.o
>  obj-$(CONFIG_MACH_KM_KIRKWOOD_DT)	+= board-km_kirkwood.o
> +obj-$(CONFIG_MACH_INETSPACE_V2_DT)	+= board-ns2.o
> +obj-$(CONFIG_MACH_NETSPACE_V2_DT)	+= board-ns2.o
> +obj-$(CONFIG_MACH_NETSPACE_MAX_V2_DT)	+= board-ns2.o
> diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c
> index 70c5a28..b3e0519 100644
> --- a/arch/arm/mach-kirkwood/board-dt.c
> +++ b/arch/arm/mach-kirkwood/board-dt.c
> @@ -96,6 +96,11 @@ static void __init kirkwood_dt_init(void)
>  	if (of_machine_is_compatible("keymile,km_kirkwood"))
>  		km_kirkwood_init();
>  
> +	if (of_machine_is_compatible("lacie,inetspace_v2") ||
> +	    of_machine_is_compatible("lacie,netspace_v2") ||
> +	    of_machine_is_compatible("lacie,netspace_max_v2"))
> +		ns2_init();
> +
>  	of_platform_populate(NULL, kirkwood_dt_match_table,
>  			     kirkwood_auxdata_lookup, NULL);
>  }
> @@ -112,6 +117,9 @@ static const char *kirkwood_dt_board_compat[] = {
>  	"buffalo,lsxl",
>  	"iom,ix2-200",
>  	"keymile,km_kirkwood",
> +	"lacie,inetspace_v2",
> +	"lacie,netspace_max_v2",
> +	"lacie,netspace_v2",
>  	NULL
>  };
>  
> diff --git a/arch/arm/mach-kirkwood/board-ns2.c b/arch/arm/mach-kirkwood/board-ns2.c
> new file mode 100644
> index 0000000..b36c55c
> --- /dev/null
> +++ b/arch/arm/mach-kirkwood/board-ns2.c
> @@ -0,0 +1,83 @@
> +/*
> + * Copyright 2012 (C), Simon Guinot <simon.guinot@sequanux.org>
> + *
> + * arch/arm/mach-kirkwood/board-ns2.c
> + *
> + * LaCie Network Space v2 board (and parents) initialization for drivers
> + * not converted to flattened device tree yet.
> + *
> + * 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 <linux/kernel.h>
> +#include <linux/init.h>
> +#include <linux/platform_device.h>
> +#include <linux/mv643xx_eth.h>
> +#include <linux/gpio.h>
> +#include "common.h"
> +#include "mpp.h"
> +
> +static struct mv643xx_eth_platform_data ns2_ge00_data = {
> +	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),
> +};
> +
> +static unsigned int ns2_mpp_config[] __initdata = {
> +	MPP0_SPI_SCn,
> +	MPP1_SPI_MOSI,
> +	MPP2_SPI_SCK,
> +	MPP3_SPI_MISO,
> +	MPP4_NF_IO6,
> +	MPP5_NF_IO7,
> +	MPP6_SYSRST_OUTn,
> +	MPP7_GPO,		/* Fan speed (bit 1) */
> +	MPP8_TW0_SDA,
> +	MPP9_TW0_SCK,
> +	MPP10_UART0_TXD,
> +	MPP11_UART0_RXD,
> +	MPP12_GPO,		/* Red led */
> +	MPP14_GPIO,		/* USB fuse */
> +	MPP16_GPIO,		/* SATA 0 power */
> +	MPP17_GPIO,		/* SATA 1 power */
> +	MPP18_NF_IO0,
> +	MPP19_NF_IO1,
> +	MPP20_SATA1_ACTn,
> +	MPP21_SATA0_ACTn,
> +	MPP22_GPIO,		/* Fan speed (bit 0) */
> +	MPP23_GPIO,		/* Fan power */
> +	MPP24_GPIO,		/* USB mode select */
> +	MPP25_GPIO,		/* Fan rotation fail */
> +	MPP26_GPIO,		/* USB device vbus */
> +	MPP28_GPIO,		/* USB enable host vbus */
> +	MPP29_GPIO,		/* Blue led (slow register) */
> +	MPP30_GPIO,		/* Blue led (command register) */
> +	MPP31_GPIO,		/* Board power off */
> +	MPP32_GPIO,		/* Power button (0 = Released, 1 = Pushed) */
> +	MPP33_GPO,		/* Fan speed (bit 2) */
> +	0
> +};
> +
> +#define NS2_GPIO_POWER_OFF	31
> +
> +static void ns2_power_off(void)
> +{
> +	gpio_set_value(NS2_GPIO_POWER_OFF, 1);
> +}
> +
> +void __init ns2_init(void)
> +{
> +	/*
> +	 * Basic setup. Needs to be called early.
> +	 */
> +	kirkwood_mpp_conf(ns2_mpp_config);
> +
> +	kirkwood_ehci_init();
> +	kirkwood_ge00_init(&ns2_ge00_data);
> +
> +	if (gpio_request(NS2_GPIO_POWER_OFF, "power-off") == 0 &&
> +	    gpio_direction_output(NS2_GPIO_POWER_OFF, 0) == 0)
> +		pm_power_off = ns2_power_off;
> +	else
> +		pr_err("ns2: failed to configure power-off GPIO\n");
> +}
> diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
> index bcffd7c..2f75f3f 100644
> --- a/arch/arm/mach-kirkwood/common.h
> +++ b/arch/arm/mach-kirkwood/common.h
> @@ -112,6 +112,14 @@ void km_kirkwood_init(void);
>  static inline void km_kirkwood_init(void) {};
>  #endif
>  
> +#if defined(CONFIG_MACH_INETSPACE_V2_DT) || \
> +	defined(CONFIG_MACH_NETSPACE_V2_DT) || \
> +	defined(CONFIG_MACH_NETSPACE_MAX_V2_DT)
> +void ns2_init(void);
> +#else
> +static inline void ns2_init(void) {};
> +#endif
> +
>  /* early init functions not converted to fdt yet */
>  char *kirkwood_id(void);
>  void kirkwood_l2_init(void);
> diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
> index f508def..e455c08 100644
> --- a/drivers/leds/Kconfig
> +++ b/drivers/leds/Kconfig
> @@ -379,7 +379,9 @@ config LEDS_NS2
>  	tristate "LED support for Network Space v2 GPIO LEDs"
>  	depends on LEDS_CLASS
>  	depends on MACH_NETSPACE_V2 || MACH_INETSPACE_V2 || \
> -		   MACH_NETSPACE_MAX_V2 || MACH_D2NET_V2
> +		   MACH_NETSPACE_MAX_V2 || MACH_D2NET_V2 || \
> +		   MACH_NETSPACE_V2_DT || MACH_INETSPACE_V2_DT || \
> +		   MACH_NETSPACE_MAX_V2_DT
>  	default y
>  	help
>  	  This option enable support for the dual-GPIO LED found on the
> -- 
> 1.7.10
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20121015/4bc4b331/attachment-0001.sig>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/4] leds: leds-ns2: add device tree binding
  2012-10-15 19:12     ` Simon Guinot
@ 2012-10-15 19:58       ` Jason Cooper
  2012-10-16  9:39         ` Simon Guinot
  0 siblings, 1 reply; 20+ messages in thread
From: Jason Cooper @ 2012-10-15 19:58 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Oct 15, 2012 at 09:12:22PM +0200, Simon Guinot wrote:
> On Mon, Oct 15, 2012 at 01:41:44PM -0400, Jason Cooper wrote:
> > On Mon, Oct 15, 2012 at 05:34:52PM +0200, Simon Guinot wrote:
> > > Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
> > > ---
> > >  .../devicetree/bindings/gpio/leds-ns2.txt          |   26 ++++++
> > >  drivers/leds/leds-ns2.c                            |   84 +++++++++++++++++++-
> > >  2 files changed, 107 insertions(+), 3 deletions(-)
> > >  create mode 100644 Documentation/devicetree/bindings/gpio/leds-ns2.txt
> > > 
> > > diff --git a/Documentation/devicetree/bindings/gpio/leds-ns2.txt b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
> > > new file mode 100644
> > > index 0000000..1a84969
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
> > > @@ -0,0 +1,26 @@
> > > +Binding for dual-GPIO LED found on Network Space v2 (and parents).
> > > +
> > > +Required properties:
> > > +- compatible: "ns2-leds".
> > > +
> > > +Each LED is represented as a sub-node of the ns2-leds device.
> > > +
> > > +Required sub-node properties:
> > > +- cmd-gpio: Command LED GPIO. See OF device-tree GPIO specification.
> > > +- slow-gpio: Slow LED GPIO. See OF device-tree GPIO specification.
> > > +
> > > +Optional sub-node properties:
> > > +- label: Name for this LED. If omitted, the label is taken from the node name.
> > > +- linux,default-trigger: Trigger assigned to the LED.
> > > +
> > > +Example:
> > > +
> > > +ns2-leds {
> > > +	compatible = "ns2-leds";
> > > +
> > > +	blue-sata {
> > > +		label = "ns2:blue:sata";
> > > +		slow-gpio = <&gpio0 29 0>;
> > > +		cmd-gpio = <&gpio0 30 0>;
> > > +	};
> > > +};
> > > diff --git a/drivers/leds/leds-ns2.c b/drivers/leds/leds-ns2.c
> > > index d176ec8..55d199b 100644
> > > --- a/drivers/leds/leds-ns2.c
> > > +++ b/drivers/leds/leds-ns2.c
> > > @@ -30,6 +30,7 @@
> > >  #include <linux/leds.h>
> > >  #include <linux/module.h>
> > >  #include <linux/platform_data/leds-kirkwood-ns2.h>
> > > +#include <linux/of_gpio.h>
> > >  
> > >  /*
> > >   * The Network Space v2 dual-GPIO LED is wired to a CPLD and can blink in
> > > @@ -263,6 +264,68 @@ static void delete_ns2_led(struct ns2_led_data *led_dat)
> > >  	gpio_free(led_dat->slow);
> > >  }
> > >  
> > > +#ifdef CONFIG_OF_GPIO
> > > +/*
> > > + * Translate OpenFirmware node properties into platform_data.
> > > + */
> > > +static int __devinit
> > > +ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
> > > +{
> > > +	struct device_node *np = dev->of_node;
> > > +	struct device_node *child;
> > > +	struct ns2_led *leds;
> > > +	int num_leds = 0;
> > > +	int i = 0;
> > > +
> > > +	num_leds = of_get_child_count(np);
> > > +	if (!num_leds)
> > > +		return -ENODEV;
> > > +
> > > +	leds = devm_kzalloc(dev, num_leds * sizeof(struct ns2_led),
> > > +			    GFP_KERNEL);
> > > +	if (!leds)
> > > +		return -ENOMEM;
> > > +
> > > +	for_each_child_of_node(np, child) {
> > > +		const char *string;
> > > +		int ret;
> > > +
> > > +		ret = of_get_named_gpio(child, "cmd-gpio", 0);
> > > +		if (ret < 0)
> > > +			return ret;
> > 
> > free leds?
> 
> Maybe I missed something but I though it was the purpose of using devres
> function as devm_kzalloc.

You are correct.  alloc/return involks a visceral reaction, akin to a
bull seeing red, my mistake.  :-)

> 
> > 
> > > +		leds[i].cmd = ret;
> > > +		ret = of_get_named_gpio(child, "slow-gpio", 0);
> > > +		if (ret < 0)
> > > +			return ret;
> > 
> > same here.
> > 
> > > +		leds[i].slow = ret;
> > > +		ret = of_property_read_string(child, "label", &string);
> > > +		leds[i].name = (ret == 0) ? string : child->name;
> > > +		ret = of_property_read_string(child, "linux,default-trigger",
> > > +					      &string);
> > > +		if (ret == 0)
> > > +			leds[i].default_trigger = string;
> > > +
> > > +		i++;
> > > +	}
> > > +
> > > +	pdata->leds = leds;
> > > +	pdata->num_leds = num_leds;
> > > +
> > > +	return 0;
> > > +}
> > > +
> > > +static const struct of_device_id of_ns2_leds_match[] = {
> > > +	{ .compatible = "ns2-leds", },
> > 
> > Is this LaCie-specific?  eg "lacie,ns2-leds"?
> 
> Yes I think it is LaCie specific.

Ok, please change.

> 
> > 
> > > +	{},
> > > +};
> > > +#else
> > > +static int __devinit
> > > +ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
> > > +{
> > > +	return -ENODEV;
> > > +}
> > > +#endif /* CONFIG_OF_GPIO */
> > 
> > The above doesn't look right to me.  The only time
> > ns2_leds_get_of_pdata() gets called is when OF_GPIO is enabled.  You
> > should be able to remove the #else block.
> 
> Yes you are right.
> 
> > 
> > > +
> > >  static int __devinit ns2_led_probe(struct platform_device *pdev)
> > >  {
> > >  	struct ns2_led_platform_data *pdata = pdev->dev.platform_data;
> > > @@ -270,11 +333,25 @@ static int __devinit ns2_led_probe(struct platform_device *pdev)
> > >  	int i;
> > >  	int ret;
> > >  
> > > +#ifdef CONFIG_OF_GPIO
> > > +	if (!pdata) {
> > > +		pdata = devm_kzalloc(&pdev->dev,
> > > +				     sizeof(struct ns2_led_platform_data),
> > > +				     GFP_KERNEL);
> > > +		if (!pdata)
> > > +			return -ENOMEM;
> > > +
> > > +		ret = ns2_leds_get_of_pdata(&pdev->dev, pdata);
> > > +		if (ret)
> > > +			return ret;
> > > +	}
> > > +#else
> > >  	if (!pdata)
> > >  		return -EINVAL;
> > > +#endif /* CONFIG_OF_GPIO */
> > >  
> > >  	leds_data = devm_kzalloc(&pdev->dev, sizeof(struct ns2_led_data) *
> > > -			    pdata->num_leds, GFP_KERNEL);
> > > +				 pdata->num_leds, GFP_KERNEL);
> > >  	if (!leds_data)
> > >  		return -ENOMEM;
> > >  
> > > @@ -312,8 +389,9 @@ static struct platform_driver ns2_led_driver = {
> > >  	.probe		= ns2_led_probe,
> > >  	.remove		= __devexit_p(ns2_led_remove),
> > >  	.driver		= {
> > > -		.name	= "leds-ns2",
> > > -		.owner	= THIS_MODULE,
> > > +		.name		= "leds-ns2",
> > > +		.owner		= THIS_MODULE,
> > 
> > nit.  whitespace before '=', above two lines.
> 
> Sorry I don't get it. For the two lines before, I used two tabs before
> '='. As a result, this lines are aligned with the next one. I got no
> warnings and no errors from checkpatch.pl.

It's not a checkpatch problem.  It's that before your patch, the equals
signs were lined up.  Afterwards, they aren't.  In either case, if you
would like to fix the whitespace (line up all struct elements and the
equals signs), that should be a separate patch.

> 
> > 
> > > +		.of_match_table	= of_match_ptr(of_ns2_leds_match),
> > 
> > Have you tried this with OF_GPIO=n?  of_match_ptr() handles CONFIG_OF
> > being enabled/disabled.  Which means the case of CONFIG_OF=y,
> > CONFIG_OF_GPIO=n appears to be unhandled.
> 
> Good caught. I guess I have just copied a bug from the driver gpio-fan.

On the next round, please add a separate patch fixing gpio-fan.c.

There shouldn't be any harm in moving the struct of_device_id {} outside
of the #ifdef and just above the struct platform_driver {} declaration.
That would maintain the convention.  _probe() will just return -EINVAL
if OF_GPIO isn't enabled (without pdata, of course).

thx,

Jason.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 2/4] ARM: kirkwood: DT board setup for Network Space v2 and parents
  2012-10-15 15:34 ` [PATCH 2/4] ARM: kirkwood: DT board setup for Network Space v2 and parents Simon Guinot
  2012-10-15 19:36   ` Simon Guinot
@ 2012-10-15 19:58   ` Rob Herring
  2012-10-16 20:22     ` [PATCH] ARM: mach-kirkwood: add documentation for device tree bindings Simon Guinot
  2012-10-16 20:41     ` [PATCH 2/4] ARM: kirkwood: DT board setup for Network Space v2 and parents Simon Guinot
  1 sibling, 2 replies; 20+ messages in thread
From: Rob Herring @ 2012-10-15 19:58 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/15/2012 10:34 AM, Simon Guinot wrote:
> This patch adds DT board setup for LaCie Network Space v2 and parents,
> based on the Marvell Kirkwood 6281 SoC. This includes Network Space v2
> (Max) and Internet Space v2.
> 
> Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
> ---
>  arch/arm/boot/dts/Makefile                 |    3 +
>  arch/arm/boot/dts/kirkwood-is2.dts         |   30 ++++++++++
>  arch/arm/boot/dts/kirkwood-ns2-common.dtsi |   63 +++++++++++++++++++++
>  arch/arm/boot/dts/kirkwood-ns2.dts         |   30 ++++++++++
>  arch/arm/boot/dts/kirkwood-ns2max.dts      |   49 ++++++++++++++++
>  arch/arm/mach-kirkwood/Kconfig             |   21 +++++++
>  arch/arm/mach-kirkwood/Makefile            |    3 +
>  arch/arm/mach-kirkwood/board-dt.c          |    8 +++
>  arch/arm/mach-kirkwood/board-ns2.c         |   83 ++++++++++++++++++++++++++++
>  arch/arm/mach-kirkwood/common.h            |    8 +++
>  drivers/leds/Kconfig                       |    4 +-
>  11 files changed, 301 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/boot/dts/kirkwood-is2.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ns2-common.dtsi
>  create mode 100644 arch/arm/boot/dts/kirkwood-ns2.dts
>  create mode 100644 arch/arm/boot/dts/kirkwood-ns2max.dts
>  create mode 100644 arch/arm/mach-kirkwood/board-ns2.c
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index c1ce813..e6201b6 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -34,9 +34,12 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
>  	kirkwood-ib62x0.dtb \
>  	kirkwood-iconnect.dtb \
>  	kirkwood-iomega_ix2_200.dtb \
> +	kirkwood-is2.dtb \
>  	kirkwood-km_kirkwood.dtb \
>  	kirkwood-lschlv2.dtb \
>  	kirkwood-lsxhl.dtb \
> +	kirkwood-ns2.dtb \
> +	kirkwood-ns2max.dtb \
>  	kirkwood-ts219-6281.dtb \
>  	kirkwood-ts219-6282.dtb
>  dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
> diff --git a/arch/arm/boot/dts/kirkwood-is2.dts b/arch/arm/boot/dts/kirkwood-is2.dts
> new file mode 100644
> index 0000000..7bc4677
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-is2.dts
> @@ -0,0 +1,30 @@
> +/dts-v1/;
> +
> +/include/ "kirkwood-ns2-common.dtsi"
> +
> +/ {
> +	model = "LaCie Internet Space v2";
> +	compatible = "lacie,inetspace_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";

Compatible strings must be documented.

Rob

> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	ocp at f1000000 {
> +		sata at 80000 {
> +			status = "okay";
> +			nr-ports = <1>;
> +		};
> +	};
> +
> +	ns2-leds {
> +		compatible = "ns2-leds";
> +
> +		blue-sata {
> +			label = "ns2:blue:sata";
> +			slow-gpio = <&gpio0 29 0>;
> +			cmd-gpio = <&gpio0 30 0>;
> +		};
> +	};
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
> new file mode 100644
> index 0000000..9bc6785
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
> @@ -0,0 +1,63 @@
> +/include/ "kirkwood.dtsi"
> +
> +/ {
> +	chosen {
> +		bootargs = "console=ttyS0,115200n8";
> +	};
> +
> +	ocp at f1000000 {
> +		serial at 12000 {
> +			clock-frequency = <166666667>;
> +			status = "okay";
> +		};
> +
> +		spi at 10600 {
> +			status = "okay";
> +
> +			flash at 0 {
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				compatible = "mx25l4005a";
> +				reg = <0>;
> +				spi-max-frequency = <20000000>;
> +				mode = <0>;
> +
> +				partition at 0 {
> +					reg = <0x0 0x80000>;
> +					label = "u-boot";
> +				};
> +			};
> +		};
> +
> +		i2c at 11000 {
> +			status = "okay";
> +
> +			eeprom at 50 {
> +				compatible = "at,24c04";
> +				pagesize = <16>;
> +				reg = <0x50>;
> +			};
> +		};
> +	};
> +
> +	gpio_keys {
> +		compatible = "gpio-keys";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		button at 1 {
> +			label = "Power push button";
> +			linux,code = <116>;
> +			gpios = <&gpio1 0 0>;
> +		};
> +	};
> +
> +	gpio-leds {
> +		compatible = "gpio-leds";
> +
> +		red-fail {
> +			label = "ns2:red:fail";
> +			gpios = <&gpio0 12 0>;
> +		};
> +	};
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ns2.dts b/arch/arm/boot/dts/kirkwood-ns2.dts
> new file mode 100644
> index 0000000..d018213
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ns2.dts
> @@ -0,0 +1,30 @@
> +/dts-v1/;
> +
> +/include/ "kirkwood-ns2-common.dtsi"
> +
> +/ {
> +	model = "LaCie Network Space v2";
> +	compatible = "lacie,netspace_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x10000000>;
> +	};
> +
> +	ocp at f1000000 {
> +		sata at 80000 {
> +			status = "okay";
> +			nr-ports = <1>;
> +		};
> +	};
> +
> +	ns2-leds {
> +		compatible = "ns2-leds";
> +
> +		blue-sata {
> +			label = "ns2:blue:sata";
> +			slow-gpio = <&gpio0 29 0>;
> +			cmd-gpio = <&gpio0 30 0>;
> +		};
> +	};
> +};
> diff --git a/arch/arm/boot/dts/kirkwood-ns2max.dts b/arch/arm/boot/dts/kirkwood-ns2max.dts
> new file mode 100644
> index 0000000..82156e2
> --- /dev/null
> +++ b/arch/arm/boot/dts/kirkwood-ns2max.dts
> @@ -0,0 +1,49 @@
> +/dts-v1/;
> +
> +/include/ "kirkwood-ns2-common.dtsi"
> +
> +/ {
> +	model = "LaCie Network Space Max v2";
> +	compatible = "lacie,netspace_max_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x10000000>;
> +	};
> +
> +	ocp at f1000000 {
> +		sata at 80000 {
> +			status = "okay";
> +			nr-ports = <2>;
> +		};
> +	};
> +
> +	gpio_fan {
> +		compatible = "gpio-fan";
> +		gpios = <&gpio0 22 1
> +			 &gpio0  7 1
> +			 &gpio1  1 1
> +			 &gpio0 23 1>;
> +		gpio-fan,speed-map =
> +			<   0  0
> +			 1500 15
> +			 1700 14
> +			 1800 13
> +			 2100 12
> +			 3100 11
> +			 3300 10
> +			 4300  9
> +			 5500  8>;
> +		alarm-gpios = <&gpio0 25 1>;
> +	};
> +
> +	ns2-leds {
> +		compatible = "ns2-leds";
> +
> +		blue-sata {
> +			label = "ns2:blue:sata";
> +			slow-gpio = <&gpio0 29 0>;
> +			cmd-gpio = <&gpio0 30 0>;
> +		};
> +	};
> +};
> diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
> index 50bca50..847e0c2 100644
> --- a/arch/arm/mach-kirkwood/Kconfig
> +++ b/arch/arm/mach-kirkwood/Kconfig
> @@ -130,6 +130,27 @@ config MACH_KM_KIRKWOOD_DT
>  	  Say 'Y' here if you want your kernel to support the
>  	  Keymile Kirkwood Reference Desgin, using Flattened Device Tree.
>  
> +config MACH_INETSPACE_V2_DT
> +	bool "LaCie Internet Space v2 NAS (Flattened Device Tree)"
> +	select ARCH_KIRKWOOD_DT
> +	help
> +	  Say 'Y' here if you want your kernel to support the LaCie
> +	  Internet Space v2 NAS, using Flattened Device Tree.
> +
> +config MACH_NETSPACE_V2_DT
> +	bool "LaCie Network Space v2 NAS (Flattened Device Tree)"
> +	select ARCH_KIRKWOOD_DT
> +	help
> +	  Say 'Y' here if you want your kernel to support the LaCie
> +	  Network Space v2 NAS, using Flattened Device Tree.
> +
> +config MACH_NETSPACE_MAX_V2_DT
> +	bool "LaCie Network Space Max v2 NAS (Flattened Device Tree)"
> +	select ARCH_KIRKWOOD_DT
> +	help
> +	  Say 'Y' here if you want your kernel to support the LaCie
> +	  Network Space Max v2 NAS, using Flattened Device Tree.
> +
>  config MACH_TS219
>  	bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
>  	help
> diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
> index 294779f..1f63d80 100644
> --- a/arch/arm/mach-kirkwood/Makefile
> +++ b/arch/arm/mach-kirkwood/Makefile
> @@ -31,3 +31,6 @@ obj-$(CONFIG_MACH_GOFLEXNET_DT)		+= board-goflexnet.o
>  obj-$(CONFIG_MACH_LSXL_DT)		+= board-lsxl.o
>  obj-$(CONFIG_MACH_IOMEGA_IX2_200_DT)	+= board-iomega_ix2_200.o
>  obj-$(CONFIG_MACH_KM_KIRKWOOD_DT)	+= board-km_kirkwood.o
> +obj-$(CONFIG_MACH_INETSPACE_V2_DT)	+= board-ns2.o
> +obj-$(CONFIG_MACH_NETSPACE_V2_DT)	+= board-ns2.o
> +obj-$(CONFIG_MACH_NETSPACE_MAX_V2_DT)	+= board-ns2.o
> diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c
> index 70c5a28..b3e0519 100644
> --- a/arch/arm/mach-kirkwood/board-dt.c
> +++ b/arch/arm/mach-kirkwood/board-dt.c
> @@ -96,6 +96,11 @@ static void __init kirkwood_dt_init(void)
>  	if (of_machine_is_compatible("keymile,km_kirkwood"))
>  		km_kirkwood_init();
>  
> +	if (of_machine_is_compatible("lacie,inetspace_v2") ||
> +	    of_machine_is_compatible("lacie,netspace_v2") ||
> +	    of_machine_is_compatible("lacie,netspace_max_v2"))
> +		ns2_init();
> +
>  	of_platform_populate(NULL, kirkwood_dt_match_table,
>  			     kirkwood_auxdata_lookup, NULL);
>  }
> @@ -112,6 +117,9 @@ static const char *kirkwood_dt_board_compat[] = {
>  	"buffalo,lsxl",
>  	"iom,ix2-200",
>  	"keymile,km_kirkwood",
> +	"lacie,inetspace_v2",
> +	"lacie,netspace_max_v2",
> +	"lacie,netspace_v2",
>  	NULL
>  };
>  
> diff --git a/arch/arm/mach-kirkwood/board-ns2.c b/arch/arm/mach-kirkwood/board-ns2.c
> new file mode 100644
> index 0000000..b36c55c
> --- /dev/null
> +++ b/arch/arm/mach-kirkwood/board-ns2.c
> @@ -0,0 +1,83 @@
> +/*
> + * Copyright 2012 (C), Simon Guinot <simon.guinot@sequanux.org>
> + *
> + * arch/arm/mach-kirkwood/board-ns2.c
> + *
> + * LaCie Network Space v2 board (and parents) initialization for drivers
> + * not converted to flattened device tree yet.
> + *
> + * 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 <linux/kernel.h>
> +#include <linux/init.h>
> +#include <linux/platform_device.h>
> +#include <linux/mv643xx_eth.h>
> +#include <linux/gpio.h>
> +#include "common.h"
> +#include "mpp.h"
> +
> +static struct mv643xx_eth_platform_data ns2_ge00_data = {
> +	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),
> +};
> +
> +static unsigned int ns2_mpp_config[] __initdata = {
> +	MPP0_SPI_SCn,
> +	MPP1_SPI_MOSI,
> +	MPP2_SPI_SCK,
> +	MPP3_SPI_MISO,
> +	MPP4_NF_IO6,
> +	MPP5_NF_IO7,
> +	MPP6_SYSRST_OUTn,
> +	MPP7_GPO,		/* Fan speed (bit 1) */
> +	MPP8_TW0_SDA,
> +	MPP9_TW0_SCK,
> +	MPP10_UART0_TXD,
> +	MPP11_UART0_RXD,
> +	MPP12_GPO,		/* Red led */
> +	MPP14_GPIO,		/* USB fuse */
> +	MPP16_GPIO,		/* SATA 0 power */
> +	MPP17_GPIO,		/* SATA 1 power */
> +	MPP18_NF_IO0,
> +	MPP19_NF_IO1,
> +	MPP20_SATA1_ACTn,
> +	MPP21_SATA0_ACTn,
> +	MPP22_GPIO,		/* Fan speed (bit 0) */
> +	MPP23_GPIO,		/* Fan power */
> +	MPP24_GPIO,		/* USB mode select */
> +	MPP25_GPIO,		/* Fan rotation fail */
> +	MPP26_GPIO,		/* USB device vbus */
> +	MPP28_GPIO,		/* USB enable host vbus */
> +	MPP29_GPIO,		/* Blue led (slow register) */
> +	MPP30_GPIO,		/* Blue led (command register) */
> +	MPP31_GPIO,		/* Board power off */
> +	MPP32_GPIO,		/* Power button (0 = Released, 1 = Pushed) */
> +	MPP33_GPO,		/* Fan speed (bit 2) */
> +	0
> +};
> +
> +#define NS2_GPIO_POWER_OFF	31
> +
> +static void ns2_power_off(void)
> +{
> +	gpio_set_value(NS2_GPIO_POWER_OFF, 1);
> +}
> +
> +void __init ns2_init(void)
> +{
> +	/*
> +	 * Basic setup. Needs to be called early.
> +	 */
> +	kirkwood_mpp_conf(ns2_mpp_config);
> +
> +	kirkwood_ehci_init();
> +	kirkwood_ge00_init(&ns2_ge00_data);
> +
> +	if (gpio_request(NS2_GPIO_POWER_OFF, "power-off") == 0 &&
> +	    gpio_direction_output(NS2_GPIO_POWER_OFF, 0) == 0)
> +		pm_power_off = ns2_power_off;
> +	else
> +		pr_err("ns2: failed to configure power-off GPIO\n");
> +}
> diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
> index bcffd7c..2f75f3f 100644
> --- a/arch/arm/mach-kirkwood/common.h
> +++ b/arch/arm/mach-kirkwood/common.h
> @@ -112,6 +112,14 @@ void km_kirkwood_init(void);
>  static inline void km_kirkwood_init(void) {};
>  #endif
>  
> +#if defined(CONFIG_MACH_INETSPACE_V2_DT) || \
> +	defined(CONFIG_MACH_NETSPACE_V2_DT) || \
> +	defined(CONFIG_MACH_NETSPACE_MAX_V2_DT)
> +void ns2_init(void);
> +#else
> +static inline void ns2_init(void) {};
> +#endif
> +
>  /* early init functions not converted to fdt yet */
>  char *kirkwood_id(void);
>  void kirkwood_l2_init(void);
> diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
> index f508def..e455c08 100644
> --- a/drivers/leds/Kconfig
> +++ b/drivers/leds/Kconfig
> @@ -379,7 +379,9 @@ config LEDS_NS2
>  	tristate "LED support for Network Space v2 GPIO LEDs"
>  	depends on LEDS_CLASS
>  	depends on MACH_NETSPACE_V2 || MACH_INETSPACE_V2 || \
> -		   MACH_NETSPACE_MAX_V2 || MACH_D2NET_V2
> +		   MACH_NETSPACE_MAX_V2 || MACH_D2NET_V2 || \
> +		   MACH_NETSPACE_V2_DT || MACH_INETSPACE_V2_DT || \
> +		   MACH_NETSPACE_MAX_V2_DT
>  	default y
>  	help
>  	  This option enable support for the dual-GPIO LED found on the
> 

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/4] leds: leds-ns2: add device tree binding
  2012-10-15 19:58       ` Jason Cooper
@ 2012-10-16  9:39         ` Simon Guinot
  2012-10-16 15:35           ` Jason Cooper
  0 siblings, 1 reply; 20+ messages in thread
From: Simon Guinot @ 2012-10-16  9:39 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Oct 15, 2012 at 03:58:09PM -0400, Jason Cooper wrote:
> On Mon, Oct 15, 2012 at 09:12:22PM +0200, Simon Guinot wrote:
> > On Mon, Oct 15, 2012 at 01:41:44PM -0400, Jason Cooper wrote:
> > > On Mon, Oct 15, 2012 at 05:34:52PM +0200, Simon Guinot wrote:
> > > > Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
> > > > ---
> > > >  .../devicetree/bindings/gpio/leds-ns2.txt          |   26 ++++++
> > > >  drivers/leds/leds-ns2.c                            |   84 +++++++++++++++++++-
> > > >  2 files changed, 107 insertions(+), 3 deletions(-)
> > > >  create mode 100644 Documentation/devicetree/bindings/gpio/leds-ns2.txt
> > > > 
> > > > diff --git a/Documentation/devicetree/bindings/gpio/leds-ns2.txt b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
> > > > new file mode 100644
> > > > index 0000000..1a84969
> > > > --- /dev/null
> > > > +++ b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
> > > > @@ -0,0 +1,26 @@
> > > > +Binding for dual-GPIO LED found on Network Space v2 (and parents).
> > > > +
> > > > +Required properties:
> > > > +- compatible: "ns2-leds".
> > > > +
> > > > +Each LED is represented as a sub-node of the ns2-leds device.
> > > > +
> > > > +Required sub-node properties:
> > > > +- cmd-gpio: Command LED GPIO. See OF device-tree GPIO specification.
> > > > +- slow-gpio: Slow LED GPIO. See OF device-tree GPIO specification.
> > > > +
> > > > +Optional sub-node properties:
> > > > +- label: Name for this LED. If omitted, the label is taken from the node name.
> > > > +- linux,default-trigger: Trigger assigned to the LED.
> > > > +
> > > > +Example:
> > > > +
> > > > +ns2-leds {
> > > > +	compatible = "ns2-leds";
> > > > +
> > > > +	blue-sata {
> > > > +		label = "ns2:blue:sata";
> > > > +		slow-gpio = <&gpio0 29 0>;
> > > > +		cmd-gpio = <&gpio0 30 0>;
> > > > +	};
> > > > +};
> > > > diff --git a/drivers/leds/leds-ns2.c b/drivers/leds/leds-ns2.c
> > > > index d176ec8..55d199b 100644
> > > > --- a/drivers/leds/leds-ns2.c
> > > > +++ b/drivers/leds/leds-ns2.c
> > > > @@ -30,6 +30,7 @@
> > > >  #include <linux/leds.h>
> > > >  #include <linux/module.h>
> > > >  #include <linux/platform_data/leds-kirkwood-ns2.h>
> > > > +#include <linux/of_gpio.h>
> > > >  
> > > >  /*
> > > >   * The Network Space v2 dual-GPIO LED is wired to a CPLD and can blink in
> > > > @@ -263,6 +264,68 @@ static void delete_ns2_led(struct ns2_led_data *led_dat)
> > > >  	gpio_free(led_dat->slow);
> > > >  }
> > > >  
> > > > +#ifdef CONFIG_OF_GPIO
> > > > +/*
> > > > + * Translate OpenFirmware node properties into platform_data.
> > > > + */
> > > > +static int __devinit
> > > > +ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
> > > > +{
> > > > +	struct device_node *np = dev->of_node;
> > > > +	struct device_node *child;
> > > > +	struct ns2_led *leds;
> > > > +	int num_leds = 0;
> > > > +	int i = 0;
> > > > +
> > > > +	num_leds = of_get_child_count(np);
> > > > +	if (!num_leds)
> > > > +		return -ENODEV;
> > > > +
> > > > +	leds = devm_kzalloc(dev, num_leds * sizeof(struct ns2_led),
> > > > +			    GFP_KERNEL);
> > > > +	if (!leds)
> > > > +		return -ENOMEM;
> > > > +
> > > > +	for_each_child_of_node(np, child) {
> > > > +		const char *string;
> > > > +		int ret;
> > > > +
> > > > +		ret = of_get_named_gpio(child, "cmd-gpio", 0);
> > > > +		if (ret < 0)
> > > > +			return ret;
> > > 
> > > free leds?
> > 
> > Maybe I missed something but I though it was the purpose of using devres
> > function as devm_kzalloc.
> 
> You are correct.  alloc/return involks a visceral reaction, akin to a
> bull seeing red, my mistake.  :-)
> 
> > 
> > > 
> > > > +		leds[i].cmd = ret;
> > > > +		ret = of_get_named_gpio(child, "slow-gpio", 0);
> > > > +		if (ret < 0)
> > > > +			return ret;
> > > 
> > > same here.
> > > 
> > > > +		leds[i].slow = ret;
> > > > +		ret = of_property_read_string(child, "label", &string);
> > > > +		leds[i].name = (ret == 0) ? string : child->name;
> > > > +		ret = of_property_read_string(child, "linux,default-trigger",
> > > > +					      &string);
> > > > +		if (ret == 0)
> > > > +			leds[i].default_trigger = string;
> > > > +
> > > > +		i++;
> > > > +	}
> > > > +
> > > > +	pdata->leds = leds;
> > > > +	pdata->num_leds = num_leds;
> > > > +
> > > > +	return 0;
> > > > +}
> > > > +
> > > > +static const struct of_device_id of_ns2_leds_match[] = {
> > > > +	{ .compatible = "ns2-leds", },
> > > 
> > > Is this LaCie-specific?  eg "lacie,ns2-leds"?
> > 
> > Yes I think it is LaCie specific.
> 
> Ok, please change.
> 
> > 
> > > 
> > > > +	{},
> > > > +};
> > > > +#else
> > > > +static int __devinit
> > > > +ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
> > > > +{
> > > > +	return -ENODEV;
> > > > +}
> > > > +#endif /* CONFIG_OF_GPIO */
> > > 
> > > The above doesn't look right to me.  The only time
> > > ns2_leds_get_of_pdata() gets called is when OF_GPIO is enabled.  You
> > > should be able to remove the #else block.
> > 
> > Yes you are right.
> > 
> > > 
> > > > +
> > > >  static int __devinit ns2_led_probe(struct platform_device *pdev)
> > > >  {
> > > >  	struct ns2_led_platform_data *pdata = pdev->dev.platform_data;
> > > > @@ -270,11 +333,25 @@ static int __devinit ns2_led_probe(struct platform_device *pdev)
> > > >  	int i;
> > > >  	int ret;
> > > >  
> > > > +#ifdef CONFIG_OF_GPIO
> > > > +	if (!pdata) {
> > > > +		pdata = devm_kzalloc(&pdev->dev,
> > > > +				     sizeof(struct ns2_led_platform_data),
> > > > +				     GFP_KERNEL);
> > > > +		if (!pdata)
> > > > +			return -ENOMEM;
> > > > +
> > > > +		ret = ns2_leds_get_of_pdata(&pdev->dev, pdata);
> > > > +		if (ret)
> > > > +			return ret;
> > > > +	}
> > > > +#else
> > > >  	if (!pdata)
> > > >  		return -EINVAL;
> > > > +#endif /* CONFIG_OF_GPIO */
> > > >  
> > > >  	leds_data = devm_kzalloc(&pdev->dev, sizeof(struct ns2_led_data) *
> > > > -			    pdata->num_leds, GFP_KERNEL);
> > > > +				 pdata->num_leds, GFP_KERNEL);
> > > >  	if (!leds_data)
> > > >  		return -ENOMEM;
> > > >  
> > > > @@ -312,8 +389,9 @@ static struct platform_driver ns2_led_driver = {
> > > >  	.probe		= ns2_led_probe,
> > > >  	.remove		= __devexit_p(ns2_led_remove),
> > > >  	.driver		= {
> > > > -		.name	= "leds-ns2",
> > > > -		.owner	= THIS_MODULE,
> > > > +		.name		= "leds-ns2",
> > > > +		.owner		= THIS_MODULE,
> > > 
> > > nit.  whitespace before '=', above two lines.
> > 
> > Sorry I don't get it. For the two lines before, I used two tabs before
> > '='. As a result, this lines are aligned with the next one. I got no
> > warnings and no errors from checkpatch.pl.
> 
> It's not a checkpatch problem.  It's that before your patch, the equals
> signs were lined up.  Afterwards, they aren't.  In either case, if you
> would like to fix the whitespace (line up all struct elements and the
> equals signs), that should be a separate patch.

The current patch inserts a new field (of_match_table) in the structure.
This new field breaks the equals signs alignment. I think it is correct
to restore the alignment broken by a patch in the same patch context.

Do you really want me to put this in a separate patch ?

> 
> > 
> > > 
> > > > +		.of_match_table	= of_match_ptr(of_ns2_leds_match),
> > > 
> > > Have you tried this with OF_GPIO=n?  of_match_ptr() handles CONFIG_OF
> > > being enabled/disabled.  Which means the case of CONFIG_OF=y,
> > > CONFIG_OF_GPIO=n appears to be unhandled.
> > 
> > Good caught. I guess I have just copied a bug from the driver gpio-fan.
> 
> On the next round, please add a separate patch fixing gpio-fan.c.

After a second look, I noticed that several drivers are also mixing up
CONFIG_OF and CONFIG_OF_GPIO checks: gpio-fan, leds-gpio, gpio_keys.c,
i2c-gpio.c, spi-s3c64xx.c, ...

I also noticed that CONFIG_OF_GPIO can't be selected separately from
CONFIG_OF. From Kconfig, CONFIG_OF implies CONFIG_OF_GPIO.

So, I am no longer convinced we have a bug here. But if there is, we
will need more than a single patch to fix it :)

Let me know your advice about that.

Simon

> 
> There shouldn't be any harm in moving the struct of_device_id {} outside
> of the #ifdef and just above the struct platform_driver {} declaration.
> That would maintain the convention.  _probe() will just return -EINVAL
> if OF_GPIO isn't enabled (without pdata, of course).
> 
> thx,
> 
> Jason.
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20121016/2ce47165/attachment-0001.sig>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/4] leds: leds-ns2: add device tree binding
  2012-10-15 15:34 ` [PATCH 1/4] leds: leds-ns2: add device tree binding Simon Guinot
  2012-10-15 17:41   ` Jason Cooper
@ 2012-10-16 13:02   ` Arnd Bergmann
  2012-10-16 13:51     ` Simon Guinot
  1 sibling, 1 reply; 20+ messages in thread
From: Arnd Bergmann @ 2012-10-16 13:02 UTC (permalink / raw)
  To: linux-arm-kernel

On Monday 15 October 2012, Simon Guinot wrote:
> diff --git a/Documentation/devicetree/bindings/gpio/leds-ns2.txt b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
> new file mode 100644
> index 0000000..1a84969
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
> @@ -0,0 +1,26 @@
> +Binding for dual-GPIO LED found on Network Space v2 (and parents).
> +
> +Required properties:
> +- compatible: "ns2-leds".
> +
> +Each LED is represented as a sub-node of the ns2-leds device.
> +
> +Required sub-node properties:
> +- cmd-gpio: Command LED GPIO. See OF device-tree GPIO specification.
> +- slow-gpio: Slow LED GPIO. See OF device-tree GPIO specification.
> +
> +Optional sub-node properties:
> +- label: Name for this LED. If omitted, the label is taken from the node name.
> +- linux,default-trigger: Trigger assigned to the LED.

Hi Simon,

I'm not overly familiar with the LED subsystem, but isn't this something
that could be done with the generic gpio-led driver?

If not, is it possible to extend that driver in a way to make it possible
and remove the leds-ns2 driver?

	Arnd

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/4] leds: leds-ns2: add device tree binding
  2012-10-16 13:02   ` Arnd Bergmann
@ 2012-10-16 13:51     ` Simon Guinot
  2012-10-16 18:56       ` Arnd Bergmann
  0 siblings, 1 reply; 20+ messages in thread
From: Simon Guinot @ 2012-10-16 13:51 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Oct 16, 2012 at 01:02:39PM +0000, Arnd Bergmann wrote:
> On Monday 15 October 2012, Simon Guinot wrote:
> > diff --git a/Documentation/devicetree/bindings/gpio/leds-ns2.txt b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
> > new file mode 100644
> > index 0000000..1a84969
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
> > @@ -0,0 +1,26 @@
> > +Binding for dual-GPIO LED found on Network Space v2 (and parents).
> > +
> > +Required properties:
> > +- compatible: "ns2-leds".
> > +
> > +Each LED is represented as a sub-node of the ns2-leds device.
> > +
> > +Required sub-node properties:
> > +- cmd-gpio: Command LED GPIO. See OF device-tree GPIO specification.
> > +- slow-gpio: Slow LED GPIO. See OF device-tree GPIO specification.
> > +
> > +Optional sub-node properties:
> > +- label: Name for this LED. If omitted, the label is taken from the node name.
> > +- linux,default-trigger: Trigger assigned to the LED.
> 
> Hi Simon,

Hi Arnd,

> 
> I'm not overly familiar with the LED subsystem, but isn't this something
> that could be done with the generic gpio-led driver?

Basically, the leds-gpio driver allows to associate one pin to one LED.
It is simple and efficient. The LED can be turned on or off. And using a
platform callback (gpio_blink_set), some hardware timer blink can be
enabled. A very few platforms are using this last callback.

On the ns2 (and other lacie machines), there is three different modes
for the front blue LED: on, off and SATA activity blink. Three different
pins are used to configure the LED. Definitively it is not compatible
with the leds-gpio driver.

> 
> If not, is it possible to extend that driver in a way to make it possible
> and remove the leds-ns2 driver?

At the time I have written the leds-ns2 driver, I have failed to figure
out how to merge it with the leds-gpio driver. I remember I thought that
the best alternative was to add a new platform callback (maybe
sata_blink_set). It _should_ be possible to control "on" and "off" with
a single pin. The other pins could be contained inside the callback.

But there is a problem with this method. It is probably not DT
compliant. Add a new platform or machine hook doesn't fit very well with
the DT target on ARM. I mean remove the board setup files.

Please, let me know your advice.

Simon

> 
> 	Arnd
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20121016/e63b6c2c/attachment.sig>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/4] leds: leds-ns2: add device tree binding
  2012-10-16  9:39         ` Simon Guinot
@ 2012-10-16 15:35           ` Jason Cooper
  0 siblings, 0 replies; 20+ messages in thread
From: Jason Cooper @ 2012-10-16 15:35 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Oct 16, 2012 at 11:39:14AM +0200, Simon Guinot wrote:
> On Mon, Oct 15, 2012 at 03:58:09PM -0400, Jason Cooper wrote:
> > On Mon, Oct 15, 2012 at 09:12:22PM +0200, Simon Guinot wrote:
> > > On Mon, Oct 15, 2012 at 01:41:44PM -0400, Jason Cooper wrote:
> > > > On Mon, Oct 15, 2012 at 05:34:52PM +0200, Simon Guinot wrote:
...
> > > > > @@ -312,8 +389,9 @@ static struct platform_driver ns2_led_driver = {
> > > > >  	.probe		= ns2_led_probe,
> > > > >  	.remove		= __devexit_p(ns2_led_remove),
> > > > >  	.driver		= {
> > > > > -		.name	= "leds-ns2",
> > > > > -		.owner	= THIS_MODULE,
> > > > > +		.name		= "leds-ns2",
> > > > > +		.owner		= THIS_MODULE,
> > > > 
> > > > nit.  whitespace before '=', above two lines.
> > > 
> > > Sorry I don't get it. For the two lines before, I used two tabs before
> > > '='. As a result, this lines are aligned with the next one. I got no
> > > warnings and no errors from checkpatch.pl.
> > 
> > It's not a checkpatch problem.  It's that before your patch, the equals
> > signs were lined up.  Afterwards, they aren't.  In either case, if you
> > would like to fix the whitespace (line up all struct elements and the
> > equals signs), that should be a separate patch.
> 
> The current patch inserts a new field (of_match_table) in the structure.
> This new field breaks the equals signs alignment. I think it is correct
> to restore the alignment broken by a patch in the same patch context.
> 
> Do you really want me to put this in a separate patch ?

Ok, I see what you were doing.  No need for a separate patch.

> > > > > +		.of_match_table	= of_match_ptr(of_ns2_leds_match),
> > > > 
> > > > Have you tried this with OF_GPIO=n?  of_match_ptr() handles CONFIG_OF
> > > > being enabled/disabled.  Which means the case of CONFIG_OF=y,
> > > > CONFIG_OF_GPIO=n appears to be unhandled.
> > > 
> > > Good caught. I guess I have just copied a bug from the driver gpio-fan.
> > 
> > On the next round, please add a separate patch fixing gpio-fan.c.
> 
> After a second look, I noticed that several drivers are also mixing up
> CONFIG_OF and CONFIG_OF_GPIO checks: gpio-fan, leds-gpio, gpio_keys.c,
> i2c-gpio.c, spi-s3c64xx.c, ...
> 
> I also noticed that CONFIG_OF_GPIO can't be selected separately from
> CONFIG_OF. From Kconfig, CONFIG_OF implies CONFIG_OF_GPIO.
> 
> So, I am no longer convinced we have a bug here. But if there is, we
> will need more than a single patch to fix it :)

Agreed.  I'd hate to see what happens if CONFIG_OF_GPIO was decoupled
from CONFIG_OF.  :-/  Once DT conversion has settled down, we'll have to
look at removing it.

thx,

Jason.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/4] leds: leds-ns2: add device tree binding
  2012-10-16 13:51     ` Simon Guinot
@ 2012-10-16 18:56       ` Arnd Bergmann
  0 siblings, 0 replies; 20+ messages in thread
From: Arnd Bergmann @ 2012-10-16 18:56 UTC (permalink / raw)
  To: linux-arm-kernel

On Tuesday 16 October 2012, Simon Guinot wrote:
> On Tue, Oct 16, 2012 at 01:02:39PM +0000, Arnd Bergmann wrote:
> > 
> > I'm not overly familiar with the LED subsystem, but isn't this something
> > that could be done with the generic gpio-led driver?
> 
> Basically, the leds-gpio driver allows to associate one pin to one LED.
> It is simple and efficient. The LED can be turned on or off. And using a
> platform callback (gpio_blink_set), some hardware timer blink can be
> enabled. A very few platforms are using this last callback.
> 
> On the ns2 (and other lacie machines), there is three different modes
> for the front blue LED: on, off and SATA activity blink. Three different
> pins are used to configure the LED. Definitively it is not compatible
> with the leds-gpio driver.

Ok, thanks for the explantion. I think your approach is fine then.

	Arnd

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH] ARM: mach-kirkwood: add documentation for device tree bindings
  2012-10-15 19:58   ` Rob Herring
@ 2012-10-16 20:22     ` Simon Guinot
  2012-10-16 20:41     ` [PATCH 2/4] ARM: kirkwood: DT board setup for Network Space v2 and parents Simon Guinot
  1 sibling, 0 replies; 20+ messages in thread
From: Simon Guinot @ 2012-10-16 20:22 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
---
 Documentation/devicetree/bindings/arm/kirkwood.txt |   37 ++++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/kirkwood.txt

diff --git a/Documentation/devicetree/bindings/arm/kirkwood.txt b/Documentation/devicetree/bindings/arm/kirkwood.txt
new file mode 100644
index 0000000..14fb6b9
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/kirkwood.txt
@@ -0,0 +1,37 @@
+Marvell Kirkwood Platforms Device Tree Bindings
+-----------------------------------------------
+
+Boards with a SoC of the Marvell Kirkwood family shall have the
+following property:
+Required root node property:
+compatible: must contain "marvell,kirkwood"
+
+In addition, boards with a Kirkwood SoC 88F6192 shall have the
+following property:
+Required root node property:
+compatible: must contain "marvell,kirkwood-88f6192"
+
+In addition, boards with a Kirkwood SoC 88F6281 shall have the
+following property:
+Required root node property:
+compatible: must contain "marvell,kirkwood-88f6281"
+
+In addition, boards with a Kirkwood SoC 88F6702 shall have the
+following property:
+Required root node property:
+compatible: must contain "marvell,kirkwood-88f6702"
+
+Board with a SoC of the Marvell Armada 300 family (Kirkwood compatible)
+shall have the following property:
+Required root node property:
+compatible: must contain "marvell,armada300", "marvell,kirkwood"
+
+In addition, boards with an Armada 300 SoC 88F6282 shall have the
+following property:
+Required root node property:
+compatible: must contain "marvell,armada300-88f6282"
+
+In addition, boards with an Armada 300 SoC 88F6283 shall have the
+following property:
+Required root node property:
+compatible: must contain "marvell,armada300-88f6283"
-- 
1.7.10

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 2/4] ARM: kirkwood: DT board setup for Network Space v2 and parents
  2012-10-15 19:58   ` Rob Herring
  2012-10-16 20:22     ` [PATCH] ARM: mach-kirkwood: add documentation for device tree bindings Simon Guinot
@ 2012-10-16 20:41     ` Simon Guinot
  1 sibling, 0 replies; 20+ messages in thread
From: Simon Guinot @ 2012-10-16 20:41 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Oct 15, 2012 at 02:58:28PM -0500, Rob Herring wrote:
> On 10/15/2012 10:34 AM, Simon Guinot wrote:
> > This patch adds DT board setup for LaCie Network Space v2 and parents,
> > based on the Marvell Kirkwood 6281 SoC. This includes Network Space v2
> > (Max) and Internet Space v2.
> > 
> > Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
> > ---
> >  arch/arm/boot/dts/Makefile                 |    3 +
> >  arch/arm/boot/dts/kirkwood-is2.dts         |   30 ++++++++++
> >  arch/arm/boot/dts/kirkwood-ns2-common.dtsi |   63 +++++++++++++++++++++
> >  arch/arm/boot/dts/kirkwood-ns2.dts         |   30 ++++++++++
> >  arch/arm/boot/dts/kirkwood-ns2max.dts      |   49 ++++++++++++++++
> >  arch/arm/mach-kirkwood/Kconfig             |   21 +++++++
> >  arch/arm/mach-kirkwood/Makefile            |    3 +
> >  arch/arm/mach-kirkwood/board-dt.c          |    8 +++
> >  arch/arm/mach-kirkwood/board-ns2.c         |   83 ++++++++++++++++++++++++++++
> >  arch/arm/mach-kirkwood/common.h            |    8 +++
> >  drivers/leds/Kconfig                       |    4 +-
> >  11 files changed, 301 insertions(+), 1 deletion(-)
> >  create mode 100644 arch/arm/boot/dts/kirkwood-is2.dts
> >  create mode 100644 arch/arm/boot/dts/kirkwood-ns2-common.dtsi
> >  create mode 100644 arch/arm/boot/dts/kirkwood-ns2.dts
> >  create mode 100644 arch/arm/boot/dts/kirkwood-ns2max.dts
> >  create mode 100644 arch/arm/mach-kirkwood/board-ns2.c
> > 
> > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> > index c1ce813..e6201b6 100644
> > --- a/arch/arm/boot/dts/Makefile
> > +++ b/arch/arm/boot/dts/Makefile
> > @@ -34,9 +34,12 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
> >  	kirkwood-ib62x0.dtb \
> >  	kirkwood-iconnect.dtb \
> >  	kirkwood-iomega_ix2_200.dtb \
> > +	kirkwood-is2.dtb \
> >  	kirkwood-km_kirkwood.dtb \
> >  	kirkwood-lschlv2.dtb \
> >  	kirkwood-lsxhl.dtb \
> > +	kirkwood-ns2.dtb \
> > +	kirkwood-ns2max.dtb \
> >  	kirkwood-ts219-6281.dtb \
> >  	kirkwood-ts219-6282.dtb
> >  dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
> > diff --git a/arch/arm/boot/dts/kirkwood-is2.dts b/arch/arm/boot/dts/kirkwood-is2.dts
> > new file mode 100644
> > index 0000000..7bc4677
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/kirkwood-is2.dts
> > @@ -0,0 +1,30 @@
> > +/dts-v1/;
> > +
> > +/include/ "kirkwood-ns2-common.dtsi"
> > +
> > +/ {
> > +	model = "LaCie Internet Space v2";
> > +	compatible = "lacie,inetspace_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";
> 
> Compatible strings must be documented.

Hi Rob,

I have sent a patch to document the compatible strings used with the
Marvell Kirkwood SoCs. Do you also want me to document the compatible
strings for the LaCie machines ? Looking at the devicetree/bindings/arm
directory, it doesn't seems to be a common practice.

Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20121016/0c50619b/attachment.sig>

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2012-10-16 20:41 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-15 15:34 [PATCH 0/4] Add DT support for Network Space v2 and parents Simon Guinot
2012-10-15 15:34 ` [PATCH 1/4] leds: leds-ns2: add device tree binding Simon Guinot
2012-10-15 17:41   ` Jason Cooper
2012-10-15 19:12     ` Simon Guinot
2012-10-15 19:58       ` Jason Cooper
2012-10-16  9:39         ` Simon Guinot
2012-10-16 15:35           ` Jason Cooper
2012-10-16 13:02   ` Arnd Bergmann
2012-10-16 13:51     ` Simon Guinot
2012-10-16 18:56       ` Arnd Bergmann
2012-10-15 15:34 ` [PATCH 2/4] ARM: kirkwood: DT board setup for Network Space v2 and parents Simon Guinot
2012-10-15 19:36   ` Simon Guinot
2012-10-15 19:58   ` Rob Herring
2012-10-16 20:22     ` [PATCH] ARM: mach-kirkwood: add documentation for device tree bindings Simon Guinot
2012-10-16 20:41     ` [PATCH 2/4] ARM: kirkwood: DT board setup for Network Space v2 and parents Simon Guinot
2012-10-15 15:34 ` [PATCH 3/4] ARM: kirkwood: DT board setup for Network Space Lite v2 Simon Guinot
2012-10-15 15:34 ` [PATCH 4/4] ARM: kirkwood: DT board setup for Network Space Mini v2 Simon Guinot
2012-10-15 17:01 ` [PATCH 0/4] Add DT support for Network Space v2 and parents Jason Cooper
2012-10-15 18:50   ` Simon Guinot
2012-10-15 19:13     ` Jason Cooper

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.