All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-27 10:35 ` Rajendra Nayak
  0 siblings, 0 replies; 30+ messages in thread
From: Rajendra Nayak @ 2012-02-27 10:35 UTC (permalink / raw)
  To: broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ
  Cc: linaro-dev-cunTk1MwBs8s++Sfvej+rw,
	patches-QSEj5FYQhm4dnm+yROfE0A, tony-4v6yS6AI5VpBDgjK7y7TUQ,
	Rajendra Nayak, linux-omap-u79uwXL29TY76Z2rM5mHXA,
	lrg-l0cyMroinI0,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

Re-sending on top of Tero's changes which are already
in -next and the one which adds support for twl6030 
vdd1/2/3 SMPS [1].

v3 has mainly 2 differences from v2
-1- TWL driver now uses just one table for both dt and
non-dt based lookup for driver data.
-2- All common regulator nodes for twl4030 and twl6030 are
now defined in the twl4030.dtsi and twl6030.dtsi instead of
repeating the nodes in all board files, which also means
the patch ('arm/dts: twl: Pass regulator data from dt')
has a dependency with the series from Benoit which adds the
twl4030.dtsi and twl6030.dtsi files[2].

I have tested the patches on omap4panda and omap3beagle boards.

[1] http://marc.info/?l=linux-omap&m=133009693905864&w=2
[2] git://git.kernel.org/pub/scm/linux/kernel/git/bcousson/linux-omap-dt.git
	for_3.4/dt_i2c_twl

Rajendra Nayak (2):
  regulator: twl: adapt twl-regulator driver to dt
  arm/dts: twl: Pass regulator data from dt

 .../bindings/regulator/twl-regulator.txt           |   66 +++++
 arch/arm/boot/dts/omap3-beagle.dts                 |    6 +
 arch/arm/boot/dts/twl4030.dtsi                     |   18 ++
 arch/arm/boot/dts/twl6030.dtsi                     |   60 +++++
 drivers/regulator/twl-regulator.c                  |  259 +++++++++++++-------
 5 files changed, 322 insertions(+), 87 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/regulator/twl-regulator.txt

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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-27 10:35 ` Rajendra Nayak
  0 siblings, 0 replies; 30+ messages in thread
From: Rajendra Nayak @ 2012-02-27 10:35 UTC (permalink / raw)
  To: linux-arm-kernel

Re-sending on top of Tero's changes which are already
in -next and the one which adds support for twl6030 
vdd1/2/3 SMPS [1].

v3 has mainly 2 differences from v2
-1- TWL driver now uses just one table for both dt and
non-dt based lookup for driver data.
-2- All common regulator nodes for twl4030 and twl6030 are
now defined in the twl4030.dtsi and twl6030.dtsi instead of
repeating the nodes in all board files, which also means
the patch ('arm/dts: twl: Pass regulator data from dt')
has a dependency with the series from Benoit which adds the
twl4030.dtsi and twl6030.dtsi files[2].

I have tested the patches on omap4panda and omap3beagle boards.

[1] http://marc.info/?l=linux-omap&m=133009693905864&w=2
[2] git://git.kernel.org/pub/scm/linux/kernel/git/bcousson/linux-omap-dt.git
	for_3.4/dt_i2c_twl

Rajendra Nayak (2):
  regulator: twl: adapt twl-regulator driver to dt
  arm/dts: twl: Pass regulator data from dt

 .../bindings/regulator/twl-regulator.txt           |   66 +++++
 arch/arm/boot/dts/omap3-beagle.dts                 |    6 +
 arch/arm/boot/dts/twl4030.dtsi                     |   18 ++
 arch/arm/boot/dts/twl6030.dtsi                     |   60 +++++
 drivers/regulator/twl-regulator.c                  |  259 +++++++++++++-------
 5 files changed, 322 insertions(+), 87 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/regulator/twl-regulator.txt

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

* [PATCH v3 1/2] regulator: twl: adapt twl-regulator driver to dt
  2012-02-27 10:35 ` Rajendra Nayak
@ 2012-02-27 10:36   ` Rajendra Nayak
  -1 siblings, 0 replies; 30+ messages in thread
From: Rajendra Nayak @ 2012-02-27 10:36 UTC (permalink / raw)
  To: broonie, devicetree-discuss
  Cc: linux-omap, linux-arm-kernel, tony, lrg, b-cousson, patches,
	linaro-dev, Rajendra Nayak

Modify the twl regulator driver to extract the regulator_init_data from
device tree when passed, instead of getting it through platform_data
structures (on non-DT builds)

Also add documentation for TWL regulator specific bindings.

Signed-off-by: Rajendra Nayak <rnayak@ti.com>
---
 .../bindings/regulator/twl-regulator.txt           |   66 +++++
 drivers/regulator/twl-regulator.c                  |  259 +++++++++++++-------
 2 files changed, 238 insertions(+), 87 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/regulator/twl-regulator.txt

diff --git a/Documentation/devicetree/bindings/regulator/twl-regulator.txt b/Documentation/devicetree/bindings/regulator/twl-regulator.txt
new file mode 100644
index 0000000..ba9d2cc
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/twl-regulator.txt
@@ -0,0 +1,66 @@
+TWL family of regulators
+
+Required properties:
+For twl6030 regulators/LDOs
+- compatible:
+  - "ti,twl6030-vaux1" for VAUX1 LDO
+  - "ti,twl6030-vaux2" for VAUX2 LDO
+  - "ti,twl6030-vaux3" for VAUX3 LDO
+  - "ti,twl6030-vmmc" for VMMC LDO
+  - "ti,twl6030-vpp" for VPP LDO
+  - "ti,twl6030-vusim" for VUSIM LDO
+  - "ti,twl6030-vana" for VANA LDO
+  - "ti,twl6030-vcxio" for VCXIO LDO
+  - "ti,twl6030-vdac" for VDAC LDO
+  - "ti,twl6030-vusb" for VUSB LDO
+  - "ti,twl6030-clk32kg" for CLK32KG RESOURCE
+  - "ti,twl6030-vdd1" for VDD1 SMPS
+  - "ti,twl6030-vdd2" for VDD2 SMPS
+  - "ti,twl6030-vdd3" for VDD3 SMPS
+For twl6025 regulators/LDOs
+- compatible:
+  - "ti,twl6025-ldo1" for LDO1 LDO
+  - "ti,twl6025-ldo2" for LDO2 LDO
+  - "ti,twl6025-ldo3" for LDO3 LDO
+  - "ti,twl6025-ldo4" for LDO4 LDO
+  - "ti,twl6025-ldo5" for LDO5 LDO
+  - "ti,twl6025-ldo6" for LDO6 LDO
+  - "ti,twl6025-ldo7" for LDO7 LDO
+  - "ti,twl6025-ldoln" for LDOLN LDO
+  - "ti,twl6025-ldousb" for LDOUSB LDO
+  - "ti,twl6025-smps3" for SMPS3 SMPS
+  - "ti,twl6025-smps4" for SMPS4 SMPS
+  - "ti,twl6025-vio" for VIO SMPS
+For twl4030 regulators/LDOs
+- compatible:
+  - "ti,twl4030-vaux1" for VAUX1 LDO
+  - "ti,twl4030-vaux2" for VAUX2 LDO
+  - "ti,twl5030-vaux2" for VAUX2 LDO
+  - "ti,twl4030-vaux3" for VAUX3 LDO
+  - "ti,twl4030-vaux4" for VAUX4 LDO
+  - "ti,twl4030-vmmc1" for VMMC1 LDO
+  - "ti,twl4030-vmmc2" for VMMC2 LDO
+  - "ti,twl4030-vpll1" for VPLL1 LDO
+  - "ti,twl4030-vpll2" for VPLL2 LDO
+  - "ti,twl4030-vsim" for VSIM LDO
+  - "ti,twl4030-vdac" for VDAC LDO
+  - "ti,twl4030-vintana2" for VINTANA2 LDO
+  - "ti,twl4030-vio" for VIO LDO
+  - "ti,twl4030-vdd1" for VDD1 SMPS
+  - "ti,twl4030-vdd2" for VDD2 SMPS
+  - "ti,twl4030-vintana1" for VINTANA1 LDO
+  - "ti,twl4030-vintdig" for VINTDIG LDO
+  - "ti,twl4030-vusb1v5" for VUSB1V5 LDO
+  - "ti,twl4030-vusb1v8" for VUSB1V8 LDO
+  - "ti,twl4030-vusb3v1" for VUSB3V1 LDO
+
+Optional properties:
+- Any optional property defined in bindings/regulator/regulator.txt
+
+Example:
+
+	xyz: regulator@0 {
+		compatible = "ti,twl6030-vaux1";
+		regulator-min-microvolt  = <1000000>;
+		regulator-max-microvolt  = <3000000>;
+	};
diff --git a/drivers/regulator/twl-regulator.c b/drivers/regulator/twl-regulator.c
index 8611282..2a13211 100644
--- a/drivers/regulator/twl-regulator.c
+++ b/drivers/regulator/twl-regulator.c
@@ -14,8 +14,11 @@
 #include <linux/err.h>
 #include <linux/delay.h>
 #include <linux/platform_device.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
 #include <linux/regulator/driver.h>
 #include <linux/regulator/machine.h>
+#include <linux/regulator/of_regulator.h>
 #include <linux/i2c/twl.h>
 
 
@@ -920,7 +923,8 @@ static struct regulator_ops twlsmps_ops = {
 		TWL_FIXED_LDO(label, offset, mVolts, 0x0, turnon_delay, \
 			0x0, TWL6030, twl6030fixed_ops)
 
-#define TWL4030_ADJUSTABLE_LDO(label, offset, num, turnon_delay, remap_conf) { \
+#define TWL4030_ADJUSTABLE_LDO(label, offset, num, turnon_delay, remap_conf) \
+static struct twlreg_info TWL4030_INFO_##label = { \
 	.base = offset, \
 	.id = num, \
 	.table_len = ARRAY_SIZE(label##_VSEL_table), \
@@ -938,7 +942,7 @@ static struct regulator_ops twlsmps_ops = {
 	}
 
 #define TWL4030_ADJUSTABLE_SMPS(label, offset, num, turnon_delay, remap_conf) \
-	{ \
+static struct twlreg_info TWL4030_INFO_##label = { \
 	.base = offset, \
 	.id = num, \
 	.delay = turnon_delay, \
@@ -952,7 +956,8 @@ static struct regulator_ops twlsmps_ops = {
 		}, \
 	}
 
-#define TWL6030_ADJUSTABLE_SMPS(label) { \
+#define TWL6030_ADJUSTABLE_SMPS(label) \
+static struct twlreg_info TWL6030_INFO_##label = { \
 	.desc = { \
 		.name = #label, \
 		.id = TWL6030_REG_##label, \
@@ -962,7 +967,8 @@ static struct regulator_ops twlsmps_ops = {
 		}, \
 	}
 
-#define TWL6030_ADJUSTABLE_LDO(label, offset, min_mVolts, max_mVolts) { \
+#define TWL6030_ADJUSTABLE_LDO(label, offset, min_mVolts, max_mVolts) \
+static struct twlreg_info TWL6030_INFO_##label = { \
 	.base = offset, \
 	.min_mV = min_mVolts, \
 	.max_mV = max_mVolts, \
@@ -976,7 +982,8 @@ static struct regulator_ops twlsmps_ops = {
 		}, \
 	}
 
-#define TWL6025_ADJUSTABLE_LDO(label, offset, min_mVolts, max_mVolts) { \
+#define TWL6025_ADJUSTABLE_LDO(label, offset, min_mVolts, max_mVolts) \
+static struct twlreg_info TWL6025_INFO_##label = { \
 	.base = offset, \
 	.min_mV = min_mVolts, \
 	.max_mV = max_mVolts, \
@@ -991,7 +998,8 @@ static struct regulator_ops twlsmps_ops = {
 	}
 
 #define TWL_FIXED_LDO(label, offset, mVolts, num, turnon_delay, remap_conf, \
-		family, operations) { \
+		family, operations) \
+static struct twlreg_info TWLFIXED_INFO_##label = { \
 	.base = offset, \
 	.id = num, \
 	.min_mV = mVolts, \
@@ -1007,7 +1015,8 @@ static struct regulator_ops twlsmps_ops = {
 		}, \
 	}
 
-#define TWL6030_FIXED_RESOURCE(label, offset, turnon_delay) { \
+#define TWL6030_FIXED_RESOURCE(label, offset, turnon_delay) \
+static struct twlreg_info TWLRES_INFO_##label = { \
 	.base = offset, \
 	.delay = turnon_delay, \
 	.desc = { \
@@ -1019,7 +1028,8 @@ static struct regulator_ops twlsmps_ops = {
 		}, \
 	}
 
-#define TWL6025_ADJUSTABLE_SMPS(label, offset) { \
+#define TWL6025_ADJUSTABLE_SMPS(label, offset) \
+static struct twlreg_info TWLSMPS_INFO_##label = { \
 	.base = offset, \
 	.min_mV = 600, \
 	.max_mV = 2100, \
@@ -1037,62 +1047,57 @@ static struct regulator_ops twlsmps_ops = {
  * We list regulators here if systems need some level of
  * software control over them after boot.
  */
-static struct twlreg_info twl_regs[] = {
-	TWL4030_ADJUSTABLE_LDO(VAUX1, 0x17, 1, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VAUX2_4030, 0x1b, 2, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VAUX2, 0x1b, 2, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VAUX3, 0x1f, 3, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VAUX4, 0x23, 4, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VMMC1, 0x27, 5, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VMMC2, 0x2b, 6, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VPLL1, 0x2f, 7, 100, 0x00),
-	TWL4030_ADJUSTABLE_LDO(VPLL2, 0x33, 8, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VSIM, 0x37, 9, 100, 0x00),
-	TWL4030_ADJUSTABLE_LDO(VDAC, 0x3b, 10, 100, 0x08),
-	TWL4030_FIXED_LDO(VINTANA1, 0x3f, 1500, 11, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VINTANA2, 0x43, 12, 100, 0x08),
-	TWL4030_FIXED_LDO(VINTDIG, 0x47, 1500, 13, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VIO, 0x4b, 14, 1000, 0x08),
-	TWL4030_ADJUSTABLE_SMPS(VDD1, 0x55, 15, 1000, 0x08),
-	TWL4030_ADJUSTABLE_SMPS(VDD2, 0x63, 16, 1000, 0x08),
-	TWL4030_FIXED_LDO(VUSB1V5, 0x71, 1500, 17, 100, 0x08),
-	TWL4030_FIXED_LDO(VUSB1V8, 0x74, 1800, 18, 100, 0x08),
-	TWL4030_FIXED_LDO(VUSB3V1, 0x77, 3100, 19, 150, 0x08),
-	/* VUSBCP is managed *only* by the USB subchip */
-
-	/* 6030 REG with base as PMC Slave Misc : 0x0030 */
-	/* Turnon-delay and remap configuration values for 6030 are not
-	   verified since the specification is not public */
-	TWL6030_ADJUSTABLE_SMPS(VDD1),
-	TWL6030_ADJUSTABLE_SMPS(VDD2),
-	TWL6030_ADJUSTABLE_SMPS(VDD3),
-	TWL6030_ADJUSTABLE_LDO(VAUX1_6030, 0x54, 1000, 3300),
-	TWL6030_ADJUSTABLE_LDO(VAUX2_6030, 0x58, 1000, 3300),
-	TWL6030_ADJUSTABLE_LDO(VAUX3_6030, 0x5c, 1000, 3300),
-	TWL6030_ADJUSTABLE_LDO(VMMC, 0x68, 1000, 3300),
-	TWL6030_ADJUSTABLE_LDO(VPP, 0x6c, 1000, 3300),
-	TWL6030_ADJUSTABLE_LDO(VUSIM, 0x74, 1000, 3300),
-	TWL6030_FIXED_LDO(VANA, 0x50, 2100, 0),
-	TWL6030_FIXED_LDO(VCXIO, 0x60, 1800, 0),
-	TWL6030_FIXED_LDO(VDAC, 0x64, 1800, 0),
-	TWL6030_FIXED_LDO(VUSB, 0x70, 3300, 0),
-	TWL6030_FIXED_RESOURCE(CLK32KG, 0x8C, 0),
-
-	/* 6025 are renamed compared to 6030 versions */
-	TWL6025_ADJUSTABLE_LDO(LDO2, 0x54, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDO4, 0x58, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDO3, 0x5c, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDO5, 0x68, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDO1, 0x6c, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDO7, 0x74, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDO6, 0x60, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDOLN, 0x64, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDOUSB, 0x70, 1000, 3300),
-
-	TWL6025_ADJUSTABLE_SMPS(SMPS3, 0x34),
-	TWL6025_ADJUSTABLE_SMPS(SMPS4, 0x10),
-	TWL6025_ADJUSTABLE_SMPS(VIO, 0x16),
-};
+TWL4030_ADJUSTABLE_LDO(VAUX1, 0x17, 1, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VAUX2_4030, 0x1b, 2, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VAUX2, 0x1b, 2, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VAUX3, 0x1f, 3, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VAUX4, 0x23, 4, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VMMC1, 0x27, 5, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VMMC2, 0x2b, 6, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VPLL1, 0x2f, 7, 100, 0x00);
+TWL4030_ADJUSTABLE_LDO(VPLL2, 0x33, 8, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VSIM, 0x37, 9, 100, 0x00);
+TWL4030_ADJUSTABLE_LDO(VDAC, 0x3b, 10, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VINTANA2, 0x43, 12, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VIO, 0x4b, 14, 1000, 0x08);
+TWL4030_ADJUSTABLE_SMPS(VDD1, 0x55, 15, 1000, 0x08);
+TWL4030_ADJUSTABLE_SMPS(VDD2, 0x63, 16, 1000, 0x08);
+/* VUSBCP is managed *only* by the USB subchip */
+/* 6030 REG with base as PMC Slave Misc : 0x0030 */
+/* Turnon-delay and remap configuration values for 6030 are not
+   verified since the specification is not public */
+TWL6030_ADJUSTABLE_SMPS(VDD1);
+TWL6030_ADJUSTABLE_SMPS(VDD2);
+TWL6030_ADJUSTABLE_SMPS(VDD3);
+TWL6030_ADJUSTABLE_LDO(VAUX1_6030, 0x54, 1000, 3300);
+TWL6030_ADJUSTABLE_LDO(VAUX2_6030, 0x58, 1000, 3300);
+TWL6030_ADJUSTABLE_LDO(VAUX3_6030, 0x5c, 1000, 3300);
+TWL6030_ADJUSTABLE_LDO(VMMC, 0x68, 1000, 3300);
+TWL6030_ADJUSTABLE_LDO(VPP, 0x6c, 1000, 3300);
+TWL6030_ADJUSTABLE_LDO(VUSIM, 0x74, 1000, 3300);
+/* 6025 are renamed compared to 6030 versions */
+TWL6025_ADJUSTABLE_LDO(LDO2, 0x54, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDO4, 0x58, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDO3, 0x5c, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDO5, 0x68, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDO1, 0x6c, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDO7, 0x74, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDO6, 0x60, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDOLN, 0x64, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDOUSB, 0x70, 1000, 3300);
+TWL4030_FIXED_LDO(VINTANA2, 0x3f, 1500, 11, 100, 0x08);
+TWL4030_FIXED_LDO(VINTDIG, 0x47, 1500, 13, 100, 0x08);
+TWL4030_FIXED_LDO(VUSB1V5, 0x71, 1500, 17, 100, 0x08);
+TWL4030_FIXED_LDO(VUSB1V8, 0x74, 1800, 18, 100, 0x08);
+TWL4030_FIXED_LDO(VUSB3V1, 0x77, 3100, 19, 150, 0x08);
+TWL6030_FIXED_LDO(VANA, 0x50, 2100, 0);
+TWL6030_FIXED_LDO(VCXIO, 0x60, 1800, 0);
+TWL6030_FIXED_LDO(VDAC, 0x64, 1800, 0);
+TWL6030_FIXED_LDO(VUSB, 0x70, 3300, 0);
+TWL6030_FIXED_RESOURCE(CLK32KG, 0x8C, 0);
+TWL6025_ADJUSTABLE_SMPS(SMPS3, 0x34);
+TWL6025_ADJUSTABLE_SMPS(SMPS4, 0x10);
+TWL6025_ADJUSTABLE_SMPS(VIO, 0x16);
 
 static u8 twl_get_smps_offset(void)
 {
@@ -1112,38 +1117,114 @@ static u8 twl_get_smps_mult(void)
 	return value;
 }
 
+#define TWL_OF_MATCH(comp, family, label) \
+	{ \
+		.compatible = comp, \
+		.data = &family##_INFO_##label, \
+	}
+
+#define TWL4030_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL4030, label)
+#define TWL6030_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL6030, label)
+#define TWL6025_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL6025, label)
+#define TWLFIXED_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLFIXED, label)
+#define TWLRES_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLRES, label)
+#define TWLSMPS_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLSMPS, label)
+
+static const struct of_device_id twl_of_match[] __devinitconst = {
+	TWL4030_OF_MATCH("ti,twl4030-vaux1", VAUX1),
+	TWL4030_OF_MATCH("ti,twl4030-vaux2", VAUX2_4030),
+	TWL4030_OF_MATCH("ti,twl5030-vaux2", VAUX2),
+	TWL4030_OF_MATCH("ti,twl4030-vaux3", VAUX3),
+	TWL4030_OF_MATCH("ti,twl4030-vaux4", VAUX4),
+	TWL4030_OF_MATCH("ti,twl4030-vmmc1", VMMC1),
+	TWL4030_OF_MATCH("ti,twl4030-vmmc2", VMMC2),
+	TWL4030_OF_MATCH("ti,twl4030-vpll1", VPLL1),
+	TWL4030_OF_MATCH("ti,twl4030-vpll2", VPLL2),
+	TWL4030_OF_MATCH("ti,twl4030-vsim", VSIM),
+	TWL4030_OF_MATCH("ti,twl4030-vdac", VDAC),
+	TWL4030_OF_MATCH("ti,twl4030-vintana2", VINTANA2),
+	TWL4030_OF_MATCH("ti,twl4030-vio", VIO),
+	TWL4030_OF_MATCH("ti,twl4030-vdd1", VDD1),
+	TWL4030_OF_MATCH("ti,twl4030-vdd2", VDD2),
+	TWL6030_OF_MATCH("ti,twl6030-vdd1", VDD1),
+	TWL6030_OF_MATCH("ti,twl6030-vdd2", VDD2),
+	TWL6030_OF_MATCH("ti,twl6030-vdd3", VDD3),
+	TWL6030_OF_MATCH("ti,twl6030-vaux1", VAUX1_6030),
+	TWL6030_OF_MATCH("ti,twl6030-vaux2", VAUX2_6030),
+	TWL6030_OF_MATCH("ti,twl6030-vaux3", VAUX3_6030),
+	TWL6030_OF_MATCH("ti,twl6030-vmmc", VMMC),
+	TWL6030_OF_MATCH("ti,twl6030-vpp", VPP),
+	TWL6030_OF_MATCH("ti,twl6030-vusim", VUSIM),
+	TWL6025_OF_MATCH("ti,twl6025-ldo2", LDO2),
+	TWL6025_OF_MATCH("ti,twl6025-ldo4", LDO4),
+	TWL6025_OF_MATCH("ti,twl6025-ldo3", LDO3),
+	TWL6025_OF_MATCH("ti,twl6025-ldo5", LDO5),
+	TWL6025_OF_MATCH("ti,twl6025-ldo1", LDO1),
+	TWL6025_OF_MATCH("ti,twl6025-ldo7", LDO7),
+	TWL6025_OF_MATCH("ti,twl6025-ldo6", LDO6),
+	TWL6025_OF_MATCH("ti,twl6025-ldoln", LDOLN),
+	TWL6025_OF_MATCH("ti,twl6025-ldousb", LDOUSB),
+	TWLFIXED_OF_MATCH("ti,twl4030-vintana2", VINTANA2),
+	TWLFIXED_OF_MATCH("ti,twl4030-vintdig", VINTDIG),
+	TWLFIXED_OF_MATCH("ti,twl4030-vusb1v5", VUSB1V5),
+	TWLFIXED_OF_MATCH("ti,twl4030-vusb1v8", VUSB1V8),
+	TWLFIXED_OF_MATCH("ti,twl4030-vusb3v1", VUSB3V1),
+	TWLFIXED_OF_MATCH("ti,twl6030-vana", VANA),
+	TWLFIXED_OF_MATCH("ti,twl6030-vcxio", VCXIO),
+	TWLFIXED_OF_MATCH("ti,twl6030-vdac", VDAC),
+	TWLFIXED_OF_MATCH("ti,twl6030-vusb", VUSB),
+	TWLRES_OF_MATCH("ti,twl6030-clk32kg", CLK32KG),
+	TWLSMPS_OF_MATCH("ti,twl6025-smps3", SMPS3),
+	TWLSMPS_OF_MATCH("ti,twl6025-smps4", SMPS4),
+	TWLSMPS_OF_MATCH("ti,twl6025-vio", VIO),
+	{},
+};
+MODULE_DEVICE_TABLE(of, twl_of_match);
+
 static int __devinit twlreg_probe(struct platform_device *pdev)
 {
-	int				i;
+	int				i, id;
 	struct twlreg_info		*info;
 	struct regulator_init_data	*initdata;
 	struct regulation_constraints	*c;
 	struct regulator_dev		*rdev;
 	struct twl_regulator_driver_data	*drvdata;
-
-	for (i = 0, info = NULL; i < ARRAY_SIZE(twl_regs); i++) {
-		if (twl_regs[i].desc.id != pdev->id)
-			continue;
-		info = twl_regs + i;
-		break;
+	const struct of_device_id	*match;
+
+	match = of_match_device(twl_of_match, &pdev->dev);
+	if (match) {
+		info = match->data;
+		id = info->desc.id;
+		initdata = of_get_regulator_init_data(&pdev->dev,
+						      pdev->dev.of_node);
+		drvdata = NULL;
+	} else {
+		id = pdev->id;
+		initdata = pdev->dev.platform_data;
+		for (i = 0, info = NULL; i < ARRAY_SIZE(twl_of_match); i++) {
+			info = twl_of_match[i].data;
+			if (!info || info->desc.id != id)
+				continue;
+			break;
+		}
+		drvdata = initdata->driver_data;
+		if (!drvdata)
+			return -EINVAL;
 	}
+
 	if (!info)
 		return -ENODEV;
 
-	initdata = pdev->dev.platform_data;
 	if (!initdata)
 		return -EINVAL;
 
-	drvdata = initdata->driver_data;
-
-	if (!drvdata)
-		return -EINVAL;
-
-	/* copy the driver data into regulator data */
-	info->features = drvdata->features;
-	info->data = drvdata->data;
-	info->set_voltage = drvdata->set_voltage;
-	info->get_voltage = drvdata->get_voltage;
+	if (drvdata) {
+		/* copy the driver data into regulator data */
+		info->features = drvdata->features;
+		info->data = drvdata->data;
+		info->set_voltage = drvdata->set_voltage;
+		info->get_voltage = drvdata->get_voltage;
+	}
 
 	/* Constrain board-specific capabilities according to what
 	 * this driver and the chip itself can actually do.
@@ -1153,7 +1234,7 @@ static int __devinit twlreg_probe(struct platform_device *pdev)
 	c->valid_ops_mask &= REGULATOR_CHANGE_VOLTAGE
 				| REGULATOR_CHANGE_MODE
 				| REGULATOR_CHANGE_STATUS;
-	switch (pdev->id) {
+	switch (id) {
 	case TWL4030_REG_VIO:
 	case TWL4030_REG_VDD1:
 	case TWL4030_REG_VDD2:
@@ -1167,7 +1248,7 @@ static int __devinit twlreg_probe(struct platform_device *pdev)
 		break;
 	}
 
-	switch (pdev->id) {
+	switch (id) {
 	case TWL6025_REG_SMPS3:
 		if (twl_get_smps_mult() & SMPS_MULTOFFSET_SMPS3)
 			info->flags |= SMPS_EXTENDED_EN;
@@ -1188,7 +1269,8 @@ static int __devinit twlreg_probe(struct platform_device *pdev)
 		break;
 	}
 
-	rdev = regulator_register(&info->desc, &pdev->dev, initdata, info, NULL);
+	rdev = regulator_register(&info->desc, &pdev->dev, initdata, info,
+							pdev->dev.of_node);
 	if (IS_ERR(rdev)) {
 		dev_err(&pdev->dev, "can't register %s, %ld\n",
 				info->desc.name, PTR_ERR(rdev));
@@ -1225,8 +1307,11 @@ static struct platform_driver twlreg_driver = {
 	/* NOTE: short name, to work around driver model truncation of
 	 * "twl_regulator.12" (and friends) to "twl_regulator.1".
 	 */
-	.driver.name	= "twl_reg",
-	.driver.owner	= THIS_MODULE,
+	.driver  = {
+		.name  = "twl_reg",
+		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(twl_of_match),
+	},
 };
 
 static int __init twlreg_init(void)
-- 
1.7.1


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

* [PATCH v3 1/2] regulator: twl: adapt twl-regulator driver to dt
@ 2012-02-27 10:36   ` Rajendra Nayak
  0 siblings, 0 replies; 30+ messages in thread
From: Rajendra Nayak @ 2012-02-27 10:36 UTC (permalink / raw)
  To: linux-arm-kernel

Modify the twl regulator driver to extract the regulator_init_data from
device tree when passed, instead of getting it through platform_data
structures (on non-DT builds)

Also add documentation for TWL regulator specific bindings.

Signed-off-by: Rajendra Nayak <rnayak@ti.com>
---
 .../bindings/regulator/twl-regulator.txt           |   66 +++++
 drivers/regulator/twl-regulator.c                  |  259 +++++++++++++-------
 2 files changed, 238 insertions(+), 87 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/regulator/twl-regulator.txt

diff --git a/Documentation/devicetree/bindings/regulator/twl-regulator.txt b/Documentation/devicetree/bindings/regulator/twl-regulator.txt
new file mode 100644
index 0000000..ba9d2cc
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/twl-regulator.txt
@@ -0,0 +1,66 @@
+TWL family of regulators
+
+Required properties:
+For twl6030 regulators/LDOs
+- compatible:
+  - "ti,twl6030-vaux1" for VAUX1 LDO
+  - "ti,twl6030-vaux2" for VAUX2 LDO
+  - "ti,twl6030-vaux3" for VAUX3 LDO
+  - "ti,twl6030-vmmc" for VMMC LDO
+  - "ti,twl6030-vpp" for VPP LDO
+  - "ti,twl6030-vusim" for VUSIM LDO
+  - "ti,twl6030-vana" for VANA LDO
+  - "ti,twl6030-vcxio" for VCXIO LDO
+  - "ti,twl6030-vdac" for VDAC LDO
+  - "ti,twl6030-vusb" for VUSB LDO
+  - "ti,twl6030-clk32kg" for CLK32KG RESOURCE
+  - "ti,twl6030-vdd1" for VDD1 SMPS
+  - "ti,twl6030-vdd2" for VDD2 SMPS
+  - "ti,twl6030-vdd3" for VDD3 SMPS
+For twl6025 regulators/LDOs
+- compatible:
+  - "ti,twl6025-ldo1" for LDO1 LDO
+  - "ti,twl6025-ldo2" for LDO2 LDO
+  - "ti,twl6025-ldo3" for LDO3 LDO
+  - "ti,twl6025-ldo4" for LDO4 LDO
+  - "ti,twl6025-ldo5" for LDO5 LDO
+  - "ti,twl6025-ldo6" for LDO6 LDO
+  - "ti,twl6025-ldo7" for LDO7 LDO
+  - "ti,twl6025-ldoln" for LDOLN LDO
+  - "ti,twl6025-ldousb" for LDOUSB LDO
+  - "ti,twl6025-smps3" for SMPS3 SMPS
+  - "ti,twl6025-smps4" for SMPS4 SMPS
+  - "ti,twl6025-vio" for VIO SMPS
+For twl4030 regulators/LDOs
+- compatible:
+  - "ti,twl4030-vaux1" for VAUX1 LDO
+  - "ti,twl4030-vaux2" for VAUX2 LDO
+  - "ti,twl5030-vaux2" for VAUX2 LDO
+  - "ti,twl4030-vaux3" for VAUX3 LDO
+  - "ti,twl4030-vaux4" for VAUX4 LDO
+  - "ti,twl4030-vmmc1" for VMMC1 LDO
+  - "ti,twl4030-vmmc2" for VMMC2 LDO
+  - "ti,twl4030-vpll1" for VPLL1 LDO
+  - "ti,twl4030-vpll2" for VPLL2 LDO
+  - "ti,twl4030-vsim" for VSIM LDO
+  - "ti,twl4030-vdac" for VDAC LDO
+  - "ti,twl4030-vintana2" for VINTANA2 LDO
+  - "ti,twl4030-vio" for VIO LDO
+  - "ti,twl4030-vdd1" for VDD1 SMPS
+  - "ti,twl4030-vdd2" for VDD2 SMPS
+  - "ti,twl4030-vintana1" for VINTANA1 LDO
+  - "ti,twl4030-vintdig" for VINTDIG LDO
+  - "ti,twl4030-vusb1v5" for VUSB1V5 LDO
+  - "ti,twl4030-vusb1v8" for VUSB1V8 LDO
+  - "ti,twl4030-vusb3v1" for VUSB3V1 LDO
+
+Optional properties:
+- Any optional property defined in bindings/regulator/regulator.txt
+
+Example:
+
+	xyz: regulator at 0 {
+		compatible = "ti,twl6030-vaux1";
+		regulator-min-microvolt  = <1000000>;
+		regulator-max-microvolt  = <3000000>;
+	};
diff --git a/drivers/regulator/twl-regulator.c b/drivers/regulator/twl-regulator.c
index 8611282..2a13211 100644
--- a/drivers/regulator/twl-regulator.c
+++ b/drivers/regulator/twl-regulator.c
@@ -14,8 +14,11 @@
 #include <linux/err.h>
 #include <linux/delay.h>
 #include <linux/platform_device.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
 #include <linux/regulator/driver.h>
 #include <linux/regulator/machine.h>
+#include <linux/regulator/of_regulator.h>
 #include <linux/i2c/twl.h>
 
 
@@ -920,7 +923,8 @@ static struct regulator_ops twlsmps_ops = {
 		TWL_FIXED_LDO(label, offset, mVolts, 0x0, turnon_delay, \
 			0x0, TWL6030, twl6030fixed_ops)
 
-#define TWL4030_ADJUSTABLE_LDO(label, offset, num, turnon_delay, remap_conf) { \
+#define TWL4030_ADJUSTABLE_LDO(label, offset, num, turnon_delay, remap_conf) \
+static struct twlreg_info TWL4030_INFO_##label = { \
 	.base = offset, \
 	.id = num, \
 	.table_len = ARRAY_SIZE(label##_VSEL_table), \
@@ -938,7 +942,7 @@ static struct regulator_ops twlsmps_ops = {
 	}
 
 #define TWL4030_ADJUSTABLE_SMPS(label, offset, num, turnon_delay, remap_conf) \
-	{ \
+static struct twlreg_info TWL4030_INFO_##label = { \
 	.base = offset, \
 	.id = num, \
 	.delay = turnon_delay, \
@@ -952,7 +956,8 @@ static struct regulator_ops twlsmps_ops = {
 		}, \
 	}
 
-#define TWL6030_ADJUSTABLE_SMPS(label) { \
+#define TWL6030_ADJUSTABLE_SMPS(label) \
+static struct twlreg_info TWL6030_INFO_##label = { \
 	.desc = { \
 		.name = #label, \
 		.id = TWL6030_REG_##label, \
@@ -962,7 +967,8 @@ static struct regulator_ops twlsmps_ops = {
 		}, \
 	}
 
-#define TWL6030_ADJUSTABLE_LDO(label, offset, min_mVolts, max_mVolts) { \
+#define TWL6030_ADJUSTABLE_LDO(label, offset, min_mVolts, max_mVolts) \
+static struct twlreg_info TWL6030_INFO_##label = { \
 	.base = offset, \
 	.min_mV = min_mVolts, \
 	.max_mV = max_mVolts, \
@@ -976,7 +982,8 @@ static struct regulator_ops twlsmps_ops = {
 		}, \
 	}
 
-#define TWL6025_ADJUSTABLE_LDO(label, offset, min_mVolts, max_mVolts) { \
+#define TWL6025_ADJUSTABLE_LDO(label, offset, min_mVolts, max_mVolts) \
+static struct twlreg_info TWL6025_INFO_##label = { \
 	.base = offset, \
 	.min_mV = min_mVolts, \
 	.max_mV = max_mVolts, \
@@ -991,7 +998,8 @@ static struct regulator_ops twlsmps_ops = {
 	}
 
 #define TWL_FIXED_LDO(label, offset, mVolts, num, turnon_delay, remap_conf, \
-		family, operations) { \
+		family, operations) \
+static struct twlreg_info TWLFIXED_INFO_##label = { \
 	.base = offset, \
 	.id = num, \
 	.min_mV = mVolts, \
@@ -1007,7 +1015,8 @@ static struct regulator_ops twlsmps_ops = {
 		}, \
 	}
 
-#define TWL6030_FIXED_RESOURCE(label, offset, turnon_delay) { \
+#define TWL6030_FIXED_RESOURCE(label, offset, turnon_delay) \
+static struct twlreg_info TWLRES_INFO_##label = { \
 	.base = offset, \
 	.delay = turnon_delay, \
 	.desc = { \
@@ -1019,7 +1028,8 @@ static struct regulator_ops twlsmps_ops = {
 		}, \
 	}
 
-#define TWL6025_ADJUSTABLE_SMPS(label, offset) { \
+#define TWL6025_ADJUSTABLE_SMPS(label, offset) \
+static struct twlreg_info TWLSMPS_INFO_##label = { \
 	.base = offset, \
 	.min_mV = 600, \
 	.max_mV = 2100, \
@@ -1037,62 +1047,57 @@ static struct regulator_ops twlsmps_ops = {
  * We list regulators here if systems need some level of
  * software control over them after boot.
  */
-static struct twlreg_info twl_regs[] = {
-	TWL4030_ADJUSTABLE_LDO(VAUX1, 0x17, 1, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VAUX2_4030, 0x1b, 2, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VAUX2, 0x1b, 2, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VAUX3, 0x1f, 3, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VAUX4, 0x23, 4, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VMMC1, 0x27, 5, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VMMC2, 0x2b, 6, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VPLL1, 0x2f, 7, 100, 0x00),
-	TWL4030_ADJUSTABLE_LDO(VPLL2, 0x33, 8, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VSIM, 0x37, 9, 100, 0x00),
-	TWL4030_ADJUSTABLE_LDO(VDAC, 0x3b, 10, 100, 0x08),
-	TWL4030_FIXED_LDO(VINTANA1, 0x3f, 1500, 11, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VINTANA2, 0x43, 12, 100, 0x08),
-	TWL4030_FIXED_LDO(VINTDIG, 0x47, 1500, 13, 100, 0x08),
-	TWL4030_ADJUSTABLE_LDO(VIO, 0x4b, 14, 1000, 0x08),
-	TWL4030_ADJUSTABLE_SMPS(VDD1, 0x55, 15, 1000, 0x08),
-	TWL4030_ADJUSTABLE_SMPS(VDD2, 0x63, 16, 1000, 0x08),
-	TWL4030_FIXED_LDO(VUSB1V5, 0x71, 1500, 17, 100, 0x08),
-	TWL4030_FIXED_LDO(VUSB1V8, 0x74, 1800, 18, 100, 0x08),
-	TWL4030_FIXED_LDO(VUSB3V1, 0x77, 3100, 19, 150, 0x08),
-	/* VUSBCP is managed *only* by the USB subchip */
-
-	/* 6030 REG with base as PMC Slave Misc : 0x0030 */
-	/* Turnon-delay and remap configuration values for 6030 are not
-	   verified since the specification is not public */
-	TWL6030_ADJUSTABLE_SMPS(VDD1),
-	TWL6030_ADJUSTABLE_SMPS(VDD2),
-	TWL6030_ADJUSTABLE_SMPS(VDD3),
-	TWL6030_ADJUSTABLE_LDO(VAUX1_6030, 0x54, 1000, 3300),
-	TWL6030_ADJUSTABLE_LDO(VAUX2_6030, 0x58, 1000, 3300),
-	TWL6030_ADJUSTABLE_LDO(VAUX3_6030, 0x5c, 1000, 3300),
-	TWL6030_ADJUSTABLE_LDO(VMMC, 0x68, 1000, 3300),
-	TWL6030_ADJUSTABLE_LDO(VPP, 0x6c, 1000, 3300),
-	TWL6030_ADJUSTABLE_LDO(VUSIM, 0x74, 1000, 3300),
-	TWL6030_FIXED_LDO(VANA, 0x50, 2100, 0),
-	TWL6030_FIXED_LDO(VCXIO, 0x60, 1800, 0),
-	TWL6030_FIXED_LDO(VDAC, 0x64, 1800, 0),
-	TWL6030_FIXED_LDO(VUSB, 0x70, 3300, 0),
-	TWL6030_FIXED_RESOURCE(CLK32KG, 0x8C, 0),
-
-	/* 6025 are renamed compared to 6030 versions */
-	TWL6025_ADJUSTABLE_LDO(LDO2, 0x54, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDO4, 0x58, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDO3, 0x5c, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDO5, 0x68, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDO1, 0x6c, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDO7, 0x74, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDO6, 0x60, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDOLN, 0x64, 1000, 3300),
-	TWL6025_ADJUSTABLE_LDO(LDOUSB, 0x70, 1000, 3300),
-
-	TWL6025_ADJUSTABLE_SMPS(SMPS3, 0x34),
-	TWL6025_ADJUSTABLE_SMPS(SMPS4, 0x10),
-	TWL6025_ADJUSTABLE_SMPS(VIO, 0x16),
-};
+TWL4030_ADJUSTABLE_LDO(VAUX1, 0x17, 1, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VAUX2_4030, 0x1b, 2, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VAUX2, 0x1b, 2, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VAUX3, 0x1f, 3, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VAUX4, 0x23, 4, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VMMC1, 0x27, 5, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VMMC2, 0x2b, 6, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VPLL1, 0x2f, 7, 100, 0x00);
+TWL4030_ADJUSTABLE_LDO(VPLL2, 0x33, 8, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VSIM, 0x37, 9, 100, 0x00);
+TWL4030_ADJUSTABLE_LDO(VDAC, 0x3b, 10, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VINTANA2, 0x43, 12, 100, 0x08);
+TWL4030_ADJUSTABLE_LDO(VIO, 0x4b, 14, 1000, 0x08);
+TWL4030_ADJUSTABLE_SMPS(VDD1, 0x55, 15, 1000, 0x08);
+TWL4030_ADJUSTABLE_SMPS(VDD2, 0x63, 16, 1000, 0x08);
+/* VUSBCP is managed *only* by the USB subchip */
+/* 6030 REG with base as PMC Slave Misc : 0x0030 */
+/* Turnon-delay and remap configuration values for 6030 are not
+   verified since the specification is not public */
+TWL6030_ADJUSTABLE_SMPS(VDD1);
+TWL6030_ADJUSTABLE_SMPS(VDD2);
+TWL6030_ADJUSTABLE_SMPS(VDD3);
+TWL6030_ADJUSTABLE_LDO(VAUX1_6030, 0x54, 1000, 3300);
+TWL6030_ADJUSTABLE_LDO(VAUX2_6030, 0x58, 1000, 3300);
+TWL6030_ADJUSTABLE_LDO(VAUX3_6030, 0x5c, 1000, 3300);
+TWL6030_ADJUSTABLE_LDO(VMMC, 0x68, 1000, 3300);
+TWL6030_ADJUSTABLE_LDO(VPP, 0x6c, 1000, 3300);
+TWL6030_ADJUSTABLE_LDO(VUSIM, 0x74, 1000, 3300);
+/* 6025 are renamed compared to 6030 versions */
+TWL6025_ADJUSTABLE_LDO(LDO2, 0x54, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDO4, 0x58, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDO3, 0x5c, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDO5, 0x68, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDO1, 0x6c, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDO7, 0x74, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDO6, 0x60, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDOLN, 0x64, 1000, 3300);
+TWL6025_ADJUSTABLE_LDO(LDOUSB, 0x70, 1000, 3300);
+TWL4030_FIXED_LDO(VINTANA2, 0x3f, 1500, 11, 100, 0x08);
+TWL4030_FIXED_LDO(VINTDIG, 0x47, 1500, 13, 100, 0x08);
+TWL4030_FIXED_LDO(VUSB1V5, 0x71, 1500, 17, 100, 0x08);
+TWL4030_FIXED_LDO(VUSB1V8, 0x74, 1800, 18, 100, 0x08);
+TWL4030_FIXED_LDO(VUSB3V1, 0x77, 3100, 19, 150, 0x08);
+TWL6030_FIXED_LDO(VANA, 0x50, 2100, 0);
+TWL6030_FIXED_LDO(VCXIO, 0x60, 1800, 0);
+TWL6030_FIXED_LDO(VDAC, 0x64, 1800, 0);
+TWL6030_FIXED_LDO(VUSB, 0x70, 3300, 0);
+TWL6030_FIXED_RESOURCE(CLK32KG, 0x8C, 0);
+TWL6025_ADJUSTABLE_SMPS(SMPS3, 0x34);
+TWL6025_ADJUSTABLE_SMPS(SMPS4, 0x10);
+TWL6025_ADJUSTABLE_SMPS(VIO, 0x16);
 
 static u8 twl_get_smps_offset(void)
 {
@@ -1112,38 +1117,114 @@ static u8 twl_get_smps_mult(void)
 	return value;
 }
 
+#define TWL_OF_MATCH(comp, family, label) \
+	{ \
+		.compatible = comp, \
+		.data = &family##_INFO_##label, \
+	}
+
+#define TWL4030_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL4030, label)
+#define TWL6030_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL6030, label)
+#define TWL6025_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL6025, label)
+#define TWLFIXED_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLFIXED, label)
+#define TWLRES_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLRES, label)
+#define TWLSMPS_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLSMPS, label)
+
+static const struct of_device_id twl_of_match[] __devinitconst = {
+	TWL4030_OF_MATCH("ti,twl4030-vaux1", VAUX1),
+	TWL4030_OF_MATCH("ti,twl4030-vaux2", VAUX2_4030),
+	TWL4030_OF_MATCH("ti,twl5030-vaux2", VAUX2),
+	TWL4030_OF_MATCH("ti,twl4030-vaux3", VAUX3),
+	TWL4030_OF_MATCH("ti,twl4030-vaux4", VAUX4),
+	TWL4030_OF_MATCH("ti,twl4030-vmmc1", VMMC1),
+	TWL4030_OF_MATCH("ti,twl4030-vmmc2", VMMC2),
+	TWL4030_OF_MATCH("ti,twl4030-vpll1", VPLL1),
+	TWL4030_OF_MATCH("ti,twl4030-vpll2", VPLL2),
+	TWL4030_OF_MATCH("ti,twl4030-vsim", VSIM),
+	TWL4030_OF_MATCH("ti,twl4030-vdac", VDAC),
+	TWL4030_OF_MATCH("ti,twl4030-vintana2", VINTANA2),
+	TWL4030_OF_MATCH("ti,twl4030-vio", VIO),
+	TWL4030_OF_MATCH("ti,twl4030-vdd1", VDD1),
+	TWL4030_OF_MATCH("ti,twl4030-vdd2", VDD2),
+	TWL6030_OF_MATCH("ti,twl6030-vdd1", VDD1),
+	TWL6030_OF_MATCH("ti,twl6030-vdd2", VDD2),
+	TWL6030_OF_MATCH("ti,twl6030-vdd3", VDD3),
+	TWL6030_OF_MATCH("ti,twl6030-vaux1", VAUX1_6030),
+	TWL6030_OF_MATCH("ti,twl6030-vaux2", VAUX2_6030),
+	TWL6030_OF_MATCH("ti,twl6030-vaux3", VAUX3_6030),
+	TWL6030_OF_MATCH("ti,twl6030-vmmc", VMMC),
+	TWL6030_OF_MATCH("ti,twl6030-vpp", VPP),
+	TWL6030_OF_MATCH("ti,twl6030-vusim", VUSIM),
+	TWL6025_OF_MATCH("ti,twl6025-ldo2", LDO2),
+	TWL6025_OF_MATCH("ti,twl6025-ldo4", LDO4),
+	TWL6025_OF_MATCH("ti,twl6025-ldo3", LDO3),
+	TWL6025_OF_MATCH("ti,twl6025-ldo5", LDO5),
+	TWL6025_OF_MATCH("ti,twl6025-ldo1", LDO1),
+	TWL6025_OF_MATCH("ti,twl6025-ldo7", LDO7),
+	TWL6025_OF_MATCH("ti,twl6025-ldo6", LDO6),
+	TWL6025_OF_MATCH("ti,twl6025-ldoln", LDOLN),
+	TWL6025_OF_MATCH("ti,twl6025-ldousb", LDOUSB),
+	TWLFIXED_OF_MATCH("ti,twl4030-vintana2", VINTANA2),
+	TWLFIXED_OF_MATCH("ti,twl4030-vintdig", VINTDIG),
+	TWLFIXED_OF_MATCH("ti,twl4030-vusb1v5", VUSB1V5),
+	TWLFIXED_OF_MATCH("ti,twl4030-vusb1v8", VUSB1V8),
+	TWLFIXED_OF_MATCH("ti,twl4030-vusb3v1", VUSB3V1),
+	TWLFIXED_OF_MATCH("ti,twl6030-vana", VANA),
+	TWLFIXED_OF_MATCH("ti,twl6030-vcxio", VCXIO),
+	TWLFIXED_OF_MATCH("ti,twl6030-vdac", VDAC),
+	TWLFIXED_OF_MATCH("ti,twl6030-vusb", VUSB),
+	TWLRES_OF_MATCH("ti,twl6030-clk32kg", CLK32KG),
+	TWLSMPS_OF_MATCH("ti,twl6025-smps3", SMPS3),
+	TWLSMPS_OF_MATCH("ti,twl6025-smps4", SMPS4),
+	TWLSMPS_OF_MATCH("ti,twl6025-vio", VIO),
+	{},
+};
+MODULE_DEVICE_TABLE(of, twl_of_match);
+
 static int __devinit twlreg_probe(struct platform_device *pdev)
 {
-	int				i;
+	int				i, id;
 	struct twlreg_info		*info;
 	struct regulator_init_data	*initdata;
 	struct regulation_constraints	*c;
 	struct regulator_dev		*rdev;
 	struct twl_regulator_driver_data	*drvdata;
-
-	for (i = 0, info = NULL; i < ARRAY_SIZE(twl_regs); i++) {
-		if (twl_regs[i].desc.id != pdev->id)
-			continue;
-		info = twl_regs + i;
-		break;
+	const struct of_device_id	*match;
+
+	match = of_match_device(twl_of_match, &pdev->dev);
+	if (match) {
+		info = match->data;
+		id = info->desc.id;
+		initdata = of_get_regulator_init_data(&pdev->dev,
+						      pdev->dev.of_node);
+		drvdata = NULL;
+	} else {
+		id = pdev->id;
+		initdata = pdev->dev.platform_data;
+		for (i = 0, info = NULL; i < ARRAY_SIZE(twl_of_match); i++) {
+			info = twl_of_match[i].data;
+			if (!info || info->desc.id != id)
+				continue;
+			break;
+		}
+		drvdata = initdata->driver_data;
+		if (!drvdata)
+			return -EINVAL;
 	}
+
 	if (!info)
 		return -ENODEV;
 
-	initdata = pdev->dev.platform_data;
 	if (!initdata)
 		return -EINVAL;
 
-	drvdata = initdata->driver_data;
-
-	if (!drvdata)
-		return -EINVAL;
-
-	/* copy the driver data into regulator data */
-	info->features = drvdata->features;
-	info->data = drvdata->data;
-	info->set_voltage = drvdata->set_voltage;
-	info->get_voltage = drvdata->get_voltage;
+	if (drvdata) {
+		/* copy the driver data into regulator data */
+		info->features = drvdata->features;
+		info->data = drvdata->data;
+		info->set_voltage = drvdata->set_voltage;
+		info->get_voltage = drvdata->get_voltage;
+	}
 
 	/* Constrain board-specific capabilities according to what
 	 * this driver and the chip itself can actually do.
@@ -1153,7 +1234,7 @@ static int __devinit twlreg_probe(struct platform_device *pdev)
 	c->valid_ops_mask &= REGULATOR_CHANGE_VOLTAGE
 				| REGULATOR_CHANGE_MODE
 				| REGULATOR_CHANGE_STATUS;
-	switch (pdev->id) {
+	switch (id) {
 	case TWL4030_REG_VIO:
 	case TWL4030_REG_VDD1:
 	case TWL4030_REG_VDD2:
@@ -1167,7 +1248,7 @@ static int __devinit twlreg_probe(struct platform_device *pdev)
 		break;
 	}
 
-	switch (pdev->id) {
+	switch (id) {
 	case TWL6025_REG_SMPS3:
 		if (twl_get_smps_mult() & SMPS_MULTOFFSET_SMPS3)
 			info->flags |= SMPS_EXTENDED_EN;
@@ -1188,7 +1269,8 @@ static int __devinit twlreg_probe(struct platform_device *pdev)
 		break;
 	}
 
-	rdev = regulator_register(&info->desc, &pdev->dev, initdata, info, NULL);
+	rdev = regulator_register(&info->desc, &pdev->dev, initdata, info,
+							pdev->dev.of_node);
 	if (IS_ERR(rdev)) {
 		dev_err(&pdev->dev, "can't register %s, %ld\n",
 				info->desc.name, PTR_ERR(rdev));
@@ -1225,8 +1307,11 @@ static struct platform_driver twlreg_driver = {
 	/* NOTE: short name, to work around driver model truncation of
 	 * "twl_regulator.12" (and friends) to "twl_regulator.1".
 	 */
-	.driver.name	= "twl_reg",
-	.driver.owner	= THIS_MODULE,
+	.driver  = {
+		.name  = "twl_reg",
+		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(twl_of_match),
+	},
 };
 
 static int __init twlreg_init(void)
-- 
1.7.1

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

* [PATCH v3 2/2] arm/dts: twl: Pass regulator data from dt
  2012-02-27 10:35 ` Rajendra Nayak
@ 2012-02-27 10:36   ` Rajendra Nayak
  -1 siblings, 0 replies; 30+ messages in thread
From: Rajendra Nayak @ 2012-02-27 10:36 UTC (permalink / raw)
  To: broonie, devicetree-discuss
  Cc: linux-omap, linux-arm-kernel, tony, lrg, b-cousson, patches,
	linaro-dev, Rajendra Nayak

Pass all the voltage regulator information for
twl6030/twl4030 PMIC from device tree.

Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Benoit Cousson <b-cousson@ti.com>
---
 arch/arm/boot/dts/omap3-beagle.dts |    6 +++
 arch/arm/boot/dts/twl4030.dtsi     |   18 +++++++++++
 arch/arm/boot/dts/twl6030.dtsi     |   60 ++++++++++++++++++++++++++++++++++++
 3 files changed, 84 insertions(+), 0 deletions(-)

diff --git a/arch/arm/boot/dts/omap3-beagle.dts b/arch/arm/boot/dts/omap3-beagle.dts
index 714ba5d..54556b1 100644
--- a/arch/arm/boot/dts/omap3-beagle.dts
+++ b/arch/arm/boot/dts/omap3-beagle.dts
@@ -26,6 +26,12 @@
 		reg = <0x48>;
 		interrupts = <7>; /* SYS_NIRQ cascaded to intc */
 		interrupt-parent = <&intc>;
+
+		vsim: regulator@10 {
+			compatible = "ti,twl4030-vsim";
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <3000000>;
+		};
 	};
 };
 
diff --git a/arch/arm/boot/dts/twl4030.dtsi b/arch/arm/boot/dts/twl4030.dtsi
index 8be5223..a94654c 100644
--- a/arch/arm/boot/dts/twl4030.dtsi
+++ b/arch/arm/boot/dts/twl4030.dtsi
@@ -18,4 +18,22 @@
 		compatible = "ti,twl4030-rtc";
 		interrupts = <11>;
 	};
+
+	vdac: regulator@0 {
+		compatible = "ti,twl4030-vdac";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+	};
+
+	vpll2: regulator@1 {
+		compatible = "ti,twl4030-vpll2";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+	};
+
+	vmmc1: regulator@2 {
+		compatible = "ti,twl4030-vmmc1";
+		regulator-min-microvolt = <1850000>;
+		regulator-max-microvolt = <3150000>;
+	};
 };
diff --git a/arch/arm/boot/dts/twl6030.dtsi b/arch/arm/boot/dts/twl6030.dtsi
index b7b4e5e..efa19e8 100644
--- a/arch/arm/boot/dts/twl6030.dtsi
+++ b/arch/arm/boot/dts/twl6030.dtsi
@@ -19,4 +19,64 @@
 		compatible = "ti,twl4030-rtc";
 		interrupts = <11>;
 	};
+
+	vaux1: regulator@0 {
+		compatible = "ti,twl6030-vaux1";
+		regulator-min-microvolt = <1000000>;
+		regulator-max-microvolt = <3000000>;
+	};
+
+	vaux2: regulator@1 {
+		compatible = "ti,twl6030-vaux2";
+		regulator-min-microvolt = <1200000>;
+		regulator-max-microvolt = <2800000>;
+	};
+
+	vaux3: regulator@2 {
+		compatible = "ti,twl6030-vaux3";
+		regulator-min-microvolt = <1000000>;
+		regulator-max-microvolt = <3000000>;
+	};
+
+	vmmc: regulator@3 {
+		compatible = "ti,twl6030-vmmc";
+		regulator-min-microvolt = <1200000>;
+		regulator-max-microvolt = <3000000>;
+	};
+
+	vpp: regulator@4 {
+		compatible = "ti,twl6030-vpp";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <2500000>;
+	};
+
+	vusim: regulator@5 {
+		compatible = "ti,twl6030-vusim";
+		regulator-min-microvolt = <1200000>;
+		regulator-max-microvolt = <2900000>;
+	};
+
+	vdac: regulator@6 {
+		compatible = "ti,twl6030-vdac";
+	};
+
+	vana: regulator@7 {
+		compatible = "ti,twl6030-vana";
+	};
+
+	vcxio: regulator@8 {
+		compatible = "ti,twl6030-vcxio";
+	};
+
+	vusb: regulator@9 {
+		compatible = "ti,twl6030-vusb";
+	};
+
+	vusb: regulator@9 {
+		compatible = "ti,twl6030-vusb";
+	};
+
+	clk32kg: regulator@10 {
+		compatible = "ti,twl6030-clk32kg";
+	};
 };
-- 
1.7.1


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

* [PATCH v3 2/2] arm/dts: twl: Pass regulator data from dt
@ 2012-02-27 10:36   ` Rajendra Nayak
  0 siblings, 0 replies; 30+ messages in thread
From: Rajendra Nayak @ 2012-02-27 10:36 UTC (permalink / raw)
  To: linux-arm-kernel

Pass all the voltage regulator information for
twl6030/twl4030 PMIC from device tree.

Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Benoit Cousson <b-cousson@ti.com>
---
 arch/arm/boot/dts/omap3-beagle.dts |    6 +++
 arch/arm/boot/dts/twl4030.dtsi     |   18 +++++++++++
 arch/arm/boot/dts/twl6030.dtsi     |   60 ++++++++++++++++++++++++++++++++++++
 3 files changed, 84 insertions(+), 0 deletions(-)

diff --git a/arch/arm/boot/dts/omap3-beagle.dts b/arch/arm/boot/dts/omap3-beagle.dts
index 714ba5d..54556b1 100644
--- a/arch/arm/boot/dts/omap3-beagle.dts
+++ b/arch/arm/boot/dts/omap3-beagle.dts
@@ -26,6 +26,12 @@
 		reg = <0x48>;
 		interrupts = <7>; /* SYS_NIRQ cascaded to intc */
 		interrupt-parent = <&intc>;
+
+		vsim: regulator at 10 {
+			compatible = "ti,twl4030-vsim";
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <3000000>;
+		};
 	};
 };
 
diff --git a/arch/arm/boot/dts/twl4030.dtsi b/arch/arm/boot/dts/twl4030.dtsi
index 8be5223..a94654c 100644
--- a/arch/arm/boot/dts/twl4030.dtsi
+++ b/arch/arm/boot/dts/twl4030.dtsi
@@ -18,4 +18,22 @@
 		compatible = "ti,twl4030-rtc";
 		interrupts = <11>;
 	};
+
+	vdac: regulator at 0 {
+		compatible = "ti,twl4030-vdac";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+	};
+
+	vpll2: regulator at 1 {
+		compatible = "ti,twl4030-vpll2";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+	};
+
+	vmmc1: regulator at 2 {
+		compatible = "ti,twl4030-vmmc1";
+		regulator-min-microvolt = <1850000>;
+		regulator-max-microvolt = <3150000>;
+	};
 };
diff --git a/arch/arm/boot/dts/twl6030.dtsi b/arch/arm/boot/dts/twl6030.dtsi
index b7b4e5e..efa19e8 100644
--- a/arch/arm/boot/dts/twl6030.dtsi
+++ b/arch/arm/boot/dts/twl6030.dtsi
@@ -19,4 +19,64 @@
 		compatible = "ti,twl4030-rtc";
 		interrupts = <11>;
 	};
+
+	vaux1: regulator at 0 {
+		compatible = "ti,twl6030-vaux1";
+		regulator-min-microvolt = <1000000>;
+		regulator-max-microvolt = <3000000>;
+	};
+
+	vaux2: regulator at 1 {
+		compatible = "ti,twl6030-vaux2";
+		regulator-min-microvolt = <1200000>;
+		regulator-max-microvolt = <2800000>;
+	};
+
+	vaux3: regulator at 2 {
+		compatible = "ti,twl6030-vaux3";
+		regulator-min-microvolt = <1000000>;
+		regulator-max-microvolt = <3000000>;
+	};
+
+	vmmc: regulator at 3 {
+		compatible = "ti,twl6030-vmmc";
+		regulator-min-microvolt = <1200000>;
+		regulator-max-microvolt = <3000000>;
+	};
+
+	vpp: regulator at 4 {
+		compatible = "ti,twl6030-vpp";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <2500000>;
+	};
+
+	vusim: regulator at 5 {
+		compatible = "ti,twl6030-vusim";
+		regulator-min-microvolt = <1200000>;
+		regulator-max-microvolt = <2900000>;
+	};
+
+	vdac: regulator at 6 {
+		compatible = "ti,twl6030-vdac";
+	};
+
+	vana: regulator at 7 {
+		compatible = "ti,twl6030-vana";
+	};
+
+	vcxio: regulator at 8 {
+		compatible = "ti,twl6030-vcxio";
+	};
+
+	vusb: regulator at 9 {
+		compatible = "ti,twl6030-vusb";
+	};
+
+	vusb: regulator at 9 {
+		compatible = "ti,twl6030-vusb";
+	};
+
+	clk32kg: regulator at 10 {
+		compatible = "ti,twl6030-clk32kg";
+	};
 };
-- 
1.7.1

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

* Re: [PATCH v3 0/2] Device tree support for TWL regulators
  2012-02-27 10:35 ` Rajendra Nayak
@ 2012-02-27 12:15   ` Peter Ujfalusi
  -1 siblings, 0 replies; 30+ messages in thread
From: Peter Ujfalusi @ 2012-02-27 12:15 UTC (permalink / raw)
  To: Rajendra Nayak
  Cc: broonie, devicetree-discuss, linux-omap, linux-arm-kernel, tony,
	lrg, b-cousson, patches, linaro-dev

Hi Rajendra,


On 02/27/2012 12:35 PM, Rajendra Nayak wrote:
> Re-sending on top of Tero's changes which are already
> in -next and the one which adds support for twl6030 
> vdd1/2/3 SMPS [1].

Would you be able to add support for V1V8, V2V1 SMPS supplies in
twl6030? These regulators are need on SDP4430, and PandaBoards for the
twl6040 audio codec.
I have sent a series to add this support:
http://marc.info/?l=linux-omap&m=132886849202915&w=2

Thanks,
Péter


> v3 has mainly 2 differences from v2
> -1- TWL driver now uses just one table for both dt and
> non-dt based lookup for driver data.
> -2- All common regulator nodes for twl4030 and twl6030 are
> now defined in the twl4030.dtsi and twl6030.dtsi instead of
> repeating the nodes in all board files, which also means
> the patch ('arm/dts: twl: Pass regulator data from dt')
> has a dependency with the series from Benoit which adds the
> twl4030.dtsi and twl6030.dtsi files[2].
> 
> I have tested the patches on omap4panda and omap3beagle boards.
> 
> [1] http://marc.info/?l=linux-omap&m=133009693905864&w=2
> [2] git://git.kernel.org/pub/scm/linux/kernel/git/bcousson/linux-omap-dt.git
> 	for_3.4/dt_i2c_twl
> 
> Rajendra Nayak (2):
>   regulator: twl: adapt twl-regulator driver to dt
>   arm/dts: twl: Pass regulator data from dt
> 
>  .../bindings/regulator/twl-regulator.txt           |   66 +++++
>  arch/arm/boot/dts/omap3-beagle.dts                 |    6 +
>  arch/arm/boot/dts/twl4030.dtsi                     |   18 ++
>  arch/arm/boot/dts/twl6030.dtsi                     |   60 +++++
>  drivers/regulator/twl-regulator.c                  |  259 +++++++++++++-------
>  5 files changed, 322 insertions(+), 87 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/regulator/twl-regulator.txt
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-27 12:15   ` Peter Ujfalusi
  0 siblings, 0 replies; 30+ messages in thread
From: Peter Ujfalusi @ 2012-02-27 12:15 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Rajendra,


On 02/27/2012 12:35 PM, Rajendra Nayak wrote:
> Re-sending on top of Tero's changes which are already
> in -next and the one which adds support for twl6030 
> vdd1/2/3 SMPS [1].

Would you be able to add support for V1V8, V2V1 SMPS supplies in
twl6030? These regulators are need on SDP4430, and PandaBoards for the
twl6040 audio codec.
I have sent a series to add this support:
http://marc.info/?l=linux-omap&m=132886849202915&w=2

Thanks,
P?ter


> v3 has mainly 2 differences from v2
> -1- TWL driver now uses just one table for both dt and
> non-dt based lookup for driver data.
> -2- All common regulator nodes for twl4030 and twl6030 are
> now defined in the twl4030.dtsi and twl6030.dtsi instead of
> repeating the nodes in all board files, which also means
> the patch ('arm/dts: twl: Pass regulator data from dt')
> has a dependency with the series from Benoit which adds the
> twl4030.dtsi and twl6030.dtsi files[2].
> 
> I have tested the patches on omap4panda and omap3beagle boards.
> 
> [1] http://marc.info/?l=linux-omap&m=133009693905864&w=2
> [2] git://git.kernel.org/pub/scm/linux/kernel/git/bcousson/linux-omap-dt.git
> 	for_3.4/dt_i2c_twl
> 
> Rajendra Nayak (2):
>   regulator: twl: adapt twl-regulator driver to dt
>   arm/dts: twl: Pass regulator data from dt
> 
>  .../bindings/regulator/twl-regulator.txt           |   66 +++++
>  arch/arm/boot/dts/omap3-beagle.dts                 |    6 +
>  arch/arm/boot/dts/twl4030.dtsi                     |   18 ++
>  arch/arm/boot/dts/twl6030.dtsi                     |   60 +++++
>  drivers/regulator/twl-regulator.c                  |  259 +++++++++++++-------
>  5 files changed, 322 insertions(+), 87 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/regulator/twl-regulator.txt
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH v3 0/2] Device tree support for TWL regulators
  2012-02-27 12:15   ` Peter Ujfalusi
@ 2012-02-27 12:31     ` Rajendra Nayak
  -1 siblings, 0 replies; 30+ messages in thread
From: Rajendra Nayak @ 2012-02-27 12:31 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: broonie, devicetree-discuss, linux-omap, linux-arm-kernel, tony,
	lrg, b-cousson, patches, linaro-dev

On Monday 27 February 2012 05:45 PM, Peter Ujfalusi wrote:
> Hi Rajendra,
>
>
> On 02/27/2012 12:35 PM, Rajendra Nayak wrote:
>> Re-sending on top of Tero's changes which are already
>> in -next and the one which adds support for twl6030
>> vdd1/2/3 SMPS [1].
>
> Would you be able to add support for V1V8, V2V1 SMPS supplies in
> twl6030? These regulators are need on SDP4430, and PandaBoards for the
> twl6040 audio codec.
> I have sent a series to add this support:
> http://marc.info/?l=linux-omap&m=132886849202915&w=2

Sure, seems quite straight forward to add DT support for those
too. I just based my patches on top of whats already in -next and
some changes from Tero. Did not notice there are more patches floating
around touching twl-regulator :)
Depending on what order Mark happens to pull them in, I am fine
re-sending adding support for the 2 twl6030 fixed regulators.

>
> Thanks,
> Péter
>
>
>> v3 has mainly 2 differences from v2
>> -1- TWL driver now uses just one table for both dt and
>> non-dt based lookup for driver data.
>> -2- All common regulator nodes for twl4030 and twl6030 are
>> now defined in the twl4030.dtsi and twl6030.dtsi instead of
>> repeating the nodes in all board files, which also means
>> the patch ('arm/dts: twl: Pass regulator data from dt')
>> has a dependency with the series from Benoit which adds the
>> twl4030.dtsi and twl6030.dtsi files[2].
>>
>> I have tested the patches on omap4panda and omap3beagle boards.
>>
>> [1] http://marc.info/?l=linux-omap&m=133009693905864&w=2
>> [2] git://git.kernel.org/pub/scm/linux/kernel/git/bcousson/linux-omap-dt.git
>> 	for_3.4/dt_i2c_twl
>>
>> Rajendra Nayak (2):
>>    regulator: twl: adapt twl-regulator driver to dt
>>    arm/dts: twl: Pass regulator data from dt
>>
>>   .../bindings/regulator/twl-regulator.txt           |   66 +++++
>>   arch/arm/boot/dts/omap3-beagle.dts                 |    6 +
>>   arch/arm/boot/dts/twl4030.dtsi                     |   18 ++
>>   arch/arm/boot/dts/twl6030.dtsi                     |   60 +++++
>>   drivers/regulator/twl-regulator.c                  |  259 +++++++++++++-------
>>   5 files changed, 322 insertions(+), 87 deletions(-)
>>   create mode 100644 Documentation/devicetree/bindings/regulator/twl-regulator.txt
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-27 12:31     ` Rajendra Nayak
  0 siblings, 0 replies; 30+ messages in thread
From: Rajendra Nayak @ 2012-02-27 12:31 UTC (permalink / raw)
  To: linux-arm-kernel

On Monday 27 February 2012 05:45 PM, Peter Ujfalusi wrote:
> Hi Rajendra,
>
>
> On 02/27/2012 12:35 PM, Rajendra Nayak wrote:
>> Re-sending on top of Tero's changes which are already
>> in -next and the one which adds support for twl6030
>> vdd1/2/3 SMPS [1].
>
> Would you be able to add support for V1V8, V2V1 SMPS supplies in
> twl6030? These regulators are need on SDP4430, and PandaBoards for the
> twl6040 audio codec.
> I have sent a series to add this support:
> http://marc.info/?l=linux-omap&m=132886849202915&w=2

Sure, seems quite straight forward to add DT support for those
too. I just based my patches on top of whats already in -next and
some changes from Tero. Did not notice there are more patches floating
around touching twl-regulator :)
Depending on what order Mark happens to pull them in, I am fine
re-sending adding support for the 2 twl6030 fixed regulators.

>
> Thanks,
> P?ter
>
>
>> v3 has mainly 2 differences from v2
>> -1- TWL driver now uses just one table for both dt and
>> non-dt based lookup for driver data.
>> -2- All common regulator nodes for twl4030 and twl6030 are
>> now defined in the twl4030.dtsi and twl6030.dtsi instead of
>> repeating the nodes in all board files, which also means
>> the patch ('arm/dts: twl: Pass regulator data from dt')
>> has a dependency with the series from Benoit which adds the
>> twl4030.dtsi and twl6030.dtsi files[2].
>>
>> I have tested the patches on omap4panda and omap3beagle boards.
>>
>> [1] http://marc.info/?l=linux-omap&m=133009693905864&w=2
>> [2] git://git.kernel.org/pub/scm/linux/kernel/git/bcousson/linux-omap-dt.git
>> 	for_3.4/dt_i2c_twl
>>
>> Rajendra Nayak (2):
>>    regulator: twl: adapt twl-regulator driver to dt
>>    arm/dts: twl: Pass regulator data from dt
>>
>>   .../bindings/regulator/twl-regulator.txt           |   66 +++++
>>   arch/arm/boot/dts/omap3-beagle.dts                 |    6 +
>>   arch/arm/boot/dts/twl4030.dtsi                     |   18 ++
>>   arch/arm/boot/dts/twl6030.dtsi                     |   60 +++++
>>   drivers/regulator/twl-regulator.c                  |  259 +++++++++++++-------
>>   5 files changed, 322 insertions(+), 87 deletions(-)
>>   create mode 100644 Documentation/devicetree/bindings/regulator/twl-regulator.txt
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
>> the body of a message to majordomo at vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH v3 0/2] Device tree support for TWL regulators
  2012-02-27 12:31     ` Rajendra Nayak
@ 2012-02-27 13:41       ` Mark Brown
  -1 siblings, 0 replies; 30+ messages in thread
From: Mark Brown @ 2012-02-27 13:41 UTC (permalink / raw)
  To: Rajendra Nayak
  Cc: Peter Ujfalusi, devicetree-discuss, linux-omap, linux-arm-kernel,
	tony, lrg, b-cousson, patches, linaro-dev

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

On Mon, Feb 27, 2012 at 06:01:20PM +0530, Rajendra Nayak wrote:

> Depending on what order Mark happens to pull them in, I am fine
> re-sending adding support for the 2 twl6030 fixed regulators.

Please can you guys come up with a single unified series for this stuff
- I'll hold off on applying anything to allow you to do this.

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

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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-27 13:41       ` Mark Brown
  0 siblings, 0 replies; 30+ messages in thread
From: Mark Brown @ 2012-02-27 13:41 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Feb 27, 2012 at 06:01:20PM +0530, Rajendra Nayak wrote:

> Depending on what order Mark happens to pull them in, I am fine
> re-sending adding support for the 2 twl6030 fixed regulators.

Please can you guys come up with a single unified series for this stuff
- I'll hold off on applying anything to allow you to do this.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120227/b24942a0/attachment.sig>

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

* Re: [PATCH v3 0/2] Device tree support for TWL regulators
  2012-02-27 13:41       ` Mark Brown
@ 2012-02-27 13:52         ` Cousson, Benoit
  -1 siblings, 0 replies; 30+ messages in thread
From: Cousson, Benoit @ 2012-02-27 13:52 UTC (permalink / raw)
  To: Mark Brown, tony
  Cc: Rajendra Nayak, Peter Ujfalusi, devicetree-discuss, linux-omap,
	linux-arm-kernel, lrg, patches, linaro-dev

Hi Mark,

On 2/27/2012 2:41 PM, Mark Brown wrote:
> On Mon, Feb 27, 2012 at 06:01:20PM +0530, Rajendra Nayak wrote:
>
>> Depending on what order Mark happens to pull them in, I am fine
>> re-sending adding support for the 2 twl6030 fixed regulators.
>
> Please can you guys come up with a single unified series for this stuff
> - I'll hold off on applying anything to allow you to do this.

The issue is that the initial TWL regulator series from Rajendra will 
depend on the twl core DT support I have that depends on the irq_domain 
series from Grant...

So I guess, it will be easy for us to split the regulator patches from 
the DTS ones to have at least the driver changes merged by you. Then 
Tony might be able to pull all the DTS in one series and thus avoid the 
various merge conflict that will happen since most OMAP drivers are 
hacking the same DTS files.

Does that make sense? Or do you think it will be even worst separating 
the patches?

Thanks,
Benoit

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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-27 13:52         ` Cousson, Benoit
  0 siblings, 0 replies; 30+ messages in thread
From: Cousson, Benoit @ 2012-02-27 13:52 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Mark,

On 2/27/2012 2:41 PM, Mark Brown wrote:
> On Mon, Feb 27, 2012 at 06:01:20PM +0530, Rajendra Nayak wrote:
>
>> Depending on what order Mark happens to pull them in, I am fine
>> re-sending adding support for the 2 twl6030 fixed regulators.
>
> Please can you guys come up with a single unified series for this stuff
> - I'll hold off on applying anything to allow you to do this.

The issue is that the initial TWL regulator series from Rajendra will 
depend on the twl core DT support I have that depends on the irq_domain 
series from Grant...

So I guess, it will be easy for us to split the regulator patches from 
the DTS ones to have at least the driver changes merged by you. Then 
Tony might be able to pull all the DTS in one series and thus avoid the 
various merge conflict that will happen since most OMAP drivers are 
hacking the same DTS files.

Does that make sense? Or do you think it will be even worst separating 
the patches?

Thanks,
Benoit

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

* Re: [PATCH v3 0/2] Device tree support for TWL regulators
  2012-02-27 13:52         ` Cousson, Benoit
@ 2012-02-27 14:03           ` Mark Brown
  -1 siblings, 0 replies; 30+ messages in thread
From: Mark Brown @ 2012-02-27 14:03 UTC (permalink / raw)
  To: Cousson, Benoit
  Cc: tony, Rajendra Nayak, Peter Ujfalusi, devicetree-discuss,
	linux-omap, linux-arm-kernel, lrg, patches, linaro-dev

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

On Mon, Feb 27, 2012 at 02:52:05PM +0100, Cousson, Benoit wrote:
> On 2/27/2012 2:41 PM, Mark Brown wrote:
> >On Mon, Feb 27, 2012 at 06:01:20PM +0530, Rajendra Nayak wrote:

> >Please can you guys come up with a single unified series for this stuff
> >- I'll hold off on applying anything to allow you to do this.

> The issue is that the initial TWL regulator series from Rajendra
> will depend on the twl core DT support I have that depends on the
> irq_domain series from Grant...

Really?  That's the first I've heard of any such dependency here.  Is it
a build time dependency or is it just something that's required to make
the code actually spring into life?  It looks like it's the latter but
you're saying there's an actual dependency.

There's also more than that, there's also at least Tero submitting some
other stuff separately (and his stuff won't play with DT...) and I think
Peter also.  It really fees like there's a bunch of people working on
different things without talking to each other here.

> So I guess, it will be easy for us to split the regulator patches
> from the DTS ones to have at least the driver changes merged by you.
> Then Tony might be able to pull all the DTS in one series and thus
> avoid the various merge conflict that will happen since most OMAP
> drivers are hacking the same DTS files.

> Does that make sense? Or do you think it will be even worst
> separating the patches?

Unless there's a compile time dependency I don't think we need to
refactor anything here, what I'm seeing at the minute looks OK from a
merge point of view except that there appears to be a lack of
coordination between the various serieses.

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

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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-27 14:03           ` Mark Brown
  0 siblings, 0 replies; 30+ messages in thread
From: Mark Brown @ 2012-02-27 14:03 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Feb 27, 2012 at 02:52:05PM +0100, Cousson, Benoit wrote:
> On 2/27/2012 2:41 PM, Mark Brown wrote:
> >On Mon, Feb 27, 2012 at 06:01:20PM +0530, Rajendra Nayak wrote:

> >Please can you guys come up with a single unified series for this stuff
> >- I'll hold off on applying anything to allow you to do this.

> The issue is that the initial TWL regulator series from Rajendra
> will depend on the twl core DT support I have that depends on the
> irq_domain series from Grant...

Really?  That's the first I've heard of any such dependency here.  Is it
a build time dependency or is it just something that's required to make
the code actually spring into life?  It looks like it's the latter but
you're saying there's an actual dependency.

There's also more than that, there's also at least Tero submitting some
other stuff separately (and his stuff won't play with DT...) and I think
Peter also.  It really fees like there's a bunch of people working on
different things without talking to each other here.

> So I guess, it will be easy for us to split the regulator patches
> from the DTS ones to have at least the driver changes merged by you.
> Then Tony might be able to pull all the DTS in one series and thus
> avoid the various merge conflict that will happen since most OMAP
> drivers are hacking the same DTS files.

> Does that make sense? Or do you think it will be even worst
> separating the patches?

Unless there's a compile time dependency I don't think we need to
refactor anything here, what I'm seeing at the minute looks OK from a
merge point of view except that there appears to be a lack of
coordination between the various serieses.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120227/edc21336/attachment.sig>

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

* Re: [PATCH v3 0/2] Device tree support for TWL regulators
  2012-02-27 14:03           ` Mark Brown
@ 2012-02-27 14:21               ` Cousson, Benoit
  -1 siblings, 0 replies; 30+ messages in thread
From: Cousson, Benoit @ 2012-02-27 14:21 UTC (permalink / raw)
  To: Mark Brown
  Cc: linaro-dev-cunTk1MwBs8s++Sfvej+rw,
	patches-QSEj5FYQhm4dnm+yROfE0A, tony-4v6yS6AI5VpBDgjK7y7TUQ,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Rajendra Nayak,
	Peter Ujfalusi, linux-omap-u79uwXL29TY76Z2rM5mHXA,
	lrg-l0cyMroinI0,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On 2/27/2012 3:03 PM, Mark Brown wrote:
> On Mon, Feb 27, 2012 at 02:52:05PM +0100, Cousson, Benoit wrote:
>> On 2/27/2012 2:41 PM, Mark Brown wrote:
>>> On Mon, Feb 27, 2012 at 06:01:20PM +0530, Rajendra Nayak wrote:
>
>>> Please can you guys come up with a single unified series for this stuff
>>> - I'll hold off on applying anything to allow you to do this.
>
>> The issue is that the initial TWL regulator series from Rajendra
>> will depend on the twl core DT support I have that depends on the
>> irq_domain series from Grant...
>
> Really?  That's the first I've heard of any such dependency here.  Is it
> a build time dependency or is it just something that's required to make
> the code actually spring into life?  It looks like it's the latter but
> you're saying there's an actual dependency.

Mmm, it is written in Rajendra's changelog:

"-2- All common regulator nodes for twl4030 and twl6030 are
now defined in the twl4030.dtsi and twl6030.dtsi instead of
repeating the nodes in all board files, which also means
the patch ('arm/dts: twl: Pass regulator data from dt')
has a dependency with the series from Benoit which adds the
twl4030.dtsi and twl6030.dtsi files[2]."

The good point is that a missing or broken DTS will indeed not break the 
build, it will just not boot the platform properly. But that still an 
important dependency to me.

> There's also more than that, there's also at least Tero submitting some
> other stuff separately (and his stuff won't play with DT...) and I think
> Peter also.  It really fees like there's a bunch of people working on
> different things without talking to each other here.

That's the problem with MFD devices that are doing everything from audio 
to power including the coffee...

>> So I guess, it will be easy for us to split the regulator patches
>> from the DTS ones to have at least the driver changes merged by you.
>> Then Tony might be able to pull all the DTS in one series and thus
>> avoid the various merge conflict that will happen since most OMAP
>> drivers are hacking the same DTS files.
>
>> Does that make sense? Or do you think it will be even worst
>> separating the patches?
>
> Unless there's a compile time dependency I don't think we need to
> refactor anything here, what I'm seeing at the minute looks OK from a
> merge point of view except that there appears to be a lack of
> coordination between the various serieses.

Fair enough on that point. At least now we have all the stakeholders, so 
let's do some TI internal laundry.

Regards,
Benoit

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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-27 14:21               ` Cousson, Benoit
  0 siblings, 0 replies; 30+ messages in thread
From: Cousson, Benoit @ 2012-02-27 14:21 UTC (permalink / raw)
  To: linux-arm-kernel

On 2/27/2012 3:03 PM, Mark Brown wrote:
> On Mon, Feb 27, 2012 at 02:52:05PM +0100, Cousson, Benoit wrote:
>> On 2/27/2012 2:41 PM, Mark Brown wrote:
>>> On Mon, Feb 27, 2012 at 06:01:20PM +0530, Rajendra Nayak wrote:
>
>>> Please can you guys come up with a single unified series for this stuff
>>> - I'll hold off on applying anything to allow you to do this.
>
>> The issue is that the initial TWL regulator series from Rajendra
>> will depend on the twl core DT support I have that depends on the
>> irq_domain series from Grant...
>
> Really?  That's the first I've heard of any such dependency here.  Is it
> a build time dependency or is it just something that's required to make
> the code actually spring into life?  It looks like it's the latter but
> you're saying there's an actual dependency.

Mmm, it is written in Rajendra's changelog:

"-2- All common regulator nodes for twl4030 and twl6030 are
now defined in the twl4030.dtsi and twl6030.dtsi instead of
repeating the nodes in all board files, which also means
the patch ('arm/dts: twl: Pass regulator data from dt')
has a dependency with the series from Benoit which adds the
twl4030.dtsi and twl6030.dtsi files[2]."

The good point is that a missing or broken DTS will indeed not break the 
build, it will just not boot the platform properly. But that still an 
important dependency to me.

> There's also more than that, there's also at least Tero submitting some
> other stuff separately (and his stuff won't play with DT...) and I think
> Peter also.  It really fees like there's a bunch of people working on
> different things without talking to each other here.

That's the problem with MFD devices that are doing everything from audio 
to power including the coffee...

>> So I guess, it will be easy for us to split the regulator patches
>> from the DTS ones to have at least the driver changes merged by you.
>> Then Tony might be able to pull all the DTS in one series and thus
>> avoid the various merge conflict that will happen since most OMAP
>> drivers are hacking the same DTS files.
>
>> Does that make sense? Or do you think it will be even worst
>> separating the patches?
>
> Unless there's a compile time dependency I don't think we need to
> refactor anything here, what I'm seeing at the minute looks OK from a
> merge point of view except that there appears to be a lack of
> coordination between the various serieses.

Fair enough on that point. At least now we have all the stakeholders, so 
let's do some TI internal laundry.

Regards,
Benoit

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

* Re: [PATCH v3 0/2] Device tree support for TWL regulators
  2012-02-27 14:21               ` Cousson, Benoit
@ 2012-02-27 14:53                   ` Mark Brown
  -1 siblings, 0 replies; 30+ messages in thread
From: Mark Brown @ 2012-02-27 14:53 UTC (permalink / raw)
  To: Cousson, Benoit
  Cc: linaro-dev-cunTk1MwBs8s++Sfvej+rw,
	patches-QSEj5FYQhm4dnm+yROfE0A, tony-4v6yS6AI5VpBDgjK7y7TUQ,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Rajendra Nayak,
	Peter Ujfalusi, linux-omap-u79uwXL29TY76Z2rM5mHXA,
	lrg-l0cyMroinI0,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r


[-- Attachment #1.1: Type: text/plain, Size: 1618 bytes --]

On Mon, Feb 27, 2012 at 03:21:26PM +0100, Cousson, Benoit wrote:

> Mmm, it is written in Rajendra's changelog:

> "-2- All common regulator nodes for twl4030 and twl6030 are
> now defined in the twl4030.dtsi and twl6030.dtsi instead of

Oh, it's buried at the end of a rather verbose inter-patch changelog,
that's not exactly visible :(

> The good point is that a missing or broken DTS will indeed not break
> the build, it will just not boot the platform properly. But that
> still an important dependency to me.

If adding device tree support breaks existing platforms something is
going wrong, while you're pulling things together device tree might not
work until all the support makes it in but the old non-DT code should
continue to function.

> >There's also more than that, there's also at least Tero submitting some
> >other stuff separately (and his stuff won't play with DT...) and I think
> >Peter also.  It really fees like there's a bunch of people working on
> >different things without talking to each other here.

> That's the problem with MFD devices that are doing everything from
> audio to power including the coffee...

Well, in this case everyone's only working on the regulator stuff, or at
least only overlapping on that.

The twl drivers aren't helping here - the structure is *very* non-standard
and seems to make updates more fiddly than they should be as you're not
just adding stuff to tables.  Every update seems to need explicit code
and per-change data adding which is making life harder.  If things
looked more standard from a code point of view it'd probably reduce the
pain a lot.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 175 bytes --]

_______________________________________________
linaro-dev mailing list
linaro-dev-cunTk1MwBs8s++Sfvej+rw@public.gmane.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-27 14:53                   ` Mark Brown
  0 siblings, 0 replies; 30+ messages in thread
From: Mark Brown @ 2012-02-27 14:53 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Feb 27, 2012 at 03:21:26PM +0100, Cousson, Benoit wrote:

> Mmm, it is written in Rajendra's changelog:

> "-2- All common regulator nodes for twl4030 and twl6030 are
> now defined in the twl4030.dtsi and twl6030.dtsi instead of

Oh, it's buried at the end of a rather verbose inter-patch changelog,
that's not exactly visible :(

> The good point is that a missing or broken DTS will indeed not break
> the build, it will just not boot the platform properly. But that
> still an important dependency to me.

If adding device tree support breaks existing platforms something is
going wrong, while you're pulling things together device tree might not
work until all the support makes it in but the old non-DT code should
continue to function.

> >There's also more than that, there's also at least Tero submitting some
> >other stuff separately (and his stuff won't play with DT...) and I think
> >Peter also.  It really fees like there's a bunch of people working on
> >different things without talking to each other here.

> That's the problem with MFD devices that are doing everything from
> audio to power including the coffee...

Well, in this case everyone's only working on the regulator stuff, or at
least only overlapping on that.

The twl drivers aren't helping here - the structure is *very* non-standard
and seems to make updates more fiddly than they should be as you're not
just adding stuff to tables.  Every update seems to need explicit code
and per-change data adding which is making life harder.  If things
looked more standard from a code point of view it'd probably reduce the
pain a lot.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120227/c85e5a67/attachment.sig>

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

* Re: [PATCH v3 0/2] Device tree support for TWL regulators
  2012-02-27 13:52         ` Cousson, Benoit
@ 2012-02-27 22:17           ` Grant Likely
  -1 siblings, 0 replies; 30+ messages in thread
From: Grant Likely @ 2012-02-27 22:17 UTC (permalink / raw)
  To: Cousson, Benoit
  Cc: Mark Brown, tony, linaro-dev, patches, devicetree-discuss,
	Rajendra Nayak, Peter Ujfalusi, linux-omap, lrg,
	linux-arm-kernel

On Mon, Feb 27, 2012 at 6:52 AM, Cousson, Benoit <b-cousson@ti.com> wrote:
> Hi Mark,
>
>
> On 2/27/2012 2:41 PM, Mark Brown wrote:
>>
>> On Mon, Feb 27, 2012 at 06:01:20PM +0530, Rajendra Nayak wrote:
>>
>>> Depending on what order Mark happens to pull them in, I am fine
>>> re-sending adding support for the 2 twl6030 fixed regulators.
>>
>>
>> Please can you guys come up with a single unified series for this stuff
>> - I'll hold off on applying anything to allow you to do this.
>
>
> The issue is that the initial TWL regulator series from Rajendra will depend
> on the twl core DT support I have that depends on the irq_domain series from
> Grant...

If it depends on the irqdomain tree, then just merge that tree into
yours.  That tree is stable now for exactly that reason.  You can rely
on it.

git://git.secretlab.ca/git/linux-2.6 irqdomain/next

g.

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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-27 22:17           ` Grant Likely
  0 siblings, 0 replies; 30+ messages in thread
From: Grant Likely @ 2012-02-27 22:17 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Feb 27, 2012 at 6:52 AM, Cousson, Benoit <b-cousson@ti.com> wrote:
> Hi Mark,
>
>
> On 2/27/2012 2:41 PM, Mark Brown wrote:
>>
>> On Mon, Feb 27, 2012 at 06:01:20PM +0530, Rajendra Nayak wrote:
>>
>>> Depending on what order Mark happens to pull them in, I am fine
>>> re-sending adding support for the 2 twl6030 fixed regulators.
>>
>>
>> Please can you guys come up with a single unified series for this stuff
>> - I'll hold off on applying anything to allow you to do this.
>
>
> The issue is that the initial TWL regulator series from Rajendra will depend
> on the twl core DT support I have that depends on the irq_domain series from
> Grant...

If it depends on the irqdomain tree, then just merge that tree into
yours.  That tree is stable now for exactly that reason.  You can rely
on it.

git://git.secretlab.ca/git/linux-2.6 irqdomain/next

g.

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

* Re: [PATCH v3 0/2] Device tree support for TWL regulators
  2012-02-27 22:17           ` Grant Likely
@ 2012-02-27 22:24               ` Cousson, Benoit
  -1 siblings, 0 replies; 30+ messages in thread
From: Cousson, Benoit @ 2012-02-27 22:24 UTC (permalink / raw)
  To: Grant Likely
  Cc: Rajendra Nayak, linaro-dev-cunTk1MwBs8s++Sfvej+rw,
	patches-QSEj5FYQhm4dnm+yROfE0A, tony-4v6yS6AI5VpBDgjK7y7TUQ,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Mark Brown,
	Peter Ujfalusi, linux-omap-u79uwXL29TY76Z2rM5mHXA,
	lrg-l0cyMroinI0,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On 2/27/2012 11:17 PM, Grant Likely wrote:
> On Mon, Feb 27, 2012 at 6:52 AM, Cousson, Benoit<b-cousson-l0cyMroinI0@public.gmane.org>  wrote:
>> Hi Mark,
>>
>>
>> On 2/27/2012 2:41 PM, Mark Brown wrote:
>>>
>>> On Mon, Feb 27, 2012 at 06:01:20PM +0530, Rajendra Nayak wrote:
>>>
>>>> Depending on what order Mark happens to pull them in, I am fine
>>>> re-sending adding support for the 2 twl6030 fixed regulators.
>>>
>>>
>>> Please can you guys come up with a single unified series for this stuff
>>> - I'll hold off on applying anything to allow you to do this.
>>
>>
>> The issue is that the initial TWL regulator series from Rajendra will depend
>> on the twl core DT support I have that depends on the irq_domain series from
>> Grant...
>
> If it depends on the irqdomain tree, then just merge that tree into
> yours.  That tree is stable now for exactly that reason.  You can rely
> on it.

I've just posted a pull request [1] to Tony that will merge your series 
into an OMAP DT branch to be a base for further OMAP DT series.

Regards,
Benoit


[1] http://www.spinics.net/lists/linux-omap/msg65346.html

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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-27 22:24               ` Cousson, Benoit
  0 siblings, 0 replies; 30+ messages in thread
From: Cousson, Benoit @ 2012-02-27 22:24 UTC (permalink / raw)
  To: linux-arm-kernel

On 2/27/2012 11:17 PM, Grant Likely wrote:
> On Mon, Feb 27, 2012 at 6:52 AM, Cousson, Benoit<b-cousson@ti.com>  wrote:
>> Hi Mark,
>>
>>
>> On 2/27/2012 2:41 PM, Mark Brown wrote:
>>>
>>> On Mon, Feb 27, 2012 at 06:01:20PM +0530, Rajendra Nayak wrote:
>>>
>>>> Depending on what order Mark happens to pull them in, I am fine
>>>> re-sending adding support for the 2 twl6030 fixed regulators.
>>>
>>>
>>> Please can you guys come up with a single unified series for this stuff
>>> - I'll hold off on applying anything to allow you to do this.
>>
>>
>> The issue is that the initial TWL regulator series from Rajendra will depend
>> on the twl core DT support I have that depends on the irq_domain series from
>> Grant...
>
> If it depends on the irqdomain tree, then just merge that tree into
> yours.  That tree is stable now for exactly that reason.  You can rely
> on it.

I've just posted a pull request [1] to Tony that will merge your series 
into an OMAP DT branch to be a base for further OMAP DT series.

Regards,
Benoit


[1] http://www.spinics.net/lists/linux-omap/msg65346.html

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

* Re: [PATCH v3 0/2] Device tree support for TWL regulators
  2012-02-27 14:53                   ` Mark Brown
@ 2012-02-28  5:41                     ` Rajendra Nayak
  -1 siblings, 0 replies; 30+ messages in thread
From: Rajendra Nayak @ 2012-02-28  5:41 UTC (permalink / raw)
  To: Mark Brown
  Cc: Cousson, Benoit, tony, Peter Ujfalusi, devicetree-discuss,
	linux-omap, linux-arm-kernel, lrg, patches, linaro-dev

On Monday 27 February 2012 08:23 PM, Mark Brown wrote:
> If adding device tree support breaks existing platforms something is
> going wrong, while you're pulling things together device tree might not
> work until all the support makes it in but the old non-DT code should
> continue to function.

Adding device tree support will not break existing platforms. The
non-DT code will function as expected. The dependencies I mentioned
were only with the dtsi/dts files that patch 2 was updating. The driver
changes have no dependencies with any other DT series. I will repost
all of Tero/Peter and my changes (to add DT support to the driver) as
one single series and drop the dts file updates, which I guess can go
via Tony/OMAP tree.

>


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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-28  5:41                     ` Rajendra Nayak
  0 siblings, 0 replies; 30+ messages in thread
From: Rajendra Nayak @ 2012-02-28  5:41 UTC (permalink / raw)
  To: linux-arm-kernel

On Monday 27 February 2012 08:23 PM, Mark Brown wrote:
> If adding device tree support breaks existing platforms something is
> going wrong, while you're pulling things together device tree might not
> work until all the support makes it in but the old non-DT code should
> continue to function.

Adding device tree support will not break existing platforms. The
non-DT code will function as expected. The dependencies I mentioned
were only with the dtsi/dts files that patch 2 was updating. The driver
changes have no dependencies with any other DT series. I will repost
all of Tero/Peter and my changes (to add DT support to the driver) as
one single series and drop the dts file updates, which I guess can go
via Tony/OMAP tree.

>

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

* Re: [PATCH v3 0/2] Device tree support for TWL regulators
  2012-02-28  5:41                     ` Rajendra Nayak
@ 2012-02-28 10:18                       ` Mark Brown
  -1 siblings, 0 replies; 30+ messages in thread
From: Mark Brown @ 2012-02-28 10:18 UTC (permalink / raw)
  To: Rajendra Nayak
  Cc: Cousson, Benoit, tony, Peter Ujfalusi, devicetree-discuss,
	linux-omap, linux-arm-kernel, lrg, patches, linaro-dev

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

On Tue, Feb 28, 2012 at 11:11:48AM +0530, Rajendra Nayak wrote:

> changes have no dependencies with any other DT series. I will repost
> all of Tero/Peter and my changes (to add DT support to the driver) as
> one single series and drop the dts file updates, which I guess can go
> via Tony/OMAP tree.

Yes, that sounds like a good plan - the DTS changes are largely
orthogonal to the code changes and don't need to go via the same path
(this is true in general, the DTSs are pretty horrible for merge
issues).

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

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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-28 10:18                       ` Mark Brown
  0 siblings, 0 replies; 30+ messages in thread
From: Mark Brown @ 2012-02-28 10:18 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Feb 28, 2012 at 11:11:48AM +0530, Rajendra Nayak wrote:

> changes have no dependencies with any other DT series. I will repost
> all of Tero/Peter and my changes (to add DT support to the driver) as
> one single series and drop the dts file updates, which I guess can go
> via Tony/OMAP tree.

Yes, that sounds like a good plan - the DTS changes are largely
orthogonal to the code changes and don't need to go via the same path
(this is true in general, the DTSs are pretty horrible for merge
issues).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120228/b1bcadfe/attachment.sig>

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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-23 11:35 ` Rajendra Nayak
  0 siblings, 0 replies; 30+ messages in thread
From: Rajendra Nayak @ 2012-02-23 11:35 UTC (permalink / raw)
  To: broonie, devicetree-discuss
  Cc: linux-omap, linux-arm-kernel, tony, lrg, b-cousson, patches,
	linaro-dev, Rajendra Nayak

Re-sending as these patches did not make it to the lists due to
issues with my 'git send-email'

v3 has mainly 2 differences from v2
-1- TWL driver now uses just one table for both dt and
non-dt based lookup for driver data.
-2- All common regulator nodes for twl4030 and twl6030 are
now defined in the twl4030.dtsi and twl6030.dtsi instead of
repeating the nodes in all board files, which also means
the patch ('arm/dts: twl: Pass regulator data from dt')
has a dependency with the series from Benoit which adds the
twl4030.dtsi and twl6030.dtsi files[1].

I have tested the patches on omap4panda and omap3beagle boards.

[1] git://git.kernel.org/pub/scm/linux/kernel/git/bcousson/linux-omap-dt.git
	for_3.4/dt_i2c_twl

Rajendra Nayak (2):
  regulator: twl: adapt twl-regulator driver to dt
  arm/dts: twl: Pass regulator data from dt

 .../bindings/regulator/twl-regulator.txt           |   63 ++++++
 arch/arm/boot/dts/omap3-beagle.dts                 |    6 +
 arch/arm/boot/dts/twl4030.dtsi                     |   18 ++
 arch/arm/boot/dts/twl6030.dtsi                     |   60 +++++
 drivers/regulator/twl-regulator.c                  |  227 +++++++++++++-------
 5 files changed, 301 insertions(+), 73 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/regulator/twl-regulator.txt


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

* [PATCH v3 0/2] Device tree support for TWL regulators
@ 2012-02-23 11:35 ` Rajendra Nayak
  0 siblings, 0 replies; 30+ messages in thread
From: Rajendra Nayak @ 2012-02-23 11:35 UTC (permalink / raw)
  To: linux-arm-kernel

Re-sending as these patches did not make it to the lists due to
issues with my 'git send-email'

v3 has mainly 2 differences from v2
-1- TWL driver now uses just one table for both dt and
non-dt based lookup for driver data.
-2- All common regulator nodes for twl4030 and twl6030 are
now defined in the twl4030.dtsi and twl6030.dtsi instead of
repeating the nodes in all board files, which also means
the patch ('arm/dts: twl: Pass regulator data from dt')
has a dependency with the series from Benoit which adds the
twl4030.dtsi and twl6030.dtsi files[1].

I have tested the patches on omap4panda and omap3beagle boards.

[1] git://git.kernel.org/pub/scm/linux/kernel/git/bcousson/linux-omap-dt.git
	for_3.4/dt_i2c_twl

Rajendra Nayak (2):
  regulator: twl: adapt twl-regulator driver to dt
  arm/dts: twl: Pass regulator data from dt

 .../bindings/regulator/twl-regulator.txt           |   63 ++++++
 arch/arm/boot/dts/omap3-beagle.dts                 |    6 +
 arch/arm/boot/dts/twl4030.dtsi                     |   18 ++
 arch/arm/boot/dts/twl6030.dtsi                     |   60 +++++
 drivers/regulator/twl-regulator.c                  |  227 +++++++++++++-------
 5 files changed, 301 insertions(+), 73 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/regulator/twl-regulator.txt

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

end of thread, other threads:[~2012-02-28 10:18 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-27 10:35 [PATCH v3 0/2] Device tree support for TWL regulators Rajendra Nayak
2012-02-27 10:35 ` Rajendra Nayak
2012-02-27 10:36 ` [PATCH v3 1/2] regulator: twl: adapt twl-regulator driver to dt Rajendra Nayak
2012-02-27 10:36   ` Rajendra Nayak
2012-02-27 10:36 ` [PATCH v3 2/2] arm/dts: twl: Pass regulator data from dt Rajendra Nayak
2012-02-27 10:36   ` Rajendra Nayak
2012-02-27 12:15 ` [PATCH v3 0/2] Device tree support for TWL regulators Peter Ujfalusi
2012-02-27 12:15   ` Peter Ujfalusi
2012-02-27 12:31   ` Rajendra Nayak
2012-02-27 12:31     ` Rajendra Nayak
2012-02-27 13:41     ` Mark Brown
2012-02-27 13:41       ` Mark Brown
2012-02-27 13:52       ` Cousson, Benoit
2012-02-27 13:52         ` Cousson, Benoit
2012-02-27 14:03         ` Mark Brown
2012-02-27 14:03           ` Mark Brown
     [not found]           ` <20120227140356.GF3191-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2012-02-27 14:21             ` Cousson, Benoit
2012-02-27 14:21               ` Cousson, Benoit
     [not found]               ` <4F4B9166.7020909-l0cyMroinI0@public.gmane.org>
2012-02-27 14:53                 ` Mark Brown
2012-02-27 14:53                   ` Mark Brown
2012-02-28  5:41                   ` Rajendra Nayak
2012-02-28  5:41                     ` Rajendra Nayak
2012-02-28 10:18                     ` Mark Brown
2012-02-28 10:18                       ` Mark Brown
2012-02-27 22:17         ` Grant Likely
2012-02-27 22:17           ` Grant Likely
     [not found]           ` <CACxGe6vU2dSpRrqd2y=ssgVsWuwpuvFtja9YcUAQA_ETWcwCYg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-02-27 22:24             ` Cousson, Benoit
2012-02-27 22:24               ` Cousson, Benoit
  -- strict thread matches above, loose matches on Subject: below --
2012-02-23 11:35 Rajendra Nayak
2012-02-23 11:35 ` Rajendra Nayak

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.