* [PATCH v2 1/8] ASoC: da9055: Fix device registration of PMIC and CODEC devices
2014-02-06 18:03 [PATCH v2 0/8] da9055: Driver initialisation fixes, add DT support Adam Thomson
@ 2014-02-06 18:03 ` Adam Thomson
[not found] ` <6a398d176b0b2bf8792d27bd5e2995fd96afb32d.1391705989.git.Adam.Thomson.Opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
2014-02-10 13:43 ` Mark Brown
2014-02-06 18:03 ` [PATCH v2 2/8] ASoC: da9055: Add DT support for CODEC Adam Thomson
` (6 subsequent siblings)
7 siblings, 2 replies; 25+ messages in thread
From: Adam Thomson @ 2014-02-06 18:03 UTC (permalink / raw)
To: Mark Brown, Lee Jones
Cc: alsa-devel, linux-kernel, devicetree, Rob Herring, Linus Walleij,
Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
Currently the I2C device Ids conflict for the MFD and CODEC so
cannot be both instantiated on one platform. This patch updates
the Ids and names to make them unique from each other.
It should be noted that the I2C addresses for both PMIC and CODEC
are modifiable so instantiation of the two are kept as separate
devices, rather than instantiating the CODEC from the MFD code.
Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Acked-by: Mark Brown <broonie@linaro.org>
---
drivers/mfd/da9055-i2c.c | 12 ++++++++++--
sound/soc/codecs/da9055.c | 11 +++++++++--
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/drivers/mfd/da9055-i2c.c b/drivers/mfd/da9055-i2c.c
index 13af7e5..8103e43 100644
--- a/drivers/mfd/da9055-i2c.c
+++ b/drivers/mfd/da9055-i2c.c
@@ -53,17 +53,25 @@ static int da9055_i2c_remove(struct i2c_client *i2c)
return 0;
}
+/*
+ * DO NOT change the device Ids. The naming is intentionally specific as both
+ * the PMIC and CODEC parts of this chip are instantiated separately as I2C
+ * devices (both have configurable I2C addresses, and are to all intents and
+ * purposes separate). As a result there are specific DA9055 ids for PMIC
+ * and CODEC, which must be different to operate together.
+ */
static struct i2c_device_id da9055_i2c_id[] = {
- {"da9055", 0},
+ {"da9055-pmic", 0},
{ }
};
+MODULE_DEVICE_TABLE(i2c, da9055_i2c_id);
static struct i2c_driver da9055_i2c_driver = {
.probe = da9055_i2c_probe,
.remove = da9055_i2c_remove,
.id_table = da9055_i2c_id,
.driver = {
- .name = "da9055",
+ .name = "da9055-pmic",
.owner = THIS_MODULE,
},
};
diff --git a/sound/soc/codecs/da9055.c b/sound/soc/codecs/da9055.c
index 52b79a4..4228126 100644
--- a/sound/soc/codecs/da9055.c
+++ b/sound/soc/codecs/da9055.c
@@ -1523,8 +1523,15 @@ static int da9055_remove(struct i2c_client *client)
return 0;
}
+/*
+ * DO NOT change the device Ids. The naming is intentionally specific as both
+ * the CODEC and PMIC parts of this chip are instantiated separately as I2C
+ * devices (both have configurable I2C addresses, and are to all intents and
+ * purposes separate). As a result there are specific DA9055 Ids for CODEC
+ * and PMIC, which must be different to operate together.
+ */
static const struct i2c_device_id da9055_i2c_id[] = {
- { "da9055", 0 },
+ { "da9055-codec", 0 },
{ }
};
MODULE_DEVICE_TABLE(i2c, da9055_i2c_id);
@@ -1532,7 +1539,7 @@ MODULE_DEVICE_TABLE(i2c, da9055_i2c_id);
/* I2C codec control layer */
static struct i2c_driver da9055_i2c_driver = {
.driver = {
- .name = "da9055",
+ .name = "da9055-codec",
.owner = THIS_MODULE,
},
.probe = da9055_i2c_probe,
--
1.7.0.4
^ permalink raw reply related [flat|nested] 25+ messages in thread
[parent not found: <6a398d176b0b2bf8792d27bd5e2995fd96afb32d.1391705989.git.Adam.Thomson.Opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>]
* Re: [PATCH v2 1/8] ASoC: da9055: Fix device registration of PMIC and CODEC devices
[not found] ` <6a398d176b0b2bf8792d27bd5e2995fd96afb32d.1391705989.git.Adam.Thomson.Opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
@ 2014-02-07 10:56 ` Lee Jones
2014-02-07 12:58 ` Mark Brown
0 siblings, 1 reply; 25+ messages in thread
From: Lee Jones @ 2014-02-07 10:56 UTC (permalink / raw)
To: Adam Thomson
Cc: Mark Brown, alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Linus Walleij,
Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
> Currently the I2C device Ids conflict for the MFD and CODEC so
> cannot be both instantiated on one platform. This patch updates
> the Ids and names to make them unique from each other.
>
> It should be noted that the I2C addresses for both PMIC and CODEC
> are modifiable so instantiation of the two are kept as separate
> devices, rather than instantiating the CODEC from the MFD code.
>
> Signed-off-by: Adam Thomson <Adam.Thomson.Opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
> Acked-by: Mark Brown <broonie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> ---
> drivers/mfd/da9055-i2c.c | 12 ++++++++++--
> sound/soc/codecs/da9055.c | 11 +++++++++--
> 2 files changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/mfd/da9055-i2c.c b/drivers/mfd/da9055-i2c.c
> index 13af7e5..8103e43 100644
> --- a/drivers/mfd/da9055-i2c.c
> +++ b/drivers/mfd/da9055-i2c.c
> @@ -53,17 +53,25 @@ static int da9055_i2c_remove(struct i2c_client *i2c)
> return 0;
> }
>
> +/*
> + * DO NOT change the device Ids. The naming is intentionally specific as both
> + * the PMIC and CODEC parts of this chip are instantiated separately as I2C
> + * devices (both have configurable I2C addresses, and are to all intents and
> + * purposes separate). As a result there are specific DA9055 ids for PMIC
> + * and CODEC, which must be different to operate together.
> + */
I'm not sure this comment is required.
Most device IDs are named this way.
> static struct i2c_device_id da9055_i2c_id[] = {
> - {"da9055", 0},
> + {"da9055-pmic", 0},
> { }
> };
> +MODULE_DEVICE_TABLE(i2c, da9055_i2c_id);
>
> static struct i2c_driver da9055_i2c_driver = {
> .probe = da9055_i2c_probe,
> .remove = da9055_i2c_remove,
> .id_table = da9055_i2c_id,
> .driver = {
> - .name = "da9055",
> + .name = "da9055-pmic",
> .owner = THIS_MODULE,
> },
> };
> diff --git a/sound/soc/codecs/da9055.c b/sound/soc/codecs/da9055.c
> index 52b79a4..4228126 100644
> --- a/sound/soc/codecs/da9055.c
> +++ b/sound/soc/codecs/da9055.c
> @@ -1523,8 +1523,15 @@ static int da9055_remove(struct i2c_client *client)
> return 0;
> }
>
> +/*
> + * DO NOT change the device Ids. The naming is intentionally specific as both
> + * the CODEC and PMIC parts of this chip are instantiated separately as I2C
> + * devices (both have configurable I2C addresses, and are to all intents and
> + * purposes separate). As a result there are specific DA9055 Ids for CODEC
> + * and PMIC, which must be different to operate together.
> + */
And here, really, no need.
> static const struct i2c_device_id da9055_i2c_id[] = {
> - { "da9055", 0 },
> + { "da9055-codec", 0 },
> { }
> };
> MODULE_DEVICE_TABLE(i2c, da9055_i2c_id);
> @@ -1532,7 +1539,7 @@ MODULE_DEVICE_TABLE(i2c, da9055_i2c_id);
> /* I2C codec control layer */
> static struct i2c_driver da9055_i2c_driver = {
> .driver = {
> - .name = "da9055",
> + .name = "da9055-codec",
> .owner = THIS_MODULE,
> },
> .probe = da9055_i2c_probe,
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v2 1/8] ASoC: da9055: Fix device registration of PMIC and CODEC devices
2014-02-07 10:56 ` Lee Jones
@ 2014-02-07 12:58 ` Mark Brown
2014-02-10 11:51 ` Lee Jones
0 siblings, 1 reply; 25+ messages in thread
From: Mark Brown @ 2014-02-07 12:58 UTC (permalink / raw)
To: Lee Jones
Cc: Adam Thomson, alsa-devel, linux-kernel, devicetree, Rob Herring,
Linus Walleij, Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
[-- Attachment #1: Type: text/plain, Size: 912 bytes --]
On Fri, Feb 07, 2014 at 10:56:57AM +0000, Lee Jones wrote:
> > +/*
> > + * DO NOT change the device Ids. The naming is intentionally specific as both
> > + * the PMIC and CODEC parts of this chip are instantiated separately as I2C
> > + * devices (both have configurable I2C addresses, and are to all intents and
> > + * purposes separate). As a result there are specific DA9055 ids for PMIC
> > + * and CODEC, which must be different to operate together.
> > + */
> I'm not sure this comment is required.
They are, we've already had the suffixes removed from both PMIC and
CODEC drivers by people doing code review causing the drivers to fail to
load for several kernel releases (this should be tagged to stable as a
result).
> Most device IDs are named this way.
Having the suffix on a subdevice would be normal but it's not normal for
the primary I2C device, usually you can just put the part number in.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v2 1/8] ASoC: da9055: Fix device registration of PMIC and CODEC devices
2014-02-07 12:58 ` Mark Brown
@ 2014-02-10 11:51 ` Lee Jones
0 siblings, 0 replies; 25+ messages in thread
From: Lee Jones @ 2014-02-10 11:51 UTC (permalink / raw)
To: Mark Brown
Cc: Adam Thomson, alsa-devel, linux-kernel, devicetree, Rob Herring,
Linus Walleij, Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
> > > +/*
> > > + * DO NOT change the device Ids. The naming is intentionally specific as both
> > > + * the PMIC and CODEC parts of this chip are instantiated separately as I2C
> > > + * devices (both have configurable I2C addresses, and are to all intents and
> > > + * purposes separate). As a result there are specific DA9055 ids for PMIC
> > > + * and CODEC, which must be different to operate together.
> > > + */
>
> > I'm not sure this comment is required.
>
> They are, we've already had the suffixes removed from both PMIC and
> CODEC drivers by people doing code review causing the drivers to fail to
> load for several kernel releases (this should be tagged to stable as a
> result).
>
> > Most device IDs are named this way.
>
> Having the suffix on a subdevice would be normal but it's not normal for
> the primary I2C device, usually you can just put the part number in.
Okay, no problem then. Ignore my last.
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v2 1/8] ASoC: da9055: Fix device registration of PMIC and CODEC devices
2014-02-06 18:03 ` [PATCH v2 1/8] ASoC: da9055: Fix device registration of PMIC and CODEC devices Adam Thomson
[not found] ` <6a398d176b0b2bf8792d27bd5e2995fd96afb32d.1391705989.git.Adam.Thomson.Opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
@ 2014-02-10 13:43 ` Mark Brown
[not found] ` <20140210134310.GH1757-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
1 sibling, 1 reply; 25+ messages in thread
From: Mark Brown @ 2014-02-10 13:43 UTC (permalink / raw)
To: Adam Thomson
Cc: devicetree, alsa-devel, Alessandro Zummo, Linus Walleij,
Dmitry Torokhov, linux-kernel, Rob Herring, Lee Jones,
Guenter Roeck
[-- Attachment #1.1: Type: text/plain, Size: 268 bytes --]
On Thu, Feb 06, 2014 at 06:03:07PM +0000, Adam Thomson wrote:
> Currently the I2C device Ids conflict for the MFD and CODEC so
> cannot be both instantiated on one platform. This patch updates
> the Ids and names to make them unique from each other.
Applied, thanks.
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v2 2/8] ASoC: da9055: Add DT support for CODEC
2014-02-06 18:03 [PATCH v2 0/8] da9055: Driver initialisation fixes, add DT support Adam Thomson
2014-02-06 18:03 ` [PATCH v2 1/8] ASoC: da9055: Fix device registration of PMIC and CODEC devices Adam Thomson
@ 2014-02-06 18:03 ` Adam Thomson
2014-02-07 16:25 ` Mark Brown
2014-02-06 18:03 ` [PATCH v2 3/8] mfd: da9055: Add DT support for PMIC Adam Thomson
` (5 subsequent siblings)
7 siblings, 1 reply; 25+ messages in thread
From: Adam Thomson @ 2014-02-06 18:03 UTC (permalink / raw)
To: Mark Brown, Lee Jones
Cc: devicetree, alsa-devel, Alessandro Zummo, Linus Walleij,
Dmitry Torokhov, linux-kernel, Rob Herring, Guenter Roeck
Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
---
Documentation/devicetree/bindings/sound/da9055.txt | 22 ++++++++++++++++++++
sound/soc/codecs/da9055.c | 8 +++++++
2 files changed, 30 insertions(+), 0 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/da9055.txt
diff --git a/Documentation/devicetree/bindings/sound/da9055.txt b/Documentation/devicetree/bindings/sound/da9055.txt
new file mode 100644
index 0000000..ed1b7cc
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/da9055.txt
@@ -0,0 +1,22 @@
+* Dialog DA9055 Audio CODEC
+
+DA9055 provides Audio CODEC support (I2C only).
+
+The Audio CODEC device in DA9055 has it's own I2C address which is configurable,
+so the device is instantiated separately from the PMIC (MFD) device.
+
+For details on accompanying PMIC I2C device, see the following:
+Documentation/devicetree/bindings/mfd/da9055.txt
+
+Required properties:
+
+ - compatible: "dlg,da9055-codec"
+ - reg: Specifies the I2C slave address
+
+
+Example:
+
+ codec: da9055-codec@1a {
+ compatible = "dlg,da9055-codec";
+ reg = <0x1a>;
+ };
diff --git a/sound/soc/codecs/da9055.c b/sound/soc/codecs/da9055.c
index 4228126..be31f3c 100644
--- a/sound/soc/codecs/da9055.c
+++ b/sound/soc/codecs/da9055.c
@@ -18,6 +18,8 @@
#include <linux/regmap.h>
#include <linux/slab.h>
#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
@@ -1536,11 +1538,17 @@ static const struct i2c_device_id da9055_i2c_id[] = {
};
MODULE_DEVICE_TABLE(i2c, da9055_i2c_id);
+static const struct of_device_id da9055_of_match[] = {
+ { .compatible = "dlg,da9055-codec", },
+ { }
+};
+
/* I2C codec control layer */
static struct i2c_driver da9055_i2c_driver = {
.driver = {
.name = "da9055-codec",
.owner = THIS_MODULE,
+ .of_match_table = of_match_ptr(da9055_of_match),
},
.probe = da9055_i2c_probe,
.remove = da9055_remove,
--
1.7.0.4
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v2 2/8] ASoC: da9055: Add DT support for CODEC
2014-02-06 18:03 ` [PATCH v2 2/8] ASoC: da9055: Add DT support for CODEC Adam Thomson
@ 2014-02-07 16:25 ` Mark Brown
[not found] ` <20140207162504.GP32298-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
0 siblings, 1 reply; 25+ messages in thread
From: Mark Brown @ 2014-02-07 16:25 UTC (permalink / raw)
To: Adam Thomson
Cc: Lee Jones, alsa-devel, linux-kernel, devicetree, Rob Herring,
Linus Walleij, Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
[-- Attachment #1: Type: text/plain, Size: 225 bytes --]
On Thu, Feb 06, 2014 at 06:03:09PM +0000, Adam Thomson wrote:
> Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
This doesn't apply against my current for-next or v3.14-rc1, can you
please check and resend?
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v2 3/8] mfd: da9055: Add DT support for PMIC
2014-02-06 18:03 [PATCH v2 0/8] da9055: Driver initialisation fixes, add DT support Adam Thomson
2014-02-06 18:03 ` [PATCH v2 1/8] ASoC: da9055: Fix device registration of PMIC and CODEC devices Adam Thomson
2014-02-06 18:03 ` [PATCH v2 2/8] ASoC: da9055: Add DT support for CODEC Adam Thomson
@ 2014-02-06 18:03 ` Adam Thomson
2014-02-07 11:03 ` Lee Jones
2014-02-06 18:03 ` [PATCH v2 4/8] regulator: da9055: Add DT support Adam Thomson
` (4 subsequent siblings)
7 siblings, 1 reply; 25+ messages in thread
From: Adam Thomson @ 2014-02-06 18:03 UTC (permalink / raw)
To: Mark Brown, Lee Jones
Cc: alsa-devel, linux-kernel, devicetree, Rob Herring, Linus Walleij,
Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
---
Documentation/devicetree/bindings/mfd/da9055.txt | 73 ++++++++++++++++++++++
drivers/mfd/da9055-i2c.c | 8 +++
2 files changed, 81 insertions(+), 0 deletions(-)
create mode 100644 Documentation/devicetree/bindings/mfd/da9055.txt
diff --git a/Documentation/devicetree/bindings/mfd/da9055.txt b/Documentation/devicetree/bindings/mfd/da9055.txt
new file mode 100644
index 0000000..f903c3f
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/da9055.txt
@@ -0,0 +1,73 @@
+* Dialog DA9055 Power Management Integrated Circuit (PMIC)
+
+DA9055 consists of a large and varied group of sub-devices (I2C Only):
+
+Device Supply Names Description
+------ ------------ -----------
+da9055-gpio : : GPIOs
+da9055-regulator : : Regulators
+da9055-onkey : : On key
+da9055-rtc : : RTC
+da9055-hwmon : : ADC
+da9055-watchdog : : Watchdog
+
+The CODEC device in DA9055 has a separate, configurable I2C address and so
+is instantiated separately from the PMIC.
+
+For details on accompanying CODEC I2C device, see the following:
+Documentation/devicetree/bindings/sound/da9055.txt
+
+======
+
+Required properties:
+- compatible : Should be "dlg,da9055-pmic"
+- reg: Specifies the I2C slave address (defaults to 0x5a but can be modified)
+- interrupt-parent: Specifies the phandle of the interrupt controller to which
+ the IRQs from da9055 are delivered to.
+- interrupts: IRQ line info for da9055 chip.
+- interrupt-controller: da9055 has internal IRQs (has own IRQ domain).
+- #interrupt-cells: Should be 1, is the local IRQ number for da9055.
+
+Sub-nodes:
+- regulators : Contain the regulator nodes. The DA9055 regulators are
+ bound using their names as listed below:
+
+ buck1 : regulator BUCK1
+ buck2 : regulator BUCK2
+ ldo1 : regulator LDO1
+ ldo2 : regulator LDO2
+ ldo3 : regulator LDO3
+ ldo4 : regulator LDO4
+ ldo5 : regulator LDO5
+ ldo6 : regulator LDO6
+
+ The bindings details of individual regulator device can be found in:
+ Documentation/devicetree/bindings/regulator/regulator.txt
+
+
+Example:
+
+ pmic: da9055-pmic@5a {
+ compatible = "dlg,da9055-pmic";
+ reg = <0x5a>;
+ interrupt-parent = <&intc>;
+ interrupts = <5 0x8>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+
+ regulators {
+ buck1: BUCK1 {
+ regulator-min-microvolt = <725000>;
+ regulator-max-microvolt = <2075000>;
+ };
+
+ buck2: BUCK2 {
+ regulator-min-microvolt = <925000>;
+ regulator-max-microvolt = <2500000>;
+ };
+ ldo1: LDO1 {
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <3300000>;
+ };
+ };
+ };
diff --git a/drivers/mfd/da9055-i2c.c b/drivers/mfd/da9055-i2c.c
index 8103e43..366a3e2 100644
--- a/drivers/mfd/da9055-i2c.c
+++ b/drivers/mfd/da9055-i2c.c
@@ -15,6 +15,8 @@
#include <linux/device.h>
#include <linux/i2c.h>
#include <linux/err.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
#include <linux/mfd/da9055/core.h>
@@ -66,6 +68,11 @@ static struct i2c_device_id da9055_i2c_id[] = {
};
MODULE_DEVICE_TABLE(i2c, da9055_i2c_id);
+static const struct of_device_id da9055_of_match[] = {
+ { .compatible = "dlg,da9055-pmic", .data = (void *)&da9055_i2c_id[0] },
+ { }
+};
+
static struct i2c_driver da9055_i2c_driver = {
.probe = da9055_i2c_probe,
.remove = da9055_i2c_remove,
@@ -73,6 +80,7 @@ static struct i2c_driver da9055_i2c_driver = {
.driver = {
.name = "da9055-pmic",
.owner = THIS_MODULE,
+ .of_match_table = of_match_ptr(da9055_of_match),
},
};
--
1.7.0.4
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v2 3/8] mfd: da9055: Add DT support for PMIC
2014-02-06 18:03 ` [PATCH v2 3/8] mfd: da9055: Add DT support for PMIC Adam Thomson
@ 2014-02-07 11:03 ` Lee Jones
2014-02-07 15:45 ` Opensource [Adam Thomson]
0 siblings, 1 reply; 25+ messages in thread
From: Lee Jones @ 2014-02-07 11:03 UTC (permalink / raw)
To: Adam Thomson
Cc: Mark Brown, alsa-devel, linux-kernel, devicetree, Rob Herring,
Linus Walleij, Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
> Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
> ---
> Documentation/devicetree/bindings/mfd/da9055.txt | 73 ++++++++++++++++++++++
> drivers/mfd/da9055-i2c.c | 8 +++
Can you break this up please.
Bindings should be separate to the binding document.
> 2 files changed, 81 insertions(+), 0 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/mfd/da9055.txt
>
> diff --git a/Documentation/devicetree/bindings/mfd/da9055.txt b/Documentation/devicetree/bindings/mfd/da9055.txt
> new file mode 100644
> index 0000000..f903c3f
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/da9055.txt
> @@ -0,0 +1,73 @@
> +* Dialog DA9055 Power Management Integrated Circuit (PMIC)
> +
> +DA9055 consists of a large and varied group of sub-devices (I2C Only):
> +
> +Device Supply Names Description
> +------ ------------ -----------
> +da9055-gpio : : GPIOs
> +da9055-regulator : : Regulators
> +da9055-onkey : : On key
> +da9055-rtc : : RTC
> +da9055-hwmon : : ADC
> +da9055-watchdog : : Watchdog
> +
> +The CODEC device in DA9055 has a separate, configurable I2C address and so
> +is instantiated separately from the PMIC.
> +
> +For details on accompanying CODEC I2C device, see the following:
> +Documentation/devicetree/bindings/sound/da9055.txt
> +
> +======
> +
> +Required properties:
> +- compatible : Should be "dlg,da9055-pmic"
> +- reg: Specifies the I2C slave address (defaults to 0x5a but can be modified)
> +- interrupt-parent: Specifies the phandle of the interrupt controller to which
> + the IRQs from da9055 are delivered to.
> +- interrupts: IRQ line info for da9055 chip.
> +- interrupt-controller: da9055 has internal IRQs (has own IRQ domain).
> +- #interrupt-cells: Should be 1, is the local IRQ number for da9055.
> +
> +Sub-nodes:
> +- regulators : Contain the regulator nodes. The DA9055 regulators are
> + bound using their names as listed below:
> +
> + buck1 : regulator BUCK1
> + buck2 : regulator BUCK2
> + ldo1 : regulator LDO1
> + ldo2 : regulator LDO2
> + ldo3 : regulator LDO3
> + ldo4 : regulator LDO4
> + ldo5 : regulator LDO5
> + ldo6 : regulator LDO6
> +
> + The bindings details of individual regulator device can be found in:
> + Documentation/devicetree/bindings/regulator/regulator.txt
> +
> +
> +Example:
> +
> + pmic: da9055-pmic@5a {
> + compatible = "dlg,da9055-pmic";
> + reg = <0x5a>;
> + interrupt-parent = <&intc>;
> + interrupts = <5 0x8>;
> + interrupt-controller;
> + #interrupt-cells = <1>;
> +
> + regulators {
> + buck1: BUCK1 {
> + regulator-min-microvolt = <725000>;
> + regulator-max-microvolt = <2075000>;
> + };
> +
> + buck2: BUCK2 {
> + regulator-min-microvolt = <925000>;
> + regulator-max-microvolt = <2500000>;
> + };
> + ldo1: LDO1 {
> + regulator-min-microvolt = <900000>;
> + regulator-max-microvolt = <3300000>;
> + };
> + };
> + };
> diff --git a/drivers/mfd/da9055-i2c.c b/drivers/mfd/da9055-i2c.c
> index 8103e43..366a3e2 100644
> --- a/drivers/mfd/da9055-i2c.c
> +++ b/drivers/mfd/da9055-i2c.c
> @@ -15,6 +15,8 @@
> #include <linux/device.h>
> #include <linux/i2c.h>
> #include <linux/err.h>
> +#include <linux/of.h>
> +#include <linux/of_device.h>
>
> #include <linux/mfd/da9055/core.h>
>
> @@ -66,6 +68,11 @@ static struct i2c_device_id da9055_i2c_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, da9055_i2c_id);
>
> +static const struct of_device_id da9055_of_match[] = {
> + { .compatible = "dlg,da9055-pmic", .data = (void *)&da9055_i2c_id[0] },
Entangling the i2c_device_id table with the of_device_id table sounds
a bit too wacky for my liking. Where do you even use it?
> + { }
> +};
> +
> static struct i2c_driver da9055_i2c_driver = {
> .probe = da9055_i2c_probe,
> .remove = da9055_i2c_remove,
> @@ -73,6 +80,7 @@ static struct i2c_driver da9055_i2c_driver = {
> .driver = {
> .name = "da9055-pmic",
> .owner = THIS_MODULE,
> + .of_match_table = of_match_ptr(da9055_of_match),
> },
> };
>
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 25+ messages in thread
* RE: [PATCH v2 3/8] mfd: da9055: Add DT support for PMIC
2014-02-07 11:03 ` Lee Jones
@ 2014-02-07 15:45 ` Opensource [Adam Thomson]
0 siblings, 0 replies; 25+ messages in thread
From: Opensource [Adam Thomson] @ 2014-02-07 15:45 UTC (permalink / raw)
To: Lee Jones, Opensource [Adam Thomson]
Cc: Mark Brown, alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Rob Herring,
Linus Walleij, Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
On Fri, Feb 07, 2014 at 11:03:18AM +0000, Lee Jones wrote:
>
> Can you break this up please.
>
> Bindings should be separate to the binding document.
Right, fine. Figured as they were directly related they should be in one patch
but will separate them.
> Entangling the i2c_device_id table with the of_device_id table sounds
> a bit too wacky for my liking. Where do you even use it?
>
You're right. Is not used so can remove it.
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v2 4/8] regulator: da9055: Add DT support
2014-02-06 18:03 [PATCH v2 0/8] da9055: Driver initialisation fixes, add DT support Adam Thomson
` (2 preceding siblings ...)
2014-02-06 18:03 ` [PATCH v2 3/8] mfd: da9055: Add DT support for PMIC Adam Thomson
@ 2014-02-06 18:03 ` Adam Thomson
[not found] ` <9c9235270af15eb50bd2d5c20daa7a81858910a4.1391705989.git.Adam.Thomson.Opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
2014-02-06 18:03 ` [PATCH v2 5/8] onkey: da9055: Remove use of regmap_irq_get_virq() Adam Thomson
` (3 subsequent siblings)
7 siblings, 1 reply; 25+ messages in thread
From: Adam Thomson @ 2014-02-06 18:03 UTC (permalink / raw)
To: Mark Brown, Lee Jones
Cc: alsa-devel, linux-kernel, devicetree, Rob Herring, Linus Walleij,
Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
---
drivers/regulator/da9055-regulator.c | 69 ++++++++++++++++++++++++++++++++--
1 files changed, 65 insertions(+), 4 deletions(-)
diff --git a/drivers/regulator/da9055-regulator.c b/drivers/regulator/da9055-regulator.c
index 7f34020..d90f785 100644
--- a/drivers/regulator/da9055-regulator.c
+++ b/drivers/regulator/da9055-regulator.c
@@ -19,6 +19,8 @@
#include <linux/platform_device.h>
#include <linux/regulator/driver.h>
#include <linux/regulator/machine.h>
+#include <linux/of.h>
+#include <linux/regulator/of_regulator.h>
#include <linux/mfd/da9055/core.h>
#include <linux/mfd/da9055/reg.h>
@@ -446,6 +448,9 @@ static int da9055_gpio_init(struct da9055_regulator *regulator,
struct da9055_regulator_info *info = regulator->info;
int ret = 0;
+ if (!pdata)
+ return 0;
+
if (pdata->gpio_ren && pdata->gpio_ren[id]) {
char name[18];
int gpio_mux = pdata->gpio_ren[id];
@@ -530,6 +535,59 @@ static inline struct da9055_regulator_info *find_regulator_info(int id)
return NULL;
}
+#ifdef CONFIG_OF
+static struct of_regulator_match da9055_reg_matches[] = {
+ { .name = "BUCK1", },
+ { .name = "BUCK2", },
+ { .name = "LDO1", },
+ { .name = "LDO2", },
+ { .name = "LDO3", },
+ { .name = "LDO4", },
+ { .name = "LDO5", },
+ { .name = "LDO6", },
+};
+
+static int da9055_regulator_dt_init(struct platform_device *pdev,
+ struct da9055_regulator *regulator,
+ struct regulator_config *config,
+ int regid)
+{
+ struct device_node *nproot, *np;
+ int ret;
+
+ nproot = of_node_get(pdev->dev.parent->of_node);
+ if (!nproot)
+ return -ENODEV;
+
+ np = of_find_node_by_name(nproot, "regulators");
+ if (!np)
+ return -ENODEV;
+
+ ret = of_regulator_match(&pdev->dev, np, &da9055_reg_matches[regid], 1);
+ of_node_put(nproot);
+ if (ret < 0) {
+ dev_err(&pdev->dev, "Error matching regulator: %d\n", ret);
+ return -ENODEV;
+ }
+
+ config->init_data = da9055_reg_matches[regid].init_data;
+ config->of_node = da9055_reg_matches[regid].of_node;
+
+ if (!config->of_node)
+ return -ENODEV;
+
+ return 0;
+}
+#else
+static inline da9055_regulator_dt_init(struct platform_device *pdev,
+ struct da9055_regulator *regulator,
+ struct regulator_config *config,
+ int regid)
+{
+ return -ENODEV;
+}
+#endif /* CONFIG_OF */
+
static int da9055_regulator_probe(struct platform_device *pdev)
{
struct regulator_config config = { };
@@ -538,9 +596,6 @@ static int da9055_regulator_probe(struct platform_device *pdev)
struct da9055_pdata *pdata = dev_get_platdata(da9055->dev);
int ret, irq;
- if (pdata == NULL || pdata->regulators[pdev->id] == NULL)
- return -ENODEV;
-
regulator = devm_kzalloc(&pdev->dev, sizeof(struct da9055_regulator),
GFP_KERNEL);
if (!regulator)
@@ -557,8 +612,14 @@ static int da9055_regulator_probe(struct platform_device *pdev)
config.driver_data = regulator;
config.regmap = da9055->regmap;
- if (pdata && pdata->regulators)
+ if (pdata && pdata->regulators) {
config.init_data = pdata->regulators[pdev->id];
+ } else {
+ ret = da9055_regulator_dt_init(pdev, regulator, &config,
+ pdev->id);
+ if (ret < 0)
+ return ret;
+ }
ret = da9055_gpio_init(regulator, &config, pdata, pdev->id);
if (ret < 0)
--
1.7.0.4
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v2 5/8] onkey: da9055: Remove use of regmap_irq_get_virq()
2014-02-06 18:03 [PATCH v2 0/8] da9055: Driver initialisation fixes, add DT support Adam Thomson
` (3 preceding siblings ...)
2014-02-06 18:03 ` [PATCH v2 4/8] regulator: da9055: Add DT support Adam Thomson
@ 2014-02-06 18:03 ` Adam Thomson
2014-02-06 18:03 ` [PATCH v2 6/8] hwmon: " Adam Thomson
` (2 subsequent siblings)
7 siblings, 0 replies; 25+ messages in thread
From: Adam Thomson @ 2014-02-06 18:03 UTC (permalink / raw)
To: Mark Brown, Lee Jones
Cc: alsa-devel, linux-kernel, devicetree, Rob Herring, Linus Walleij,
Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
Using platform_get_irq_byname() to retrieve the IRQ number
returns the VIRQ number rather than the local IRQ number for
the device. Passing that value then into regmap_irq_get_virq()
causes a failure because the function is expecting the local
IRQ number (e.g. 0, 1, 2, 3, etc). This patch removes use of
regmap_irq_get_virq() to prevent this failure from happening.
Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
---
drivers/input/misc/da9055_onkey.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/drivers/input/misc/da9055_onkey.c b/drivers/input/misc/da9055_onkey.c
index 4b11ede..4765799 100644
--- a/drivers/input/misc/da9055_onkey.c
+++ b/drivers/input/misc/da9055_onkey.c
@@ -109,7 +109,6 @@ static int da9055_onkey_probe(struct platform_device *pdev)
INIT_DELAYED_WORK(&onkey->work, da9055_onkey_work);
- irq = regmap_irq_get_virq(da9055->irq_data, irq);
err = request_threaded_irq(irq, NULL, da9055_onkey_irq,
IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
"ONKEY", onkey);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v2 6/8] hwmon: da9055: Remove use of regmap_irq_get_virq()
2014-02-06 18:03 [PATCH v2 0/8] da9055: Driver initialisation fixes, add DT support Adam Thomson
` (4 preceding siblings ...)
2014-02-06 18:03 ` [PATCH v2 5/8] onkey: da9055: Remove use of regmap_irq_get_virq() Adam Thomson
@ 2014-02-06 18:03 ` Adam Thomson
2014-02-07 1:29 ` Guenter Roeck
2014-02-06 18:03 ` [PATCH v2 7/8] rtc: " Adam Thomson
[not found] ` <cover.1391705989.git.Adam.Thomson.Opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
7 siblings, 1 reply; 25+ messages in thread
From: Adam Thomson @ 2014-02-06 18:03 UTC (permalink / raw)
To: Mark Brown, Lee Jones
Cc: alsa-devel, linux-kernel, devicetree, Rob Herring, Linus Walleij,
Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
---
drivers/hwmon/da9055-hwmon.c | 4 ----
1 files changed, 0 insertions(+), 4 deletions(-)
diff --git a/drivers/hwmon/da9055-hwmon.c b/drivers/hwmon/da9055-hwmon.c
index 029ecab..73b3865 100644
--- a/drivers/hwmon/da9055-hwmon.c
+++ b/drivers/hwmon/da9055-hwmon.c
@@ -278,10 +278,6 @@ static int da9055_hwmon_probe(struct platform_device *pdev)
if (hwmon_irq < 0)
return hwmon_irq;
- hwmon_irq = regmap_irq_get_virq(hwmon->da9055->irq_data, hwmon_irq);
- if (hwmon_irq < 0)
- return hwmon_irq;
-
ret = devm_request_threaded_irq(&pdev->dev, hwmon_irq,
NULL, da9055_auxadc_irq,
IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
--
1.7.0.4
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v2 6/8] hwmon: da9055: Remove use of regmap_irq_get_virq()
2014-02-06 18:03 ` [PATCH v2 6/8] hwmon: " Adam Thomson
@ 2014-02-07 1:29 ` Guenter Roeck
0 siblings, 0 replies; 25+ messages in thread
From: Guenter Roeck @ 2014-02-07 1:29 UTC (permalink / raw)
To: Adam Thomson, Mark Brown, Lee Jones
Cc: alsa-devel, linux-kernel, devicetree, Rob Herring, Linus Walleij,
Dmitry Torokhov, Alessandro Zummo
On 02/06/2014 10:03 AM, Adam Thomson wrote:
> Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
> ---
Applied (after adding the explanation from the introduction).
Thanks,
Guenter
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v2 7/8] rtc: da9055: Remove use of regmap_irq_get_virq()
2014-02-06 18:03 [PATCH v2 0/8] da9055: Driver initialisation fixes, add DT support Adam Thomson
` (5 preceding siblings ...)
2014-02-06 18:03 ` [PATCH v2 6/8] hwmon: " Adam Thomson
@ 2014-02-06 18:03 ` Adam Thomson
[not found] ` <cover.1391705989.git.Adam.Thomson.Opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
7 siblings, 0 replies; 25+ messages in thread
From: Adam Thomson @ 2014-02-06 18:03 UTC (permalink / raw)
To: Mark Brown, Lee Jones
Cc: alsa-devel, linux-kernel, devicetree, Rob Herring, Linus Walleij,
Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
---
drivers/rtc/rtc-da9055.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/drivers/rtc/rtc-da9055.c b/drivers/rtc/rtc-da9055.c
index 48cb2ac..a825491 100644
--- a/drivers/rtc/rtc-da9055.c
+++ b/drivers/rtc/rtc-da9055.c
@@ -302,7 +302,9 @@ static int da9055_rtc_probe(struct platform_device *pdev)
}
alm_irq = platform_get_irq_byname(pdev, "ALM");
- alm_irq = regmap_irq_get_virq(rtc->da9055->irq_data, alm_irq);
+ if (alm_irq < 0)
+ return alm_irq;
+
ret = devm_request_threaded_irq(&pdev->dev, alm_irq, NULL,
da9055_rtc_alm_irq,
IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
--
1.7.0.4
^ permalink raw reply related [flat|nested] 25+ messages in thread
[parent not found: <cover.1391705989.git.Adam.Thomson.Opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>]
* [PATCH v2 8/8] regulator: da9055: Remove use of regmap_irq_get_virq()
[not found] ` <cover.1391705989.git.Adam.Thomson.Opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
@ 2014-02-06 18:03 ` Adam Thomson
2014-02-07 16:31 ` Mark Brown
0 siblings, 1 reply; 25+ messages in thread
From: Adam Thomson @ 2014-02-06 18:03 UTC (permalink / raw)
To: Mark Brown, Lee Jones
Cc: alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Linus Walleij,
Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
Signed-off-by: Adam Thomson <Adam.Thomson.Opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
---
drivers/regulator/da9055-regulator.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/drivers/regulator/da9055-regulator.c b/drivers/regulator/da9055-regulator.c
index d90f785..3b7a26c 100644
--- a/drivers/regulator/da9055-regulator.c
+++ b/drivers/regulator/da9055-regulator.c
@@ -637,7 +637,9 @@ static int da9055_regulator_probe(struct platform_device *pdev)
/* Only LDO 5 and 6 has got the over current interrupt */
if (pdev->id == DA9055_ID_LDO5 || pdev->id == DA9055_ID_LDO6) {
irq = platform_get_irq_byname(pdev, "REGULATOR");
- irq = regmap_irq_get_virq(da9055->irq_data, irq);
+ if (irq < 0)
+ return irq;
+
ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
da9055_ldo5_6_oc_irq,
IRQF_TRIGGER_HIGH |
--
1.7.0.4
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v2 8/8] regulator: da9055: Remove use of regmap_irq_get_virq()
2014-02-06 18:03 ` [PATCH v2 8/8] regulator: " Adam Thomson
@ 2014-02-07 16:31 ` Mark Brown
0 siblings, 0 replies; 25+ messages in thread
From: Mark Brown @ 2014-02-07 16:31 UTC (permalink / raw)
To: Adam Thomson
Cc: Lee Jones, alsa-devel, linux-kernel, devicetree, Rob Herring,
Linus Walleij, Dmitry Torokhov, Alessandro Zummo, Guenter Roeck
[-- Attachment #1: Type: text/plain, Size: 148 bytes --]
On Thu, Feb 06, 2014 at 06:03:21PM +0000, Adam Thomson wrote:
> Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Applied, thanks.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 25+ messages in thread