linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V1] regulator: da9210: addition of device tree support
@ 2016-07-13 15:41 Steve Twiss
  2016-07-14 15:48 ` Mark Brown
  0 siblings, 1 reply; 3+ messages in thread
From: Steve Twiss @ 2016-07-13 15:41 UTC (permalink / raw)
  To: DEVICETREE, LINUXKERNEL, Liam Girdwood, Mark Brown, Mark Rutland,
	Rob Herring
  Cc: Support Opensource

From: Steve Twiss <stwiss.opensource@diasemi.com>

Addition of device tree support for DA9210.

Two files are modified, the driver source file and the binding document.
Updates for the regulator source file include an .of_match_table entry, node
match checking in the probe() function for a compatible da9210 string, and
a new "BUCK" regulator entry. The binding documentation changes have been
made to reflect these updates.

Signed-off-by: Steve Twiss <stwiss.opensource@diasemi.com>
Tested-by: Steve Twiss <stwiss.opensource@diasemi.com>

---
Checks performed with linux-next/v4.7-rc7/scripts/checkpatch.pl
 da9210-regulator.c        total: 0 errors, 0 warnings, 295 lines checked
 da9210.txt                total: 0 errors, 0 warnings, 40 lines checked

This patch applies against linux-next and v4.7-rc7

Hi All,

Looking at previous similar submissions, it seems to be okay to put
both regulator and documentation changes in the same patch.

An itemised list of the changes in this patch V1 are:

@ Mark/Liam,

Changes for regulator code: da9210-regulator.c
- Include header file clean-up.
- New .of_match "BUCK" and .regulators_node entries in the regulator_desc
- Addition of MODULE_DEVICE_TABLE() list and .of_match_table entry into
  struct i2c_driver, device tree match checking inside the probe() function 

@ Rob/Mark,

Changes for binding document: da9210.txt
- Title change to more accurately describe the part
- Addition of a regulators description
- More verbose example for new regulator node "BUCK"

Regards,
Steve


 .../devicetree/bindings/regulator/da9210.txt       | 27 +++++++++++++++++-----
 drivers/regulator/da9210-regulator.c               | 23 ++++++++++++++++--
 2 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/Documentation/devicetree/bindings/regulator/da9210.txt b/Documentation/devicetree/bindings/regulator/da9210.txt
index 7aa9b1f..fe9dc7e 100644
--- a/Documentation/devicetree/bindings/regulator/da9210.txt
+++ b/Documentation/devicetree/bindings/regulator/da9210.txt
@@ -1,9 +1,15 @@
-* Dialog Semiconductor DA9210 Voltage Regulator
+* Dialog Semiconductor DA9210 Multi-phase 12A DCDC BUCK Converter
 
 Required properties:
 
 - compatible:	must be "dlg,da9210"
 - reg:		the i2c slave address of the regulator. It should be 0x68.
+- regulators:	a sub-node identified using the node's name, with valid values
+		listed below. The content of the sub-node is defined by the
+		standard binding for regulators, see regulator.txt.
+
+The valid name for regulator is:
+	BUCK
 
 Optional properties:
 
@@ -14,12 +20,21 @@ DCDC.
 
 Example:
 
-	da9210@68 {
+	pmic0 da9210@68 {
 		compatible = "dlg,da9210";
 		reg = <0x68>;
 
-		regulator-min-microvolt = <900000>;
-		regulator-max-microvolt = <1000000>;
-		regulator-boot-on;
-		regulator-always-on;
+		interrupt-parent = <...>;
+		interrupts = <...>;
+
+		regulators {
+			da9210_buck: BUCK {
+				regulator-name = "BUCK";
+				regulator-min-microvolt = <300000>;
+				regulator-max-microvolt = <1570000>;
+				regulator-min-microamp = <1600000>;
+				regulator-max-microamp = <4600000>;
+				regulator-boot-on;
+			};
+		};
 	};
diff --git a/drivers/regulator/da9210-regulator.c b/drivers/regulator/da9210-regulator.c
index 01c0e37..41a4d96 100644
--- a/drivers/regulator/da9210-regulator.c
+++ b/drivers/regulator/da9210-regulator.c
@@ -21,12 +21,11 @@
 #include <linux/err.h>
 #include <linux/i2c.h>
 #include <linux/module.h>
-#include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
-#include <linux/slab.h>
 #include <linux/regulator/driver.h>
 #include <linux/regulator/machine.h>
+#include <linux/of_device.h>
 #include <linux/regulator/of_regulator.h>
 #include <linux/regmap.h>
 
@@ -72,6 +71,8 @@ static const struct regulator_desc da9210_reg = {
 	.name = "DA9210",
 	.id = 0,
 	.ops = &da9210_buck_ops,
+	.of_match = of_match_ptr("BUCK"),
+	.regulators_node = of_match_ptr("regulators"),
 	.type = REGULATOR_VOLTAGE,
 	.n_voltages = ((DA9210_MAX_MV - DA9210_MIN_MV) / DA9210_STEP_MV) + 1,
 	.min_uV = (DA9210_MIN_MV * 1000),
@@ -179,6 +180,13 @@ error_i2c:
 /*
  * I2C driver interface functions
  */
+
+static const struct of_device_id da9210_dt_ids[] = {
+	{ .compatible = "dlg,da9210", },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, da9210_dt_ids);
+
 static int da9210_i2c_probe(struct i2c_client *i2c,
 			    const struct i2c_device_id *id)
 {
@@ -188,6 +196,16 @@ static int da9210_i2c_probe(struct i2c_client *i2c,
 	struct regulator_dev *rdev = NULL;
 	struct regulator_config config = { };
 	int error;
+	const struct of_device_id *match;
+
+	if (i2c->dev.of_node && !pdata) {
+		match = of_match_device(of_match_ptr(da9210_dt_ids),
+						&i2c->dev);
+		if (!match) {
+			dev_err(&i2c->dev, "Error: No device match found\n");
+			return -ENODEV;
+		}
+	}
 
 	chip = devm_kzalloc(&i2c->dev, sizeof(struct da9210), GFP_KERNEL);
 	if (!chip)
@@ -264,6 +282,7 @@ MODULE_DEVICE_TABLE(i2c, da9210_i2c_id);
 static struct i2c_driver da9210_regulator_driver = {
 	.driver = {
 		.name = "da9210",
+		.of_match_table = of_match_ptr(da9210_dt_ids),
 	},
 	.probe = da9210_i2c_probe,
 	.id_table = da9210_i2c_id,
-- 
end-of-patch for PATCH V1

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

* Re: [PATCH V1] regulator: da9210: addition of device tree support
  2016-07-13 15:41 [PATCH V1] regulator: da9210: addition of device tree support Steve Twiss
@ 2016-07-14 15:48 ` Mark Brown
  2016-07-15  9:17   ` Steve Twiss
  0 siblings, 1 reply; 3+ messages in thread
From: Mark Brown @ 2016-07-14 15:48 UTC (permalink / raw)
  To: Steve Twiss
  Cc: DEVICETREE, LINUXKERNEL, Liam Girdwood, Mark Rutland,
	Rob Herring, Support Opensource

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

On Wed, Jul 13, 2016 at 04:41:19PM +0100, Steve Twiss wrote:

> Two files are modified, the driver source file and the binding document.
> Updates for the regulator source file include an .of_match_table entry, node
> match checking in the probe() function for a compatible da9210 string, and
> a new "BUCK" regulator entry. The binding documentation changes have been
> made to reflect these updates.

If the device only has one regulator and no other functionality I'd
expect the properties to just be in the top level node for the device -
no need to go fiddling around with a subnode to hold another subnode to
hold all the properties.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

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

* RE: [PATCH V1] regulator: da9210: addition of device tree support
  2016-07-14 15:48 ` Mark Brown
@ 2016-07-15  9:17   ` Steve Twiss
  0 siblings, 0 replies; 3+ messages in thread
From: Steve Twiss @ 2016-07-15  9:17 UTC (permalink / raw)
  To: Mark Brown
  Cc: DEVICETREE, LINUXKERNEL, Liam Girdwood, Mark Rutland,
	Rob Herring, Support Opensource

On 14 July 2016 16:48, Mark Brown wrote:

> To: Steve Twiss
> Cc: DEVICETREE; LINUXKERNEL; Liam Girdwood; Mark Rutland; Rob Herring;
> Support Opensource
> Subject: Re: [PATCH V1] regulator: da9210: addition of device tree support
> 
> On Wed, Jul 13, 2016 at 04:41:19PM +0100, Steve Twiss wrote:
> 
> > Two files are modified, the driver source file and the binding document.
> > Updates for the regulator source file include an .of_match_table entry, node
> > match checking in the probe() function for a compatible da9210 string, and
> > a new "BUCK" regulator entry. The binding documentation changes have been
> > made to reflect these updates.
> 
> If the device only has one regulator and no other functionality I'd
> expect the properties to just be in the top level node for the device -
> no need to go fiddling around with a subnode to hold another subnode to
> hold all the properties.

Agreed.
I will revert those changes to the device tree and re-submit V2.

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

end of thread, other threads:[~2016-07-15  9:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-13 15:41 [PATCH V1] regulator: da9210: addition of device tree support Steve Twiss
2016-07-14 15:48 ` Mark Brown
2016-07-15  9:17   ` Steve Twiss

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).