All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board
@ 2012-04-12 18:45 Karol Lewandowski
  2012-04-12 18:45 ` [PATCH 01/13] regulator: Fix DT node name checking in max8997-pmic Karol Lewandowski
                   ` (12 more replies)
  0 siblings, 13 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski

[ This is just an RFC for those interested DT-support progress on samsung
  boards. ]

This patchset provides up to date patches for drivers used on Samsung's
Nuri board.  Additionally, expermiental (and incomplete) .dts is also
provided.

Included .dts provides description for many, but not all devices found
in mach-nuri.c.  Currently mmc, fimc and mfc aren't supported.


This patch series is based on mainline v3.4-rc2 with following patches
applied: 

 1. [PATCH v5 0/2] ARM: Exynos: Add irq_domain and device tree support for combiner

    http://permalink.gmane.org/gmane.linux.kernel.samsung-soc/10296

 2. [PATCH v4 0/4] ARM: Exynos4: Add irq domain and device tree support for wakeup interrupts

    http://permalink.gmane.org/gmane.linux.kernel.samsung-soc/10302 

 3. [PATCH v4 0/2] regulator: add irq domain and device tree support for MAX8997

    http://permalink.gmane.org/gmane.linux.drivers.devicetree/13995

 4. [PATCH v3 0/3] i2c-s3c2410: Updates for exynos4210 and DT-based systems

    http://permalink.gmane.org/gmane.linux.drivers.i2c/10380


  [ In this patch series I have also included tiny fix for i2c-gpio,
    rebased for v3.4-rc2, originally found here: 

    http://permalink.gmane.org/gmane.linux.drivers.i2c/10414 ]


Karol Lewandowski (13):
  regulator: Fix DT node name checking in max8997-pmic
  ARM: Add document to list devices with trivial DT description
  s5p-g2d: Make it possible to instantiate driver from DT
  i2c-pxa: Drop leftover comment
  i2c: Dynamically assign adapter id if it wasn't explictly specified
  s5p-tv: Add initial DT-support for SiI9234
  s5p-tv: Add initial DT-support for TV mixer
  s5p-tv: Add initial DT-support for HDMIPHY
  s5p-tv: Move HDMIPHY and MHL subdev probing to dedicated function
  s5p-tv: Add DT-support for HDMI driver
  ARM: Exynos4: dts: Specify address and size cells for i2c controllers
  ARM: Exynos4: Add few more i2c OF compat definitions
  ARM: dts: Add initial dts for Samsung's NURI board based on
    Exynos4210

 .../devicetree/bindings/arm/exynos/tvmixer.txt     |   26 +
 .../devicetree/bindings/arm/trivial-devices.txt    |   11 +
 .../devicetree/bindings/i2c/sil-mhl9234.txt        |   14 +
 .../devicetree/bindings/i2c/trivial-devices.txt    |    1 +
 arch/arm/boot/dts/exynos4210-nuri.dts              |  527 ++++++++++++++++++++
 arch/arm/boot/dts/exynos4210.dtsi                  |   16 +
 arch/arm/mach-exynos/mach-exynos4-dt.c             |   10 +
 drivers/i2c/busses/i2c-gpio.c                      |    7 +-
 drivers/i2c/busses/i2c-pca-platform.c              |    2 +-
 drivers/i2c/busses/i2c-pxa.c                       |    5 -
 drivers/i2c/busses/i2c-versatile.c                 |    9 +-
 drivers/media/video/s5p-g2d/g2d.c                  |   10 +
 drivers/media/video/s5p-tv/hdmi_drv.c              |  158 +++++--
 drivers/media/video/s5p-tv/hdmiphy_drv.c           |   10 +
 drivers/media/video/s5p-tv/mixer_drv.c             |    9 +
 drivers/media/video/s5p-tv/sii9234_drv.c           |   21 +-
 drivers/regulator/max8997.c                        |    7 +
 17 files changed, 781 insertions(+), 62 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/arm/exynos/tvmixer.txt
 create mode 100644 Documentation/devicetree/bindings/arm/trivial-devices.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/sil-mhl9234.txt
 create mode 100644 arch/arm/boot/dts/exynos4210-nuri.dts

-- 
1.7.9.1


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

* [PATCH 01/13] regulator: Fix DT node name checking in max8997-pmic
  2012-04-12 18:45 [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board Karol Lewandowski
@ 2012-04-12 18:45 ` Karol Lewandowski
  2012-04-24 22:56     ` Olof Johansson
  2012-04-12 18:45 ` [PATCH 02/13] ARM: Add document to list devices with trivial DT description Karol Lewandowski
                   ` (11 subsequent siblings)
  12 siblings, 1 reply; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski

Avoid hard lockup when someone provides non-supported regulator
name.

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Thomas Abraham <thomas.abraham@linaro.org>
---
 drivers/regulator/max8997.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/drivers/regulator/max8997.c b/drivers/regulator/max8997.c
index dce8aaf..c20fd72 100644
--- a/drivers/regulator/max8997.c
+++ b/drivers/regulator/max8997.c
@@ -1011,6 +1011,13 @@ static int max8997_pmic_dt_parse_pdata(struct max8997_dev *iodev,
 		for (i = 0; i < ARRAY_SIZE(regulators); i++)
 			if (!of_node_cmp(reg_np->name, regulators[i].name))
 				break;
+
+		if (i == ARRAY_SIZE(regulators)) {
+			dev_warn(iodev->dev, "don't know how to configure regulator %s\n",
+				 reg_np->name);
+			continue;
+		}
+
 		rdata->id = i;
 		rdata->initdata = of_get_regulator_init_data(
 						iodev->dev, reg_np);
-- 
1.7.9.1


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

* [PATCH 02/13] ARM: Add document to list devices with trivial DT description
  2012-04-12 18:45 [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board Karol Lewandowski
  2012-04-12 18:45 ` [PATCH 01/13] regulator: Fix DT node name checking in max8997-pmic Karol Lewandowski
@ 2012-04-12 18:45 ` Karol Lewandowski
  2012-04-12 18:45   ` Karol Lewandowski
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski, Grant Likely

Add arm/trivial-devices.txt to enumerate devices for which only
basic resources are provided (compat, address and irq line).

This is based on i2c's trivial-devices.txt by Olof Johansson.

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Grant Likely <grant.likely@secretlab.ca>
---
 .../devicetree/bindings/arm/trivial-devices.txt    |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/arm/trivial-devices.txt

diff --git a/Documentation/devicetree/bindings/arm/trivial-devices.txt b/Documentation/devicetree/bindings/arm/trivial-devices.txt
new file mode 100644
index 0000000..443814a
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/trivial-devices.txt
@@ -0,0 +1,10 @@
+This is a list of trivial devices that have simple device tree
+bindings, consisting only of a compatible field, an address and
+possibly an interrupt line.
+
+If a device needs more specific bindings, such as properties to
+describe some aspect of it, there needs to be a specific binding
+document for it just like any other devices.
+
+Compatible                      Vendor / Chip
+========================        =============
-- 
1.7.9.1


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

* [PATCH 03/13] s5p-g2d: Make it possible to instantiate driver from DT
@ 2012-04-12 18:45   ` Karol Lewandowski
  0 siblings, 0 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski, Kamil Debski

This driver requires standard properties like (address and irq)
which are automatically marshalled for drivers by OF core.

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Kamil Debski <k.debski@samsung.com>
---
 .../devicetree/bindings/arm/trivial-devices.txt    |    1 +
 drivers/media/video/s5p-g2d/g2d.c                  |   10 ++++++++++
 2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/Documentation/devicetree/bindings/arm/trivial-devices.txt b/Documentation/devicetree/bindings/arm/trivial-devices.txt
index 443814a..d0f6c45 100644
--- a/Documentation/devicetree/bindings/arm/trivial-devices.txt
+++ b/Documentation/devicetree/bindings/arm/trivial-devices.txt
@@ -8,3 +8,4 @@ document for it just like any other devices.
 
 Compatible                      Vendor / Chip
 ========================        =============
+samsung,s5pv210-g2d		2D graphics accelerator found on s5pv210+ SoCs
diff --git a/drivers/media/video/s5p-g2d/g2d.c b/drivers/media/video/s5p-g2d/g2d.c
index 789de74..96fd584 100644
--- a/drivers/media/video/s5p-g2d/g2d.c
+++ b/drivers/media/video/s5p-g2d/g2d.c
@@ -20,6 +20,7 @@
 #include <linux/interrupt.h>
 
 #include <linux/platform_device.h>
+#include <linux/of.h>
 #include <media/v4l2-mem2mem.h>
 #include <media/v4l2-device.h>
 #include <media/v4l2-ioctl.h>
@@ -832,12 +833,21 @@ static int g2d_remove(struct platform_device *pdev)
 	return 0;
 }
 
+#ifdef CONFIG_OF
+static struct of_device_id g2d_dt_match[] = {
+	{ .compatible = "samsung,s5pv210-g2d" },
+	{},
+};
+MODULE_DEVICE_TABLE(of, g2d_dt_match);
+#endif
+
 static struct platform_driver g2d_pdrv = {
 	.probe		= g2d_probe,
 	.remove		= g2d_remove,
 	.driver		= {
 		.name = G2D_NAME,
 		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(g2d_dt_match),
 	},
 };
 
-- 
1.7.9.1


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

* [PATCH 03/13] s5p-g2d: Make it possible to instantiate driver from DT
@ 2012-04-12 18:45   ` Karol Lewandowski
  0 siblings, 0 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA
  Cc: Kamil Debski, kgene.kim-Sze3O3UU22JBDgjK7y7TUQ,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ, Karol Lewandowski,
	m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ

This driver requires standard properties like (address and irq)
which are automatically marshalled for drivers by OF core.

Signed-off-by: Karol Lewandowski <k.lewandowsk-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
Signed-off-by: Kyungmin Park <kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
Cc: Kamil Debski <k.debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
---
 .../devicetree/bindings/arm/trivial-devices.txt    |    1 +
 drivers/media/video/s5p-g2d/g2d.c                  |   10 ++++++++++
 2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/Documentation/devicetree/bindings/arm/trivial-devices.txt b/Documentation/devicetree/bindings/arm/trivial-devices.txt
index 443814a..d0f6c45 100644
--- a/Documentation/devicetree/bindings/arm/trivial-devices.txt
+++ b/Documentation/devicetree/bindings/arm/trivial-devices.txt
@@ -8,3 +8,4 @@ document for it just like any other devices.
 
 Compatible                      Vendor / Chip
 ========================        =============
+samsung,s5pv210-g2d		2D graphics accelerator found on s5pv210+ SoCs
diff --git a/drivers/media/video/s5p-g2d/g2d.c b/drivers/media/video/s5p-g2d/g2d.c
index 789de74..96fd584 100644
--- a/drivers/media/video/s5p-g2d/g2d.c
+++ b/drivers/media/video/s5p-g2d/g2d.c
@@ -20,6 +20,7 @@
 #include <linux/interrupt.h>
 
 #include <linux/platform_device.h>
+#include <linux/of.h>
 #include <media/v4l2-mem2mem.h>
 #include <media/v4l2-device.h>
 #include <media/v4l2-ioctl.h>
@@ -832,12 +833,21 @@ static int g2d_remove(struct platform_device *pdev)
 	return 0;
 }
 
+#ifdef CONFIG_OF
+static struct of_device_id g2d_dt_match[] = {
+	{ .compatible = "samsung,s5pv210-g2d" },
+	{},
+};
+MODULE_DEVICE_TABLE(of, g2d_dt_match);
+#endif
+
 static struct platform_driver g2d_pdrv = {
 	.probe		= g2d_probe,
 	.remove		= g2d_remove,
 	.driver		= {
 		.name = G2D_NAME,
 		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(g2d_dt_match),
 	},
 };
 
-- 
1.7.9.1

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

* [PATCH 04/13] i2c-pxa: Drop leftover comment
  2012-04-12 18:45 [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board Karol Lewandowski
                   ` (2 preceding siblings ...)
  2012-04-12 18:45   ` Karol Lewandowski
@ 2012-04-12 18:45 ` Karol Lewandowski
  2012-04-12 18:45 ` [PATCH 05/13] i2c: Dynamically assign adapter id if it wasn't explictly specified Karol Lewandowski
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski, Wolfram Sang

Commit 488bf314b ("i2c: Allow i2c_add_numbered_adapter() to assign a
bus id") reworked i2c-pxa driver leaving obsolete comment.

This commit simply drops it.

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Wolfram Sang <w.sang@pengutronix.de>
---
 drivers/i2c/busses/i2c-pxa.c |    5 -----
 1 files changed, 0 insertions(+), 5 deletions(-)

diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
index f673326..a997c7d 100644
--- a/drivers/i2c/busses/i2c-pxa.c
+++ b/drivers/i2c/busses/i2c-pxa.c
@@ -1131,11 +1131,6 @@ static int i2c_pxa_probe(struct platform_device *dev)
 	spin_lock_init(&i2c->lock);
 	init_waitqueue_head(&i2c->wait);
 
-	/*
-	 * If "dev->id" is negative we consider it as zero.
-	 * The reason to do so is to avoid sysfs names that only make
-	 * sense when there are multiple adapters.
-	 */
 	i2c->adap.nr = dev->id;
 	snprintf(i2c->adap.name, sizeof(i2c->adap.name), "pxa_i2c-i2c.%u",
 		 i2c->adap.nr);
-- 
1.7.9.1


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

* [PATCH 05/13] i2c: Dynamically assign adapter id if it wasn't explictly specified
  2012-04-12 18:45 [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board Karol Lewandowski
                   ` (3 preceding siblings ...)
  2012-04-12 18:45 ` [PATCH 04/13] i2c-pxa: Drop leftover comment Karol Lewandowski
@ 2012-04-12 18:45 ` Karol Lewandowski
  2012-04-12 18:45   ` Karol Lewandowski
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski, Wolfram Sang

Commit 488bf314b ("i2c: Allow i2c_add_numbered_adapter() to assign a
bus id") reworked i2c_add_numbered_adapter() to call i2c_add_adapter()
if requested bus was -1.

This allows to simplify driver's initialization procedure by using
just one function for static and dynamic adapter id registration.

This patch updates few more drivers (missed out in original patch)
to use this functionality.

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Wolfram Sang <w.sang@pengutronix.de>
---
 drivers/i2c/busses/i2c-gpio.c         |    7 +------
 drivers/i2c/busses/i2c-pca-platform.c |    2 +-
 drivers/i2c/busses/i2c-versatile.c    |    9 ++-------
 3 files changed, 4 insertions(+), 14 deletions(-)

diff --git a/drivers/i2c/busses/i2c-gpio.c b/drivers/i2c/busses/i2c-gpio.c
index c0330a4..e62d2d9 100644
--- a/drivers/i2c/busses/i2c-gpio.c
+++ b/drivers/i2c/busses/i2c-gpio.c
@@ -190,12 +190,7 @@ static int __devinit i2c_gpio_probe(struct platform_device *pdev)
 	adap->dev.parent = &pdev->dev;
 	adap->dev.of_node = pdev->dev.of_node;
 
-	/*
-	 * If "dev->id" is negative we consider it as zero.
-	 * The reason to do so is to avoid sysfs names that only make
-	 * sense when there are multiple adapters.
-	 */
-	adap->nr = (pdev->id != -1) ? pdev->id : 0;
+	adap->nr = pdev->id;
 	ret = i2c_bit_add_numbered_bus(adap);
 	if (ret)
 		goto err_add_bus;
diff --git a/drivers/i2c/busses/i2c-pca-platform.c b/drivers/i2c/busses/i2c-pca-platform.c
index 2adbf1a..675878f 100644
--- a/drivers/i2c/busses/i2c-pca-platform.c
+++ b/drivers/i2c/busses/i2c-pca-platform.c
@@ -171,7 +171,7 @@ static int __devinit i2c_pca_pf_probe(struct platform_device *pdev)
 	i2c->io_size = resource_size(res);
 	i2c->irq = irq;
 
-	i2c->adap.nr = pdev->id >= 0 ? pdev->id : 0;
+	i2c->adap.nr = pdev->id;
 	i2c->adap.owner = THIS_MODULE;
 	snprintf(i2c->adap.name, sizeof(i2c->adap.name),
 		 "PCA9564/PCA9665 at 0x%08lx",
diff --git a/drivers/i2c/busses/i2c-versatile.c b/drivers/i2c/busses/i2c-versatile.c
index f585aea..eec20db 100644
--- a/drivers/i2c/busses/i2c-versatile.c
+++ b/drivers/i2c/busses/i2c-versatile.c
@@ -104,13 +104,8 @@ static int i2c_versatile_probe(struct platform_device *dev)
 	i2c->algo = i2c_versatile_algo;
 	i2c->algo.data = i2c;
 
-	if (dev->id >= 0) {
-		/* static bus numbering */
-		i2c->adap.nr = dev->id;
-		ret = i2c_bit_add_numbered_bus(&i2c->adap);
-	} else
-		/* dynamic bus numbering */
-		ret = i2c_bit_add_bus(&i2c->adap);
+	i2c->adap.nr = dev->id;
+	ret = i2c_bit_add_numbered_bus(&i2c->adap);
 	if (ret >= 0) {
 		platform_set_drvdata(dev, i2c);
 		of_i2c_register_devices(&i2c->adap);
-- 
1.7.9.1


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

* [PATCH 06/13] s5p-tv: Add initial DT-support for SiI9234
@ 2012-04-12 18:45   ` Karol Lewandowski
  0 siblings, 0 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski,
	Tomasz Stanislawski

Make it possible to instantiate SiI9234, Mobile HD Link driver (MHL),
from regular device tree description.

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Tomasz Stanislawski <t.stanislaws@samsung.com>
---
 .../devicetree/bindings/i2c/sil-mhl9234.txt        |   14 +++++++++++++
 drivers/media/video/s5p-tv/sii9234_drv.c           |   21 +++++++++++++++++++-
 2 files changed, 34 insertions(+), 1 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/i2c/sil-mhl9234.txt

diff --git a/Documentation/devicetree/bindings/i2c/sil-mhl9234.txt b/Documentation/devicetree/bindings/i2c/sil-mhl9234.txt
new file mode 100644
index 0000000..b5d92ea
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/sil-mhl9234.txt
@@ -0,0 +1,14 @@
+* Silicon Image Mobile HD Link (MHL) 9234
+
+Required properties :
+ - compatible : "sil,mhl-9234"
+ - reg        : i2c device address
+ - gpio-reset : gpio line used to reset IC
+
+Example:
+
+	mhl@39 {
+		compatible = "sil,mhl-9234";
+		reg = <0x39>;
+		gpio-reset = <&gpf3 4 0 0 0>;
+	};
diff --git a/drivers/media/video/s5p-tv/sii9234_drv.c b/drivers/media/video/s5p-tv/sii9234_drv.c
index 0f31ecc..05df5e8 100644
--- a/drivers/media/video/s5p-tv/sii9234_drv.c
+++ b/drivers/media/video/s5p-tv/sii9234_drv.c
@@ -22,6 +22,8 @@
 #include <linux/pm_runtime.h>
 #include <linux/regulator/machine.h>
 #include <linux/slab.h>
+#include <linux/of.h>
+#include <linux/of_gpio.h>
 
 #include <mach/gpio.h>
 #include <plat/gpio-cfg.h>
@@ -338,7 +340,16 @@ static int __devinit sii9234_probe(struct i2c_client *client,
 		goto fail_ctx;
 	}
 
-	ctx->gpio_n_reset = pdata->gpio_n_reset;
+	if (dev->of_node) {
+		ctx->gpio_n_reset = of_get_named_gpio(dev->of_node, "gpio-reset", 0);
+		if (!gpio_is_valid(ctx->gpio_n_reset)) {
+			ret = -ENODEV;
+			goto fail_power;
+		}
+	} else {
+		ctx->gpio_n_reset = pdata->gpio_n_reset;
+	}
+
 	ret = gpio_request(ctx->gpio_n_reset, "MHL_RST");
 	if (ret) {
 		dev_err(dev, "failed to acquire MHL_RST gpio\n");
@@ -401,6 +412,13 @@ static int __devexit sii9234_remove(struct i2c_client *client)
 	return 0;
 }
 
+#ifdef CONFIG_OF
+static const struct of_device_id sii9234_dt_match[] = {
+	{ .compatible = "sil,mhl-9234" },
+	{ },
+};
+MODULE_DEVICE_TABLE(of, sii9234_dt_match);
+#endif
 
 static const struct i2c_device_id sii9234_id[] = {
 	{ "SII9234", 0 },
@@ -413,6 +431,7 @@ static struct i2c_driver sii9234_driver = {
 		.name	= "sii9234",
 		.owner	= THIS_MODULE,
 		.pm = &sii9234_pm_ops,
+		.of_match_table = of_match_ptr(sii9234_dt_match),
 	},
 	.probe		= sii9234_probe,
 	.remove		= __devexit_p(sii9234_remove),
-- 
1.7.9.1


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

* [PATCH 06/13] s5p-tv: Add initial DT-support for SiI9234
@ 2012-04-12 18:45   ` Karol Lewandowski
  0 siblings, 0 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA
  Cc: Tomasz Stanislawski, kgene.kim-Sze3O3UU22JBDgjK7y7TUQ,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ, Karol Lewandowski,
	m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ

Make it possible to instantiate SiI9234, Mobile HD Link driver (MHL),
from regular device tree description.

Signed-off-by: Karol Lewandowski <k.lewandowsk-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
Signed-off-by: Kyungmin Park <kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
Cc: Tomasz Stanislawski <t.stanislaws-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
---
 .../devicetree/bindings/i2c/sil-mhl9234.txt        |   14 +++++++++++++
 drivers/media/video/s5p-tv/sii9234_drv.c           |   21 +++++++++++++++++++-
 2 files changed, 34 insertions(+), 1 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/i2c/sil-mhl9234.txt

diff --git a/Documentation/devicetree/bindings/i2c/sil-mhl9234.txt b/Documentation/devicetree/bindings/i2c/sil-mhl9234.txt
new file mode 100644
index 0000000..b5d92ea
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/sil-mhl9234.txt
@@ -0,0 +1,14 @@
+* Silicon Image Mobile HD Link (MHL) 9234
+
+Required properties :
+ - compatible : "sil,mhl-9234"
+ - reg        : i2c device address
+ - gpio-reset : gpio line used to reset IC
+
+Example:
+
+	mhl@39 {
+		compatible = "sil,mhl-9234";
+		reg = <0x39>;
+		gpio-reset = <&gpf3 4 0 0 0>;
+	};
diff --git a/drivers/media/video/s5p-tv/sii9234_drv.c b/drivers/media/video/s5p-tv/sii9234_drv.c
index 0f31ecc..05df5e8 100644
--- a/drivers/media/video/s5p-tv/sii9234_drv.c
+++ b/drivers/media/video/s5p-tv/sii9234_drv.c
@@ -22,6 +22,8 @@
 #include <linux/pm_runtime.h>
 #include <linux/regulator/machine.h>
 #include <linux/slab.h>
+#include <linux/of.h>
+#include <linux/of_gpio.h>
 
 #include <mach/gpio.h>
 #include <plat/gpio-cfg.h>
@@ -338,7 +340,16 @@ static int __devinit sii9234_probe(struct i2c_client *client,
 		goto fail_ctx;
 	}
 
-	ctx->gpio_n_reset = pdata->gpio_n_reset;
+	if (dev->of_node) {
+		ctx->gpio_n_reset = of_get_named_gpio(dev->of_node, "gpio-reset", 0);
+		if (!gpio_is_valid(ctx->gpio_n_reset)) {
+			ret = -ENODEV;
+			goto fail_power;
+		}
+	} else {
+		ctx->gpio_n_reset = pdata->gpio_n_reset;
+	}
+
 	ret = gpio_request(ctx->gpio_n_reset, "MHL_RST");
 	if (ret) {
 		dev_err(dev, "failed to acquire MHL_RST gpio\n");
@@ -401,6 +412,13 @@ static int __devexit sii9234_remove(struct i2c_client *client)
 	return 0;
 }
 
+#ifdef CONFIG_OF
+static const struct of_device_id sii9234_dt_match[] = {
+	{ .compatible = "sil,mhl-9234" },
+	{ },
+};
+MODULE_DEVICE_TABLE(of, sii9234_dt_match);
+#endif
 
 static const struct i2c_device_id sii9234_id[] = {
 	{ "SII9234", 0 },
@@ -413,6 +431,7 @@ static struct i2c_driver sii9234_driver = {
 		.name	= "sii9234",
 		.owner	= THIS_MODULE,
 		.pm = &sii9234_pm_ops,
+		.of_match_table = of_match_ptr(sii9234_dt_match),
 	},
 	.probe		= sii9234_probe,
 	.remove		= __devexit_p(sii9234_remove),
-- 
1.7.9.1

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

* [PATCH 07/13] s5p-tv: Add initial DT-support for TV mixer
  2012-04-12 18:45 [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board Karol Lewandowski
                   ` (5 preceding siblings ...)
  2012-04-12 18:45   ` Karol Lewandowski
@ 2012-04-12 18:45 ` Karol Lewandowski
  2012-04-12 18:45 ` [PATCH 08/13] s5p-tv: Add initial DT-support for HDMIPHY Karol Lewandowski
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski,
	Tomasz Stanislawski

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Tomasz Stanislawski <t.stanislaws@samsung.com>
---
 .../devicetree/bindings/arm/exynos/tvmixer.txt     |   26 ++++++++++++++++++++
 drivers/media/video/s5p-tv/mixer_drv.c             |    9 +++++++
 2 files changed, 35 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/arm/exynos/tvmixer.txt

diff --git a/Documentation/devicetree/bindings/arm/exynos/tvmixer.txt b/Documentation/devicetree/bindings/arm/exynos/tvmixer.txt
new file mode 100644
index 0000000..5b4f02e
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/exynos/tvmixer.txt
@@ -0,0 +1,26 @@
+* Samsung video/graphics mixer and blender
+
+Mixer blends graphics data from multiple sources and sends resulting
+data to TVOUT module.
+
+
+Required properties:
+
+ - compatible : "samsung,s5pv210-tvmixer"
+ - reg : shall contain memory addresses and sizes of mixer and video
+   processor devices
+ - reg-names : "mxr" for mixer's address/size and "vp" to for video
+   processor's.
+ - interrupt-names : shall contain "irq"
+
+
+Example:
+
+	tvmixer@12c10000 {
+		compatible = "samsung,s5pv210-tvmixer";
+		reg = <0x12c10000 0x10000>,
+		      <0x12c00000 0x10000>;
+		reg-names = "mxr", "vp";
+		interrupts = <0 123 0>;
+		interrupt-names = "irq";
+	};
diff --git a/drivers/media/video/s5p-tv/mixer_drv.c b/drivers/media/video/s5p-tv/mixer_drv.c
index a2c0c25..80b7755 100644
--- a/drivers/media/video/s5p-tv/mixer_drv.c
+++ b/drivers/media/video/s5p-tv/mixer_drv.c
@@ -448,6 +448,14 @@ static int __devexit mxr_remove(struct platform_device *pdev)
 	return 0;
 }
 
+#ifdef CONFIG_OF
+static const struct of_device_id mxr_dt_match[] = {
+	{ .compatible = "samsung,s5pv210-tvmixer" },
+	{ },
+};
+MODULE_DEVICE_TABLE(of, mxr_dt_match);
+#endif
+
 static struct platform_driver mxr_driver __refdata = {
 	.probe = mxr_probe,
 	.remove = __devexit_p(mxr_remove),
@@ -455,6 +463,7 @@ static struct platform_driver mxr_driver __refdata = {
 		.name = MXR_DRIVER_NAME,
 		.owner = THIS_MODULE,
 		.pm = &mxr_pm_ops,
+		.of_match_table = of_match_ptr(mxr_dt_match),
 	}
 };
 
-- 
1.7.9.1


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

* [PATCH 08/13] s5p-tv: Add initial DT-support for HDMIPHY
  2012-04-12 18:45 [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board Karol Lewandowski
                   ` (6 preceding siblings ...)
  2012-04-12 18:45 ` [PATCH 07/13] s5p-tv: Add initial DT-support for TV mixer Karol Lewandowski
@ 2012-04-12 18:45 ` Karol Lewandowski
  2012-04-12 18:45 ` [PATCH 09/13] s5p-tv: Move HDMIPHY and MHL subdev probing to dedicated function Karol Lewandowski
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski,
	Tomasz Stanislawski

Make it possible to instantiate driver from device tree description.

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Reviewed-by: Thomas Abraham <thomas.abraham@linaro.org>
Cc: Tomasz Stanislawski <t.stanislaws@samsung.com>
---
 .../devicetree/bindings/i2c/trivial-devices.txt    |    1 +
 drivers/media/video/s5p-tv/hdmiphy_drv.c           |   10 ++++++++++
 2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
index 1a85f98..3087bc4 100644
--- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt
+++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
@@ -51,6 +51,7 @@ plx,pex8648		48-Lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch
 ramtron,24c64		i2c serial eeprom  (24cxx)
 ricoh,rs5c372a		I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC
 samsung,24ad0xd1	S524AD0XF1 (128K/256K-bit Serial EEPROM for Low Power)
+samsung,s5pv210-hdmiphy PLL-based clock generator for HDMI PHY found on s5pv210+ SoCs
 st-micro,24c256		i2c serial eeprom  (24cxx)
 stm,m41t00		Serial Access TIMEKEEPER
 stm,m41t62		Serial real-time clock (RTC) with alarm
diff --git a/drivers/media/video/s5p-tv/hdmiphy_drv.c b/drivers/media/video/s5p-tv/hdmiphy_drv.c
index 0afef77..3fcac4f 100644
--- a/drivers/media/video/s5p-tv/hdmiphy_drv.c
+++ b/drivers/media/video/s5p-tv/hdmiphy_drv.c
@@ -18,6 +18,7 @@
 #include <linux/interrupt.h>
 #include <linux/irq.h>
 #include <linux/err.h>
+#include <linux/of.h>
 
 #include <media/v4l2-subdev.h>
 
@@ -165,10 +166,19 @@ static const struct i2c_device_id hdmiphy_id[] = {
 };
 MODULE_DEVICE_TABLE(i2c, hdmiphy_id);
 
+#ifdef CONFIG_OF
+static struct of_device_id hdmiphy_dt_match[] = {
+	{ .compatible = "samsung,s5pv210-hdmiphy" },
+	{ },
+};
+MODULE_DEVICE_TABLE(of, hdmiphy_dt_match);
+#endif
+
 static struct i2c_driver hdmiphy_driver = {
 	.driver = {
 		.name	= "s5p-hdmiphy",
 		.owner	= THIS_MODULE,
+		.of_match_table = of_match_ptr(hdmiphy_dt_match),
 	},
 	.probe		= hdmiphy_probe,
 	.remove		= __devexit_p(hdmiphy_remove),
-- 
1.7.9.1


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

* [PATCH 09/13] s5p-tv: Move HDMIPHY and MHL subdev probing to dedicated function
  2012-04-12 18:45 [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board Karol Lewandowski
                   ` (7 preceding siblings ...)
  2012-04-12 18:45 ` [PATCH 08/13] s5p-tv: Add initial DT-support for HDMIPHY Karol Lewandowski
@ 2012-04-12 18:45 ` Karol Lewandowski
  2012-04-13  6:42   ` Tomasz Stanislawski
  2012-04-12 18:45 ` [PATCH 10/13] s5p-tv: Add DT-support for HDMI driver Karol Lewandowski
                   ` (3 subsequent siblings)
  12 siblings, 1 reply; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski,
	Tomasz Stanislawski

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Cc: Tomasz Stanislawski <t.stanislaws@samsung.com>
---
 drivers/media/video/s5p-tv/hdmi_drv.c |   90 ++++++++++++++++++---------------
 1 files changed, 49 insertions(+), 41 deletions(-)

diff --git a/drivers/media/video/s5p-tv/hdmi_drv.c b/drivers/media/video/s5p-tv/hdmi_drv.c
index 4865d25..fff3cab 100644
--- a/drivers/media/video/s5p-tv/hdmi_drv.c
+++ b/drivers/media/video/s5p-tv/hdmi_drv.c
@@ -865,11 +865,47 @@ fail:
 	return -ENODEV;
 }
 
+static struct v4l2_subdev *hdmi_get_subdev(
+	struct hdmi_device *hdmi_dev,
+	struct i2c_board_info *bdinfo,
+	int bus,
+	const char *propname)
+{
+	struct v4l2_subdev *sd = NULL;
+	struct i2c_adapter *adapter;
+	struct device *dev = hdmi_dev->dev;
+
+	if (!bdinfo) {
+		dev_err(dev, "%s info is missing in platform data\n",
+			propname);
+		return ERR_PTR(-ENXIO);
+	}
+
+	adapter = i2c_get_adapter(bus);
+	if (adapter == NULL) {
+		dev_err(dev, "%s adapter request failed, name\n",
+			propname);
+		return ERR_PTR(-ENXIO);
+	}
+
+	sd = v4l2_i2c_new_subdev_board(&hdmi_dev->v4l2_dev,
+				       adapter, bdinfo, NULL);
+
+	/* on failure or not adapter is no longer useful */
+	i2c_put_adapter(adapter);
+
+	if (sd == NULL) {
+		dev_err(dev, "missing subdev for %s\n", propname);
+		return ERR_PTR(-ENODEV);
+	}
+
+	return sd;
+}
+
 static int __devinit hdmi_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
 	struct resource *res;
-	struct i2c_adapter *adapter;
 	struct v4l2_subdev *sd;
 	struct hdmi_device *hdmi_dev = NULL;
 	struct s5p_hdmi_platform_data *pdata = dev->platform_data;
@@ -937,51 +973,23 @@ static int __devinit hdmi_probe(struct platform_device *pdev)
 		goto fail_init;
 	}
 
-	/* testing if hdmiphy info is present */
-	if (!pdata->hdmiphy_info) {
-		dev_err(dev, "hdmiphy info is missing in platform data\n");
-		ret = -ENXIO;
+	hdmi_dev->phy_sd = hdmi_get_subdev(hdmi_dev,
+					   pdata ? pdata->hdmiphy_info : NULL,
+					   pdata ? pdata->hdmiphy_bus : -1,
+					   "phy");
+	if (IS_ERR_OR_NULL(hdmi_dev->phy_sd)) {
+		ret = PTR_ERR(hdmi_dev->phy_sd);
 		goto fail_vdev;
 	}
-
-	adapter = i2c_get_adapter(pdata->hdmiphy_bus);
-	if (adapter == NULL) {
-		dev_err(dev, "hdmiphy adapter request failed\n");
-		ret = -ENXIO;
+	hdmi_dev->mhl_sd = hdmi_get_subdev(hdmi_dev,
+					   pdata ? pdata->mhl_info : NULL ,
+					   pdata ? pdata->mhl_bus : -1,
+					   "mhl");
+	if (IS_ERR_OR_NULL(hdmi_dev->mhl_sd)) {
+		ret = PTR_ERR(hdmi_dev->mhl_sd);
 		goto fail_vdev;
 	}
 
-	hdmi_dev->phy_sd = v4l2_i2c_new_subdev_board(&hdmi_dev->v4l2_dev,
-		adapter, pdata->hdmiphy_info, NULL);
-	/* on failure or not adapter is no longer useful */
-	i2c_put_adapter(adapter);
-	if (hdmi_dev->phy_sd == NULL) {
-		dev_err(dev, "missing subdev for hdmiphy\n");
-		ret = -ENODEV;
-		goto fail_vdev;
-	}
-
-	/* initialization of MHL interface if present */
-	if (pdata->mhl_info) {
-		adapter = i2c_get_adapter(pdata->mhl_bus);
-		if (adapter == NULL) {
-			dev_err(dev, "MHL adapter request failed\n");
-			ret = -ENXIO;
-			goto fail_vdev;
-		}
-
-		hdmi_dev->mhl_sd = v4l2_i2c_new_subdev_board(
-			&hdmi_dev->v4l2_dev, adapter,
-			pdata->mhl_info, NULL);
-		/* on failure or not adapter is no longer useful */
-		i2c_put_adapter(adapter);
-		if (hdmi_dev->mhl_sd == NULL) {
-			dev_err(dev, "missing subdev for MHL\n");
-			ret = -ENODEV;
-			goto fail_vdev;
-		}
-	}
-
 	clk_enable(hdmi_dev->res.hdmi);
 
 	pm_runtime_enable(dev);
-- 
1.7.9.1


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

* [PATCH 10/13] s5p-tv: Add DT-support for HDMI driver
  2012-04-12 18:45 [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board Karol Lewandowski
                   ` (8 preceding siblings ...)
  2012-04-12 18:45 ` [PATCH 09/13] s5p-tv: Move HDMIPHY and MHL subdev probing to dedicated function Karol Lewandowski
@ 2012-04-12 18:45 ` Karol Lewandowski
  2012-04-13  7:21   ` Tomasz Stanislawski
  2012-04-12 18:45 ` [PATCH 11/13] ARM: Exynos4: dts: Specify address and size cells for i2c controllers Karol Lewandowski
                   ` (2 subsequent siblings)
  12 siblings, 1 reply; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski,
	Tomasz Stanislawski

Includes v4l2/dt helper function (hdmi_of_get_i2c_subdev() that probably
should be implemented in v4l2 core itself.

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Cc: Tomasz Stanislawski <t.stanislaws@samsung.com>
---
 drivers/media/video/s5p-tv/hdmi_drv.c |   68 ++++++++++++++++++++++++++++++++-
 1 files changed, 67 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/s5p-tv/hdmi_drv.c b/drivers/media/video/s5p-tv/hdmi_drv.c
index fff3cab..a402e8f 100644
--- a/drivers/media/video/s5p-tv/hdmi_drv.c
+++ b/drivers/media/video/s5p-tv/hdmi_drv.c
@@ -29,6 +29,8 @@
 #include <linux/pm_runtime.h>
 #include <linux/clk.h>
 #include <linux/regulator/consumer.h>
+#include <linux/of.h>
+#include <linux/of_i2c.h>
 
 #include <media/s5p_hdmi.h>
 #include <media/v4l2-common.h>
@@ -712,6 +714,56 @@ static int hdmi_enum_dv_presets(struct v4l2_subdev *sd,
 	return v4l_fill_dv_preset_info(hdmi_conf[preset->index].preset, preset);
 }
 
+#ifdef CONFIG_OF
+/* Heavily based[1] on v4l2_i2c_new_subdev_board()
+ *
+ * [1] Copy-pasted, that is
+ */
+struct v4l2_subdev *hdmi_of_get_i2c_subdev(struct v4l2_device *v4l2_dev,
+	struct device_node *np, const char *propname)
+{
+	struct v4l2_subdev *sd = NULL;
+	struct i2c_client *client;
+	struct device_node *cnp;
+
+	BUG_ON(!v4l2_dev);
+
+	cnp = of_parse_phandle(np, propname, 0);
+	if (!cnp) {
+		dev_err(v4l2_dev->dev, "Can't find subdev %s\n", propname);
+		goto err;
+	}
+
+	client = of_find_i2c_device_by_node(cnp);
+	if (!client) {
+		dev_err(v4l2_dev->dev, "subdev %s doesn't reference correct node\n",
+			propname);
+		goto err;
+	}
+
+	if (client == NULL || client->driver == NULL)
+		goto err;
+
+	/* Lock the module so we can safely get the v4l2_subdev pointer */
+	if (!try_module_get(client->driver->driver.owner))
+		goto err;
+	sd = i2c_get_clientdata(client);
+
+	/* Register with the v4l2_device which increases the module's
+	   use count as well. */
+	if (v4l2_device_register_subdev(v4l2_dev, sd)) {
+		printk(KERN_ERR "%s: failed to register subdev\n", __func__);
+		sd = NULL;
+	}
+	/* Decrease the module use count to match the first try_module_get. */
+	module_put(client->driver->driver.owner);
+err:
+	of_node_put(cnp);
+
+	return sd;
+}
+#endif
+
 static const struct v4l2_subdev_core_ops hdmi_sd_core_ops = {
 	.s_power = hdmi_s_power,
 };
@@ -875,6 +927,12 @@ static struct v4l2_subdev *hdmi_get_subdev(
 	struct i2c_adapter *adapter;
 	struct device *dev = hdmi_dev->dev;
 
+#ifdef CONFIG_OF
+	if (dev->of_node)
+		return hdmi_of_get_i2c_subdev(&hdmi_dev->v4l2_dev,
+					   dev->of_node, propname);
+#endif
+
 	if (!bdinfo) {
 		dev_err(dev, "%s info is missing in platform data\n",
 			propname);
@@ -913,7 +971,7 @@ static int __devinit hdmi_probe(struct platform_device *pdev)
 
 	dev_dbg(dev, "probe start\n");
 
-	if (!pdata) {
+	if (!pdata && !dev->of_node) {
 		dev_err(dev, "platform data is missing\n");
 		ret = -ENODEV;
 		goto fail;
@@ -1037,6 +1095,13 @@ static int __devexit hdmi_remove(struct platform_device *pdev)
 	return 0;
 }
 
+#ifdef CONFIG_OF
+static struct of_device_id hdmi_dt_match[] = {
+	{ .compatible = "samsung,s5pv210-hdmi" },
+	{ },
+};
+#endif
+
 static struct platform_driver hdmi_driver __refdata = {
 	.probe = hdmi_probe,
 	.remove = __devexit_p(hdmi_remove),
@@ -1045,6 +1110,7 @@ static struct platform_driver hdmi_driver __refdata = {
 		.name = "s5p-hdmi",
 		.owner = THIS_MODULE,
 		.pm = &hdmi_pm_ops,
+		.of_match_table = of_match_ptr(hdmi_dt_match),
 	}
 };
 
-- 
1.7.9.1


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

* [PATCH 11/13] ARM: Exynos4: dts: Specify address and size cells for i2c controllers
  2012-04-12 18:45 [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board Karol Lewandowski
                   ` (9 preceding siblings ...)
  2012-04-12 18:45 ` [PATCH 10/13] s5p-tv: Add DT-support for HDMI driver Karol Lewandowski
@ 2012-04-12 18:45 ` Karol Lewandowski
  2012-04-12 18:45 ` [PATCH 12/13] ARM: Exynos4: Add few more i2c OF compat definitions Karol Lewandowski
  2012-04-12 18:45 ` [PATCH 13/13] ARM: dts: Add initial dts for Samsung's NURI board based on Exynos4210 Karol Lewandowski
  12 siblings, 0 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Thomas Abraham <thomas.abraham@linaro.org>
---
 arch/arm/boot/dts/exynos4210.dtsi |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi
index a1dd2ee..be3c57c 100644
--- a/arch/arm/boot/dts/exynos4210.dtsi
+++ b/arch/arm/boot/dts/exynos4210.dtsi
@@ -100,48 +100,64 @@
 	};
 
 	i2c@13860000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
 		reg = <0x13860000 0x100>;
 		interrupts = <0 58 0>;
 	};
 
 	i2c@13870000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
 		reg = <0x13870000 0x100>;
 		interrupts = <0 59 0>;
 	};
 
 	i2c@13880000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
 		reg = <0x13880000 0x100>;
 		interrupts = <0 60 0>;
 	};
 
 	i2c@13890000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
 		reg = <0x13890000 0x100>;
 		interrupts = <0 61 0>;
 	};
 
 	i2c@138A0000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
 		reg = <0x138A0000 0x100>;
 		interrupts = <0 62 0>;
 	};
 
 	i2c@138B0000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
 		reg = <0x138B0000 0x100>;
 		interrupts = <0 63 0>;
 	};
 
 	i2c@138C0000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
 		reg = <0x138C0000 0x100>;
 		interrupts = <0 64 0>;
 	};
 
 	i2c@138D0000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
 		reg = <0x138D0000 0x100>;
 		interrupts = <0 65 0>;
-- 
1.7.9.1


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

* [PATCH 12/13] ARM: Exynos4: Add few more i2c OF compat definitions
  2012-04-12 18:45 [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board Karol Lewandowski
                   ` (10 preceding siblings ...)
  2012-04-12 18:45 ` [PATCH 11/13] ARM: Exynos4: dts: Specify address and size cells for i2c controllers Karol Lewandowski
@ 2012-04-12 18:45 ` Karol Lewandowski
  2012-04-12 18:45 ` [PATCH 13/13] ARM: dts: Add initial dts for Samsung's NURI board based on Exynos4210 Karol Lewandowski
  12 siblings, 0 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski

These are needed for clk_get() to work properly in respective
drivers.

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Thomas Abraham <thomas.abraham@linaro.org>
---
 arch/arm/mach-exynos/mach-exynos4-dt.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c b/arch/arm/mach-exynos/mach-exynos4-dt.c
index 8245f1c..989b35a 100644
--- a/arch/arm/mach-exynos/mach-exynos4-dt.c
+++ b/arch/arm/mach-exynos/mach-exynos4-dt.c
@@ -55,6 +55,16 @@ static const struct of_dev_auxdata exynos4210_auxdata_lookup[] __initconst = {
 				"exynos4-sdhci.3", NULL),
 	OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS4_PA_IIC(0),
 				"s3c2440-i2c.0", NULL),
+	OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS4_PA_IIC(3),
+				"s3c2440-i2c.3", NULL),
+	OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS4_PA_IIC(5),
+				"s3c2440-i2c.5", NULL),
+	OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS4_PA_IIC(6),
+				"s3c2440-i2c.6", NULL),
+	OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS4_PA_IIC_HDMIPHY,
+				"s3c2440-hdmiphy-i2c", NULL),
+	OF_DEV_AUXDATA("samsung,s5pv210-hdmi", S5P_PA_HDMI, "exynos4-hdmi", NULL),
+	OF_DEV_AUXDATA("samsung,s5pv210-tvmixer", S5P_PA_MIXER, "s5p-mixer", NULL),
 	OF_DEV_AUXDATA("arm,pl330", EXYNOS4_PA_PDMA0, "dma-pl330.0", NULL),
 	OF_DEV_AUXDATA("arm,pl330", EXYNOS4_PA_PDMA1, "dma-pl330.1", NULL),
 	{},
-- 
1.7.9.1


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

* [PATCH 13/13] ARM: dts: Add initial dts for Samsung's NURI board based on Exynos4210
  2012-04-12 18:45 [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board Karol Lewandowski
                   ` (11 preceding siblings ...)
  2012-04-12 18:45 ` [PATCH 12/13] ARM: Exynos4: Add few more i2c OF compat definitions Karol Lewandowski
@ 2012-04-12 18:45 ` Karol Lewandowski
  12 siblings, 0 replies; 21+ messages in thread
From: Karol Lewandowski @ 2012-04-12 18:45 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: devicetree-discuss, thomas.abraham, m.szyprowski, kyungmin.park,
	linux-kernel, olof, kgene.kim, Karol Lewandowski

This commit is combination of following patches squashed together to
produce one patch which provides complete DTS for NURI

 - ARM: dts: Add sdhci nodes for NURI
 - ARM: dts: Add i2c-gpio entry for max17042_battery
 - ARM: dts: Add nodes for fixed regulators available on NURI
 - ARM: dts: Add device entry for s5p-g2d on Nuri
 - ARM: dts: Add device node for MFC to Nuri
 - ARM: dts: Add Exynos' wakeup_eint interrupt controller
 - ARM: dts: Add basic max8997-pmic description to NURI's dts
 - ARM: dts: Add special max8997-pmic regulators
   [ This adds non-buck, non-ldo special purpose regulators
     like "CHARGER*" as well as 32kHz oscillator. ]
 - ARM: dts: Add node for s3c-udc to NURI's dts
 - ARM: dts: Add nodes for s5p-tv drivers (hdmi, hdmiphy, sii9234, tvmixer)
 - ARM: dts: Add node for atmel's mxt224 to NURI's dts
 - ARM: dts: Specify EINT controller base address

Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Thomas Abraham <thomas.abraham@linaro.org>
---
 arch/arm/boot/dts/exynos4210-nuri.dts |  527 +++++++++++++++++++++++++++++++++
 1 files changed, 527 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/boot/dts/exynos4210-nuri.dts

diff --git a/arch/arm/boot/dts/exynos4210-nuri.dts b/arch/arm/boot/dts/exynos4210-nuri.dts
new file mode 100644
index 0000000..6e8d68b
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4210-nuri.dts
@@ -0,0 +1,527 @@
+/*
+ * Samsung Nuri board device tree source
+ *
+ * Copyright (C) 2012  Samsung Electronics Co., Ltd.
+ * Author: Karol Lewandowski <k.lewandowsk@samsung.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+/include/ "exynos4210.dtsi"
+
+/ {
+	model = "Samsung Nuri based on Exynos4210";
+	compatible = "samsung,nuri", "samsung,exynos4210";
+
+	memory {
+		reg = <0x40000000 0x40000000>;
+	};
+
+	chosen {
+		bootargs ="console=ttySAC2,115200 fbmem=24M@0x66800000 lcd=nt39411 lpj=3981312";
+	};
+
+	wakeup_eint: interrupt-controller-wakeup-eint {
+		compatible = "samsung,exynos4210-wakeup-eint";
+		reg = <0x11000000 0x1000>;
+		#interrupt-cells = <2>;
+		interrupt-controller;
+		interrupts = 	<0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>,
+				<0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>,
+				<0 24 0>, <0 25 0>, <0 26 0>, <0 27 0>,
+				<0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>,
+				<0 32 0>;
+	};
+
+	/* fixed regulators */
+
+	vemmc_reg: voltage-regulator@0 {
+	        compatible = "regulator-fixed";
+		regulator-name = "VMEM_VDD_2.8V";
+		regulator-min-microvolt = <2800000>;
+		regulator-max-microvolt = <2800000>;
+		regulator-always-on;
+		gpio = <&gpl1 1 1 0 0>;
+	};
+
+	max8903_reg: voltage-regulator@1 {
+	        compatible = "regulator-fixed";
+		regulator-name = "VOUT_CHARGER";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-always-on;
+		regulator-boot-on;
+		gpio = <&gpy4 5 1 0 0>;
+	};
+
+	camvdda_reg: voltage-regulator@2 {
+	        compatible = "regulator-fixed";
+		regulator-name = "CAM_IO_EN";
+		regulator-min-microvolt = <2800000>;
+		regulator-max-microvolt = <2800000>;
+		regulator-always-on;
+		enable-active-high;
+		gpio = <&gpe2 1 1 0 0>;
+	};
+
+	camv1_2_reg: voltage-regulator@3 {
+	        compatible = "regulator-fixed";
+		regulator-name = "8M_1.2V";
+		regulator-min-microvolt = <1200000>;
+		regulator-max-microvolt = <1200000>;
+		regulator-always-on;
+		enable-active-high;
+		gpio = <&gpe2 2 1 0 0>;
+	};
+
+	camv1_5_reg: voltage-regulator@4 {
+	        compatible = "regulator-fixed";
+		regulator-name = "VT_CAM_1.5V";
+		regulator-min-microvolt = <1500000>;
+		regulator-max-microvolt = <1500000>;
+		regulator-always-on;
+		enable-active-high;
+		gpio = <&gpe2 5 1 0 0>;
+	};
+
+	hdmi_reg: voltage-regulator@5 {
+	        compatible = "regulator-fixed";
+		regulator-name = "HDMI_5V";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		gpio = <&gpx2 4 1 0 0>;
+		enable-active-high;
+	};
+
+	sdhci_emmc: sdhci@12510000 {
+		/* eMMC */
+		samsung,sdhci-cd-permanent;
+		gpio-cd = <&gpk0 2 2 3 3>;
+
+		samsung,sdhci-bus-width = <8>;
+		gpios = <&gpk0 0 2 0 3>,
+			<&gpk0 1 2 0 3>,
+			<&gpk1 3 3 3 3>,
+			<&gpk1 4 3 3 3>,
+			<&gpk1 5 3 3 3>,
+			<&gpk1 6 3 3 3>,
+			<&gpk0 3 2 2 3>,
+			<&gpk0 4 2 2 3>,
+			<&gpk0 5 2 2 3>,
+			<&gpk0 6 2 2 3>;
+
+		/* configuration for bus-width 4   */
+		/* samsung,sdhci-bus-width = <4>;  */
+		/*     mux fn___ pull  ___strength */
+		/*		\  |  /		   */
+		/*		 | | |
+		gpios = <&gpk0 0 2 0 3>,
+			<&gpk0 1 2 0 3>,
+			<&gpk0 3 2 2 3>,
+			<&gpk0 4 2 2 3>,
+			<&gpk0 5 2 2 3>,
+			<&gpk0 6 2 2 3>;
+		*/
+
+		vmmc-supply = <&vemmc_reg>;
+	};
+
+	sdhci@12520000 {
+		status = "disabled";
+	};
+
+	sdhci_sd: sdhci@12530000 {
+		/* SD */
+		status = "disabled";
+
+		samsung,sdhci-cd-gpio;
+		gpio-cd = <&gpk2 2 2 3 3>;
+
+		samsung,sdhci-bus-width = <4>;
+		gpios = <&gpk2 0 2 0 3>,
+			<&gpk2 1 2 0 3>,
+			<&gpk2 3 2 3 3>,
+			<&gpk2 4 2 3 3>,
+			<&gpk2 5 2 3 3>,
+			<&gpk2 6 2 3 3>;
+	};
+
+	sdhci_wlan: sdhci@12540000 {
+		/* WLAN */
+		status = "disabled";
+
+		samsung,sdhci-cd-external;
+		samsung,sdhci-bus-width = <4>;
+	};
+
+	i2c0: i2c@13860000 {
+		samsung,i2c-max-bus-freq = <400000>;
+		samsung,i2c-slave-addr = <0>;
+		samsung,i2c-sda-delay = <200>;
+
+		gpios = <&gpd1 0 2 3 0>,
+			<&gpd1 1 2 3 0>;
+
+	};
+
+	i2c1: i2c@13870000 {
+		status = "disabled";
+	};
+
+	i2c2: i2c@13880000 {
+		status = "disabled";
+	};
+
+
+	i2c3: i2c@13890000 {
+		samsung,i2c-max-bus-freq = <400000>;
+		samsung,i2c-slave-addr = <0x10>;
+		samsung,i2c-sda-delay = <100>;
+
+		gpios = <&gpa1 2 3 3 0>,
+			<&gpa1 3 3 3 0>;
+
+	};
+
+	i2c4: i2c@138A0000 {
+		status = "disabled";
+	};
+
+	i2c5: i2c@138B0000 {
+		samsung,i2c-max-bus-freq = <100000>;
+		samsung,i2c-slave-addr = <0x10>;
+		samsung,i2c-sda-delay = <100>;
+
+		gpios = <&gpb 6 3 3 0>,
+			<&gpb 7 3 3 0>;
+
+		max8997_pmic@66 {
+			compatible = "maxim,max8997-pmic";
+			interrupt-parent = <&wakeup_eint>;
+
+			reg = <0x66>;
+			interrupts = <4 0>, <3 0>;
+
+			max8997,pmic-buck1-uses-gpio-dvs;
+			max8997,pmic-buck2-uses-gpio-dvs;
+			max8997,pmic-buck5-uses-gpio-dvs;
+
+			max8997,pmic-ignore-gpiodvs-side-effect;
+			max8997,pmic-buck125-default-dvs-idx = <0>;
+
+			max8997,pmic-buck125-dvs-gpios = <&gpx0 5 1 0 0>,
+						         <&gpx0 6 1 0 0>,
+							 <&gpl0 0 1 0 0>;
+
+			max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
+						       	 <1250000>, <1200000>,
+							 <1150000>, <1100000>,
+							 <1000000>, <950000>;
+
+			max8997,pmic-buck2-dvs-voltage = <1100000>, <1000000>,
+							 <950000>,  <900000>,
+							 <1100000>, <1000000>,
+							 <950000>,  <900000>;
+
+			max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
+						       	 <1200000>, <1200000>,
+							 <1200000>, <1200000>,
+							 <1200000>, <1200000>;
+
+			regulators {
+				vadc_reg: LDO1 {
+				     regulator-name = "VADC_3.3V_C210";
+				     regulator-min-microvolt = <3300000>;
+				     regulator-max-microvolt = <3300000>;
+
+				};
+
+				valive_reg: LDO2 {
+				     regulator-name = "VALIVE_1.1V_C210";
+				     regulator-min-microvolt = <1100000>;
+				     regulator-max-microvolt = <1100000>;
+				     regulator-always-on;
+				};
+
+				vusb_reg: LDO3 {
+				     regulator-name = "VUSB_1.1V_C210";
+				     regulator-min-microvolt = <1100000>;
+				     regulator-max-microvolt = <1100000>;
+				};
+
+				vmipi_reg: LDO4 {
+				     regulator-name = "VMIPI_1.8V";
+				     regulator-min-microvolt = <1800000>;
+				     regulator-max-microvolt = <1800000>;
+				};
+
+				vhsic_reg: LDO5 {
+				     regulator-name = "VHSIC_1.2V_C210";
+				     regulator-min-microvolt = <1200000>;
+				     regulator-max-microvolt = <1200000>;
+				};
+
+				vpda_reg: LDO6 {
+				     regulator-name = "VCC_1.8V_PDA";
+				     regulator-min-microvolt = <1800000>;
+				     regulator-max-microvolt = <1800000>;
+				     regulator-always-on;
+				};
+
+				vcam_reg: LDO7 {
+				     regulator-name = "CAM_ISP_1.8V";
+				     regulator-min-microvolt = <1800000>;
+				     regulator-max-microvolt = <1800000>;
+				};
+
+				vusbdac_reg: LDO8 {
+				     regulator-name = "VUSB/VDAC_3.3V_C210";
+				     regulator-min-microvolt = <3300000>;
+				     regulator-max-microvolt = <3300000>;
+				};
+
+				vccpda_reg: LDO9 {
+				     regulator-name = "VCC_2.8V_PDA";
+				     regulator-min-microvolt = <2800000>;
+				     regulator-max-microvolt = <2800000>;
+				     regulator-always-on;
+				};
+
+				vpll_reg: LDO10 {
+				     regulator-name = "VPLL_1.1V_C210";
+				     regulator-min-microvolt = <1100000>;
+				     regulator-max-microvolt = <1100000>;
+				     regulator-always-on;
+				};
+
+
+				lvds_reg: LDO11 {
+				     regulator-name = "LVDS_VDD3.3V";
+				     regulator-min-microvolt = <3300000>;
+				     regulator-max-microvolt = <3300000>;
+				     regulator-boot-on;
+				};
+
+				vtcam_reg: LDO12 {
+				     regulator-name = "VT_CAM_1.8V";
+				     regulator-min-microvolt = <1800000>;
+				     regulator-max-microvolt = <1800000>;
+				};
+
+				vtf_reg: LDO13 {
+				     regulator-name = "VTF_2.8V";
+				     regulator-min-microvolt = <2800000>;
+				     regulator-max-microvolt = <2800000>;
+				};
+
+				vmotor_reg: LDO14 {
+				     regulator-name = "VCC_3.0V_MOTOR";
+				     regulator-min-microvolt = <3000000>;
+				     regulator-max-microvolt = <3000000>;
+				};
+
+				vtouchadvv_reg: LDO15 {
+				     regulator-name = "VTOUCH_ADVV2.8V";
+				     regulator-min-microvolt = <2800000>;
+				     regulator-max-microvolt = <2800000>;
+				};
+
+				camsensor_reg: LDO16 {
+				     regulator-name = "CAM_SENSOR_IO_1.8V";
+				     regulator-min-microvolt = <1800000>;
+				     regulator-max-microvolt = <1800000>;
+				};
+
+				vtouchvdd_reg: LDO18 {
+				     regulator-name = "VTOUCH_VDD2.8V";
+				     regulator-min-microvolt = <2800000>;
+				     regulator-max-microvolt = <2800000>;
+				};
+
+				vddq_reg: LDO21 {
+				     regulator-name = "VDDQ_M1M2_1.2V";
+				     regulator-min-microvolt = <1200000>;
+				     regulator-max-microvolt = <1200000>;
+				     regulator-always-on;
+				};
+
+				varm_breg: BUCK1 {
+				     regulator-name = "VARM_1.2V_C210";
+				     regulator-min-microvolt = <900000>;
+				     regulator-max-microvolt = <1350000>;
+				     regulator-always-on;
+				};
+
+				vint_breg: BUCK2 {
+				     regulator-name = "VINT_1.1V_C210";
+				     regulator-min-microvolt = <900000>;
+				     regulator-max-microvolt = <1100000>;
+				     regulator-always-on;
+				};
+
+				vg3d_breg: BUCK3 {
+				     regulator-name = "VG3D_1.1V_C210";
+				     regulator-min-microvolt = <900000>;
+				     regulator-max-microvolt = <1350000>;
+				};
+
+				camisp_breg: BUCK4 {
+				     regulator-name = "CAM_ISP_CORE_1.2V";
+				     regulator-min-microvolt = <1200000>;
+				     regulator-max-microvolt = <1200000>;
+				};
+
+				vmem_breg: BUCK5 {
+				     regulator-name = "VMEM_1.2V_C210";
+				     regulator-min-microvolt = <1200000>;
+				     regulator-max-microvolt = <1200000>;
+				     regulator-always-on;
+				};
+
+				camaf_breg: BUCK6 {
+				     regulator-name = "CAM_AF_2.8V";
+				};
+
+				vccsub_breg: BUCK7 {
+				     regulator-name = "VCC_SUB_2.0V";
+				     regulator-min-microvolt = <2800000>;
+				     regulator-max-microvolt = <2800000>;
+				     regulator-always-on;
+				};
+
+				en32ap_sreg: EN32KHz_AP {
+				     regulator-name = "EN32KHz AP";
+				     regulator-always-on;
+				};
+
+				en32cp_sreg: EN32KHz_CP {
+				     regulator-name = "EN32KHz CP";
+				};
+
+				ivchg_sreg: ENVICHG {
+				     regulator-name = "VICHG";
+				};
+
+				safe1_sreg: ESAFEOUT1 {
+				     regulator-name = "SAFEOUT1";
+				     regulator-always-on;
+				};
+
+				safe2_sreg: ESAFEOUT2 {
+				     regulator-name = "SAFEOUT2";
+				     regulator-always-on;
+				};
+
+				charger_sreg: CHARGER {
+				     regulator-name = "CHARGER";
+				     regulator-min-microamp = <200000>;
+				     regulator-max-microamp = <950000>;
+				     regulator-boot-on;
+				};
+
+				chcv_sreg: CHARGER_CV {
+				     regulator-name = "CHARGER CV";
+				     regulator-min-microvolt = <4200000>;
+				     regulator-max-microvolt = <4200000>;
+				};
+
+				chtopoff_sreg: CHARGER_TOPOFF {
+				     regulator-name = "CHARGER TOPOFF";
+				     regulator-min-microamp = <50000>;
+				     regulator-max-microamp = <200000>;
+				};
+			};
+		};
+	};
+
+	i2c6: i2c@138C0000 {
+		samsung,i2c-max-bus-freq = <400000>;
+		samsung,i2c-slave-addr = <0>;
+		samsung,i2c-sda-delay = <200>;
+
+		gpios = <&gpc1 3 4 3 0>,
+			<&gpc1 4 4 3 0>;
+	};
+
+	i2c7: i2c@138D0000 {
+		status = "disabled";
+	};
+
+	i2c8: i2c@138e0000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "samsung,s3c2440-i2c";
+		samsung,i2c-quirk-hdmiphy;
+		samsung,i2c-no-gpio;
+		reg = <0x138e0000 0x1000>;
+		interrupts = <0 125 0>;
+
+		hdmiphy: phy@38 {
+			compatible = "samsung,s5pv210-hdmiphy";
+			reg = <0x38>;
+		};
+	};
+
+	i2c9: i2c@0 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "i2c-gpio";
+		interrupts = <0 307 0>;
+
+		gpios = <&gpy4 0 0 0 0>,
+			<&gpy4 1 0 0 0>;
+
+		battery-charger@36 {
+			compatible = "maxim,max17042";
+			reg = <0x36>;
+		};
+	};
+
+	i2c15: i2c@1 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "i2c-gpio";
+		delay-us = <2>;
+
+		gpios = <&gpy3 0 0 0 0>,
+			<&gpy3 2 0 0 0>;
+
+		hdmimhl: mhl@39 {
+			compatible = "sil,mhl-9234";
+			reg = <0x39>;
+			gpio-reset = <&gpf3 4 0 0 0>;
+			hdmi-en-supply = <&hdmi_reg>;
+		};
+	};
+
+	g2d: gpu@12800000 {
+		compatible = "samsung,s5pv210-g2d";
+		reg = <0x12800000 0x4000>;
+		interrupts = <0 121 0>;
+	};
+
+	tvmixer: tvmixer@12c10000 {
+		compatible = "samsung,s5pv210-tvmixer";
+		reg = <0x12c10000 0x10000>,
+		      <0x12c00000 0x10000>;
+		reg-names = "mxr", "vp";
+		interrupts = <0 123 0>;
+		interrupt-names = "irq";
+	};
+
+	hdmi: hdmi@12d00000 {
+		compatible = "samsung,s5pv210-hdmi";
+		reg = <0x12d00000 0x100000>;
+		interrupts = <0 124 0>;
+		phy = <&hdmiphy>;
+		mhl = <&hdmimhl>;
+
+		vdd_osc-supply = <&vadc_reg>;
+		vdd_pll-supply = <&vusb_reg>;
+		vdd-supply     = <&vusb_reg>;
+		hdmi-en-supply = <&hdmi_reg>;
+	};
+};
-- 
1.7.9.1


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

* Re: [PATCH 09/13] s5p-tv: Move HDMIPHY and MHL subdev probing to dedicated function
  2012-04-12 18:45 ` [PATCH 09/13] s5p-tv: Move HDMIPHY and MHL subdev probing to dedicated function Karol Lewandowski
@ 2012-04-13  6:42   ` Tomasz Stanislawski
  0 siblings, 0 replies; 21+ messages in thread
From: Tomasz Stanislawski @ 2012-04-13  6:42 UTC (permalink / raw)
  To: Karol Lewandowski
  Cc: linux-samsung-soc, devicetree-discuss, thomas.abraham,
	m.szyprowski, kyungmin.park, linux-kernel, olof, kgene.kim

Hi Karol,
Thank you for the patch.

On 04/12/2012 08:45 PM, Karol Lewandowski wrote:
> Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
> Cc: Tomasz Stanislawski <t.stanislaws@samsung.com>
> ---
>  drivers/media/video/s5p-tv/hdmi_drv.c |   90 ++++++++++++++++++---------------
>  1 files changed, 49 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/media/video/s5p-tv/hdmi_drv.c b/drivers/media/video/s5p-tv/hdmi_drv.c
> index 4865d25..fff3cab 100644
> --- a/drivers/media/video/s5p-tv/hdmi_drv.c
> +++ b/drivers/media/video/s5p-tv/hdmi_drv.c
> @@ -865,11 +865,47 @@ fail:
>  	return -ENODEV;
>  }
>  
> +static struct v4l2_subdev *hdmi_get_subdev(
> +	struct hdmi_device *hdmi_dev,
> +	struct i2c_board_info *bdinfo,
> +	int bus,
> +	const char *propname)
> +{
> +	struct v4l2_subdev *sd = NULL;
> +	struct i2c_adapter *adapter;
> +	struct device *dev = hdmi_dev->dev;
> +
> +	if (!bdinfo) {
> +		dev_err(dev, "%s info is missing in platform data\n",
> +			propname);
> +		return ERR_PTR(-ENXIO);
> +	}
> +
> +	adapter = i2c_get_adapter(bus);
> +	if (adapter == NULL) {
> +		dev_err(dev, "%s adapter request failed, name\n",
> +			propname);
> +		return ERR_PTR(-ENXIO);
> +	}
> +
> +	sd = v4l2_i2c_new_subdev_board(&hdmi_dev->v4l2_dev,
> +				       adapter, bdinfo, NULL);
> +
> +	/* on failure or not adapter is no longer useful */
> +	i2c_put_adapter(adapter);
> +
> +	if (sd == NULL) {
> +		dev_err(dev, "missing subdev for %s\n", propname);
> +		return ERR_PTR(-ENODEV);
> +	}
> +
> +	return sd;
> +}
> +
>  static int __devinit hdmi_probe(struct platform_device *pdev)
>  {
>  	struct device *dev = &pdev->dev;
>  	struct resource *res;
> -	struct i2c_adapter *adapter;
>  	struct v4l2_subdev *sd;
>  	struct hdmi_device *hdmi_dev = NULL;
>  	struct s5p_hdmi_platform_data *pdata = dev->platform_data;
> @@ -937,51 +973,23 @@ static int __devinit hdmi_probe(struct platform_device *pdev)
>  		goto fail_init;
>  	}
>  
> -	/* testing if hdmiphy info is present */
> -	if (!pdata->hdmiphy_info) {
> -		dev_err(dev, "hdmiphy info is missing in platform data\n");
> -		ret = -ENXIO;
> +	hdmi_dev->phy_sd = hdmi_get_subdev(hdmi_dev,

If we know that plat data is missing so what is the purpose of calling
hdmi_get_subdev while we know that this function is going to fail?

> +					   pdata ? pdata->hdmiphy_info : NULL,
> +					   pdata ? pdata->hdmiphy_bus : -1,
> +					   "phy");
> +	if (IS_ERR_OR_NULL(hdmi_dev->phy_sd)) {
> +		ret = PTR_ERR(hdmi_dev->phy_sd);
>  		goto fail_vdev;
>  	}
> -
> -	adapter = i2c_get_adapter(pdata->hdmiphy_bus);
> -	if (adapter == NULL) {
> -		dev_err(dev, "hdmiphy adapter request failed\n");
> -		ret = -ENXIO;
> +	hdmi_dev->mhl_sd = hdmi_get_subdev(hdmi_dev,
> +					   pdata ? pdata->mhl_info : NULL ,
> +					   pdata ? pdata->mhl_bus : -1,
> +					   "mhl");
> +	if (IS_ERR_OR_NULL(hdmi_dev->mhl_sd)) {
> +		ret = PTR_ERR(hdmi_dev->mhl_sd)

The MHL is an optional subdev. There are platforms that support HDMI but does
not have MHL "on board" like Universal C210. Failing due to a lack of
MHL plat data will break HDMI support on Universal.

;
>  		goto fail_vdev;
>  	}
>  
> -	hdmi_dev->phy_sd = v4l2_i2c_new_subdev_board(&hdmi_dev->v4l2_dev,
> -		adapter, pdata->hdmiphy_info, NULL);
> -	/* on failure or not adapter is no longer useful */
> -	i2c_put_adapter(adapter);
> -	if (hdmi_dev->phy_sd == NULL) {
> -		dev_err(dev, "missing subdev for hdmiphy\n");
> -		ret = -ENODEV;
> -		goto fail_vdev;
> -	}
> -
> -	/* initialization of MHL interface if present */
> -	if (pdata->mhl_info) {
> -		adapter = i2c_get_adapter(pdata->mhl_bus);
> -		if (adapter == NULL) {
> -			dev_err(dev, "MHL adapter request failed\n");
> -			ret = -ENXIO;
> -			goto fail_vdev;
> -		}
> -
> -		hdmi_dev->mhl_sd = v4l2_i2c_new_subdev_board(
> -			&hdmi_dev->v4l2_dev, adapter,
> -			pdata->mhl_info, NULL);
> -		/* on failure or not adapter is no longer useful */
> -		i2c_put_adapter(adapter);
> -		if (hdmi_dev->mhl_sd == NULL) {
> -			dev_err(dev, "missing subdev for MHL\n");
> -			ret = -ENODEV;
> -			goto fail_vdev;
> -		}
> -	}
> -
>  	clk_enable(hdmi_dev->res.hdmi);
>  
>  	pm_runtime_enable(dev);

Regards,
Tomasz Stanislawski

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

* Re: [PATCH 10/13] s5p-tv: Add DT-support for HDMI driver
  2012-04-12 18:45 ` [PATCH 10/13] s5p-tv: Add DT-support for HDMI driver Karol Lewandowski
@ 2012-04-13  7:21   ` Tomasz Stanislawski
  0 siblings, 0 replies; 21+ messages in thread
From: Tomasz Stanislawski @ 2012-04-13  7:21 UTC (permalink / raw)
  To: Karol Lewandowski
  Cc: linux-samsung-soc, devicetree-discuss, thomas.abraham,
	m.szyprowski, kyungmin.park, linux-kernel, olof, kgene.kim,
	Hans Verkuil, Laurent Pinchart

Hi Karol,
Thanks for the patch.

Please refer to the comments below.

On 04/12/2012 08:45 PM, Karol Lewandowski wrote:
> Includes v4l2/dt helper function (hdmi_of_get_i2c_subdev() that probably
> should be implemented in v4l2 core itself.
> 
> Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
> Cc: Tomasz Stanislawski <t.stanislaws@samsung.com>
> ---
>  drivers/media/video/s5p-tv/hdmi_drv.c |   68 ++++++++++++++++++++++++++++++++-
>  1 files changed, 67 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/media/video/s5p-tv/hdmi_drv.c b/drivers/media/video/s5p-tv/hdmi_drv.c
> index fff3cab..a402e8f 100644
> --- a/drivers/media/video/s5p-tv/hdmi_drv.c
> +++ b/drivers/media/video/s5p-tv/hdmi_drv.c
> @@ -29,6 +29,8 @@
>  #include <linux/pm_runtime.h>
>  #include <linux/clk.h>
>  #include <linux/regulator/consumer.h>
> +#include <linux/of.h>
> +#include <linux/of_i2c.h>
>  
>  #include <media/s5p_hdmi.h>
>  #include <media/v4l2-common.h>
> @@ -712,6 +714,56 @@ static int hdmi_enum_dv_presets(struct v4l2_subdev *sd,
>  	return v4l_fill_dv_preset_info(hdmi_conf[preset->index].preset, preset);
>  }
>  
> +#ifdef CONFIG_OF
> +/* Heavily based[1] on v4l2_i2c_new_subdev_board()
> + *
> + * [1] Copy-pasted, that is
> + */
> +struct v4l2_subdev *hdmi_of_get_i2c_subdev(struct v4l2_device *v4l2_dev,
> +	struct device_node *np, const char *propname)
> +{
> +	struct v4l2_subdev *sd = NULL;
> +	struct i2c_client *client;
> +	struct device_node *cnp;
> +
> +	BUG_ON(!v4l2_dev);

Crashing a kernel is not a good idea in general. Especially when it is possible
to handle a situation. I think that "if (WARN_ON(..)) return NULL" combo
is a preferred way for handling such an error.

> +
> +	cnp = of_parse_phandle(np, propname, 0);
> +	if (!cnp) {
> +		dev_err(v4l2_dev->dev, "Can't find subdev %s\n", propname);
> +		goto err;
> +	}
> +
> +	client = of_find_i2c_device_by_node(cnp);
> +	if (!client) {
> +		dev_err(v4l2_dev->dev, "subdev %s doesn't reference correct node\n",
> +			propname);
> +		goto err;
> +	}
> +

Maybe you should combine the check below with the check above.

> +	if (client == NULL || client->driver == NULL)
> +		goto err;
> +
> +	/* Lock the module so we can safely get the v4l2_subdev pointer */
> +	if (!try_module_get(client->driver->driver.owner))
> +		goto err;
> +	sd = i2c_get_clientdata(client);
> +
> +	/* Register with the v4l2_device which increases the module's
> +	   use count as well. */
> +	if (v4l2_device_register_subdev(v4l2_dev, sd)) {
> +		printk(KERN_ERR "%s: failed to register subdev\n", __func__);
> +		sd = NULL;
> +	}
> +	/* Decrease the module use count to match the first try_module_get. */
> +	module_put(client->driver->driver.owner);

This label 'err' is not only used for error cleanups. Maybe you should rename it
to 'cleanup' or 'done'.

> +err:
> +	of_node_put(cnp);
> +
> +	return sd;
> +}
> +#endif

I think that you should strongly consider adding the function above to
the V4L2 core to drivers/media/video/videobuf2-core.c file and post
the patch to linux-media list.

> +
>  static const struct v4l2_subdev_core_ops hdmi_sd_core_ops = {
>  	.s_power = hdmi_s_power,
>  };
> @@ -875,6 +927,12 @@ static struct v4l2_subdev *hdmi_get_subdev(
>  	struct i2c_adapter *adapter;
>  	struct device *dev = hdmi_dev->dev;
> 

Now I see why hdmi_get_subdev is called with NULL arguments in the
previous patch :).

However I think that you should introduce two explicit paths in probe
function for handling non-DT and DT cases.

> +#ifdef CONFIG_OF
> +	if (dev->of_node)
> +		return hdmi_of_get_i2c_subdev(&hdmi_dev->v4l2_dev,
> +					   dev->of_node, propname);
> +#endif
> +
>  	if (!bdinfo) {
>  		dev_err(dev, "%s info is missing in platform data\n",
>  			propname);
> @@ -913,7 +971,7 @@ static int __devinit hdmi_probe(struct platform_device *pdev)
>  
>  	dev_dbg(dev, "probe start\n");
>  
> -	if (!pdata) {
> +	if (!pdata && !dev->of_node) {
>  		dev_err(dev, "platform data is missing\n");
>  		ret = -ENODEV;
>  		goto fail;
> @@ -1037,6 +1095,13 @@ static int __devexit hdmi_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> +#ifdef CONFIG_OF
> +static struct of_device_id hdmi_dt_match[] = {
> +	{ .compatible = "samsung,s5pv210-hdmi" },
> +	{ },
> +};
> +#endif
> +
>  static struct platform_driver hdmi_driver __refdata = {
>  	.probe = hdmi_probe,
>  	.remove = __devexit_p(hdmi_remove),
> @@ -1045,6 +1110,7 @@ static struct platform_driver hdmi_driver __refdata = {
>  		.name = "s5p-hdmi",
>  		.owner = THIS_MODULE,
>  		.pm = &hdmi_pm_ops,
> +		.of_match_table = of_match_ptr(hdmi_dt_match),
>  	}
>  };
> 

Regards,
Tomasz Stanislawski


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

* Re: [PATCH 01/13] regulator: Fix DT node name checking in max8997-pmic
@ 2012-04-24 22:56     ` Olof Johansson
  0 siblings, 0 replies; 21+ messages in thread
From: Olof Johansson @ 2012-04-24 22:56 UTC (permalink / raw)
  To: Karol Lewandowski
  Cc: linux-samsung-soc, devicetree-discuss, thomas.abraham,
	m.szyprowski, kyungmin.park, linux-kernel, kgene.kim

Hi,


On Thu, Apr 12, 2012 at 08:45:20PM +0200, Karol Lewandowski wrote:
> Avoid hard lockup when someone provides non-supported regulator
> name.
> 
> Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Thomas Abraham <thomas.abraham@linaro.org>

What is this supposed to apply against? It doesn't match any contents in
linux-next. Also, fixes like these should just go straight to Mark Brown (and
cc LAKML and others).


-Olof

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

* Re: [PATCH 01/13] regulator: Fix DT node name checking in max8997-pmic
@ 2012-04-24 22:56     ` Olof Johansson
  0 siblings, 0 replies; 21+ messages in thread
From: Olof Johansson @ 2012-04-24 22:56 UTC (permalink / raw)
  To: Karol Lewandowski
  Cc: linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ,
	kgene.kim-Sze3O3UU22JBDgjK7y7TUQ,
	m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ

Hi,


On Thu, Apr 12, 2012 at 08:45:20PM +0200, Karol Lewandowski wrote:
> Avoid hard lockup when someone provides non-supported regulator
> name.
> 
> Signed-off-by: Karol Lewandowski <k.lewandowsk-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
> Signed-off-by: Kyungmin Park <kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
> Cc: Thomas Abraham <thomas.abraham-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>

What is this supposed to apply against? It doesn't match any contents in
linux-next. Also, fixes like these should just go straight to Mark Brown (and
cc LAKML and others).


-Olof

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

* Re: [PATCH 01/13] regulator: Fix DT node name checking in max8997-pmic
  2012-04-24 22:56     ` Olof Johansson
  (?)
@ 2012-04-24 22:57     ` Olof Johansson
  -1 siblings, 0 replies; 21+ messages in thread
From: Olof Johansson @ 2012-04-24 22:57 UTC (permalink / raw)
  To: Karol Lewandowski
  Cc: linux-samsung-soc, devicetree-discuss, thomas.abraham,
	m.szyprowski, kyungmin.park, linux-kernel, kgene.kim

On Tue, Apr 24, 2012 at 3:56 PM, Olof Johansson <olof@lixom.net> wrote:
> Hi,
>
>
> On Thu, Apr 12, 2012 at 08:45:20PM +0200, Karol Lewandowski wrote:
>> Avoid hard lockup when someone provides non-supported regulator
>> name.
>>
>> Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
>> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
>> Cc: Thomas Abraham <thomas.abraham@linaro.org>
>
> What is this supposed to apply against?

D'oh, I didn't see the dependency in 0/13, nevermind.


-Olof

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

end of thread, other threads:[~2012-04-24 22:58 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-12 18:45 [RFC/PATCH 00/13] ARM: Exynos4: Add DTS for Samsung's Nuri board Karol Lewandowski
2012-04-12 18:45 ` [PATCH 01/13] regulator: Fix DT node name checking in max8997-pmic Karol Lewandowski
2012-04-24 22:56   ` Olof Johansson
2012-04-24 22:56     ` Olof Johansson
2012-04-24 22:57     ` Olof Johansson
2012-04-12 18:45 ` [PATCH 02/13] ARM: Add document to list devices with trivial DT description Karol Lewandowski
2012-04-12 18:45 ` [PATCH 03/13] s5p-g2d: Make it possible to instantiate driver from DT Karol Lewandowski
2012-04-12 18:45   ` Karol Lewandowski
2012-04-12 18:45 ` [PATCH 04/13] i2c-pxa: Drop leftover comment Karol Lewandowski
2012-04-12 18:45 ` [PATCH 05/13] i2c: Dynamically assign adapter id if it wasn't explictly specified Karol Lewandowski
2012-04-12 18:45 ` [PATCH 06/13] s5p-tv: Add initial DT-support for SiI9234 Karol Lewandowski
2012-04-12 18:45   ` Karol Lewandowski
2012-04-12 18:45 ` [PATCH 07/13] s5p-tv: Add initial DT-support for TV mixer Karol Lewandowski
2012-04-12 18:45 ` [PATCH 08/13] s5p-tv: Add initial DT-support for HDMIPHY Karol Lewandowski
2012-04-12 18:45 ` [PATCH 09/13] s5p-tv: Move HDMIPHY and MHL subdev probing to dedicated function Karol Lewandowski
2012-04-13  6:42   ` Tomasz Stanislawski
2012-04-12 18:45 ` [PATCH 10/13] s5p-tv: Add DT-support for HDMI driver Karol Lewandowski
2012-04-13  7:21   ` Tomasz Stanislawski
2012-04-12 18:45 ` [PATCH 11/13] ARM: Exynos4: dts: Specify address and size cells for i2c controllers Karol Lewandowski
2012-04-12 18:45 ` [PATCH 12/13] ARM: Exynos4: Add few more i2c OF compat definitions Karol Lewandowski
2012-04-12 18:45 ` [PATCH 13/13] ARM: dts: Add initial dts for Samsung's NURI board based on Exynos4210 Karol Lewandowski

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.