* [PATCH V1] mfd: da9063: Add device tree support
@ 2015-01-14 14:09 Steve Twiss
2015-01-19 9:54 ` Lee Jones
[not found] ` <201501141438.t0EEcMBg010491-GMeof6ifPvyPZR/jWPPeGKXmvbD0mHlG@public.gmane.org>
0 siblings, 2 replies; 4+ messages in thread
From: Steve Twiss @ 2015-01-14 14:09 UTC (permalink / raw)
To: Grant Likely, Ian Campbell, Kumar Gala, Lee Jones, Mark Rutland,
Pawel Moll, Rob Herring, Samuel Ortiz
Cc: DT, David Dajun Chen, LKML, Mark Brown, Philipp Zabel,
Support Opensource
From: Steve Twiss <stwiss.opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
Add device tree support for DA9063 regulators; Real-Time Clock
and Watchdog.
Signed-off-by: Steve Twiss <stwiss.opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
---
Checks performed with linux-next/v3.19-rc4/scripts/checkpatch.pl
da9063.txt total: 0 errors, 0 warnings, 94 lines checked
da9063-core.c total: 0 errors, 0 warnings, 192 lines checked
da9063-i2c.c total: 0 errors, 0 warnings, 277 lines checked
core.h total: 0 errors, 0 warnings, 99 lines checked
This patch applies against linux-next and v3.19-rc4
Documentation/devicetree/bindings/mfd/da9063.txt | 94 ++++++++++++++++++++++++
drivers/mfd/da9063-core.c | 2 +
drivers/mfd/da9063-i2c.c | 11 +++
include/linux/mfd/da9063/core.h | 1 +
4 files changed, 108 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mfd/da9063.txt
diff --git a/Documentation/devicetree/bindings/mfd/da9063.txt b/Documentation/devicetree/bindings/mfd/da9063.txt
new file mode 100644
index 0000000..ac26af4
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/da9063.txt
@@ -0,0 +1,94 @@
+* Dialog DA9063 Power Management Integrated Circuit (PMIC)
+
+DA9093 consists of a large and varied group of sub-devices (I2C Only):
+
+Device Supply Names Description
+------ ------------ -----------
+da9063-regulator : : LDOs & BUCKs
+da9063-rtc : : Real-Time Clock
+da9063-watchdog : : Watchdog
+
+======
+
+Required properties:
+
+- compatible : Should be "dlg,da9063-ca", "dlg,da9063-bb" or/and
+ "dlg,da9063-ad".
+- reg : Specifies the I2C slave address (this defaults to 0x58 but it can be
+ modified to match the chip's OTP settings).
+- interrupt-parent : Specifies the reference to the interrupt controller for
+ the DA9063.
+- interrupts : IRQ line information.
+- interrupt-controller
+
+Sub-nodes:
+
+- regulators : This node defines the settings for the LDOs and BUCKs. The
+ DA9063 regulators are bound using their names listed below:
+
+ bcore1 : BUCK CORE1
+ bcore2 : BUCK CORE2
+ bpro : BUCK PRO
+ bmem : BUCK MEM
+ bio : BUCK IO
+ bperi : BUCK PERI
+ ldo1 : LDO_1
+ ldo2 : LDO_2
+ ldo3 : LDO_3
+ ldo4 : LDO_4
+ ldo5 : LDO_5
+ ldo6 : LDO_6
+ ldo7 : LDO_7
+ ldo8 : LDO_8
+ ldo9 : LDO_9
+ ldo10 : LDO_10
+ ldo11 : LDO_11
+
+ The component follows the standard regulator framework and the bindings
+ details of individual regulator device can be found in:
+ Documentation/devicetree/bindings/regulator/regulator.txt
+
+- rtc : This node defines settings for the Real-Time Clock associated with
+ the DA9063. There are currently no entries in this binding, however
+ compatible = "dlg,da9063-rtc" should be added if a node is created.
+
+- watchdog : This node defines settings for the Watchdog timer associated
+ with the DA9063. There are currently no entries in this binding, however
+ compatible = "dlg,da9063-watchdog" should be added if a node is created.
+
+
+Example:
+
+ pmic0: da9063@58 {
+ compatible = "dlg,da9063-ca", "dlg,da9063-bb", "dlg,da9063-ad";
+ reg = <0x58>;
+ interrupt-parent = <&gpio6>;
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+ interrupt-controller;
+
+ rtc {
+ compatible = "dlg,da9063-rtc";
+ };
+
+ wdt {
+ compatible = "dlg,da9063-watchdog";
+ };
+
+ regulators {
+ DA9063_BCORE1: bcore1 {
+ regulator-name = "BCORE1";
+ regulator-min-microvolt = <300000>;
+ regulator-max-microvolt = <1570000>;
+ regulator-min-microamp = <500000>;
+ regulator-max-microamp = <2000000>;
+ regulator-boot-on;
+ };
+ DA9063_LDO11: ldo11 {
+ regulator-name = "LDO_11";
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <3600000>;
+ regulator-boot-on;
+ };
+ };
+ };
+
diff --git a/drivers/mfd/da9063-core.c b/drivers/mfd/da9063-core.c
index f38bc98..171ed7e 100644
--- a/drivers/mfd/da9063-core.c
+++ b/drivers/mfd/da9063-core.c
@@ -85,6 +85,7 @@ static const struct mfd_cell da9063_devs[] = {
.name = DA9063_DRVNAME_LEDS,
},
{
+ .of_compatible = "dlg,da9063-watchdog",
.name = DA9063_DRVNAME_WATCHDOG,
},
{
@@ -98,6 +99,7 @@ static const struct mfd_cell da9063_devs[] = {
.resources = da9063_onkey_resources,
},
{
+ .of_compatible = "dlg,da9063-rtc",
.name = DA9063_DRVNAME_RTC,
.num_resources = ARRAY_SIZE(da9063_rtc_resources),
.resources = da9063_rtc_resources,
diff --git a/drivers/mfd/da9063-i2c.c b/drivers/mfd/da9063-i2c.c
index 21fd8d9..c4f5351 100644
--- a/drivers/mfd/da9063-i2c.c
+++ b/drivers/mfd/da9063-i2c.c
@@ -25,6 +25,9 @@
#include <linux/mfd/da9063/pdata.h>
#include <linux/mfd/da9063/registers.h>
+#include <linux/of.h>
+#include <linux/regulator/of_regulator.h>
+
static const struct regmap_range da9063_ad_readable_ranges[] = {
{
.range_min = DA9063_REG_PAGE_CON,
@@ -203,6 +206,13 @@ static struct regmap_config da9063_regmap_config = {
.cache_type = REGCACHE_RBTREE,
};
+static const struct of_device_id da9063_dt_ids[] = {
+ { .compatible = "dlg,da9063-ad", },
+ { .compatible = "dlg,da9063-bb", },
+ { .compatible = "dlg,da9063-ca", },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, da9063_dt_ids);
static int da9063_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id)
{
@@ -257,6 +267,7 @@ static struct i2c_driver da9063_i2c_driver = {
.driver = {
.name = "da9063",
.owner = THIS_MODULE,
+ .of_match_table = of_match_ptr(da9063_dt_ids),
},
.probe = da9063_i2c_probe,
.remove = da9063_i2c_remove,
diff --git a/include/linux/mfd/da9063/core.h b/include/linux/mfd/da9063/core.h
index b92a326..79f4d82 100644
--- a/include/linux/mfd/da9063/core.h
+++ b/include/linux/mfd/da9063/core.h
@@ -36,6 +36,7 @@ enum da9063_models {
enum da9063_variant_codes {
PMIC_DA9063_AD = 0x3,
PMIC_DA9063_BB = 0x5,
+ PMIC_DA9063_CA = 0x6,
};
/* Interrupts */
--
end-of-patch for PATCH V1
--
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] 4+ messages in thread
* Re: [PATCH V1] mfd: da9063: Add device tree support
2015-01-14 14:09 [PATCH V1] mfd: da9063: Add device tree support Steve Twiss
@ 2015-01-19 9:54 ` Lee Jones
2015-01-19 14:22 ` Opensource [Steve Twiss]
[not found] ` <201501141438.t0EEcMBg010491-GMeof6ifPvyPZR/jWPPeGKXmvbD0mHlG@public.gmane.org>
1 sibling, 1 reply; 4+ messages in thread
From: Lee Jones @ 2015-01-19 9:54 UTC (permalink / raw)
To: Steve Twiss
Cc: Grant Likely, Ian Campbell, Kumar Gala, Mark Rutland, Pawel Moll,
Rob Herring, Samuel Ortiz, DT, David Dajun Chen, LKML, Mark Brown,
Philipp Zabel, Support Opensource
On Wed, 14 Jan 2015, Steve Twiss wrote:
> From: Steve Twiss <stwiss.opensource@diasemi.com>
>
> Add device tree support for DA9063 regulators; Real-Time Clock
> and Watchdog.
>
>
> Signed-off-by: Steve Twiss <stwiss.opensource@diasemi.com>
>
> ---
> Checks performed with linux-next/v3.19-rc4/scripts/checkpatch.pl
> da9063.txt total: 0 errors, 0 warnings, 94 lines checked
> da9063-core.c total: 0 errors, 0 warnings, 192 lines checked
> da9063-i2c.c total: 0 errors, 0 warnings, 277 lines checked
> core.h total: 0 errors, 0 warnings, 99 lines checked
There is no need to put this in here really. It is assumed that
checkpatch.pl has been run and that no warnings/errors exists.
> This patch applies against linux-next and v3.19-rc4
>
>
>
> Documentation/devicetree/bindings/mfd/da9063.txt | 94 ++++++++++++++++++++++++
> drivers/mfd/da9063-core.c | 2 +
> drivers/mfd/da9063-i2c.c | 11 +++
> include/linux/mfd/da9063/core.h | 1 +
> 4 files changed, 108 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mfd/da9063.txt
>
> diff --git a/Documentation/devicetree/bindings/mfd/da9063.txt b/Documentation/devicetree/bindings/mfd/da9063.txt
> new file mode 100644
> index 0000000..ac26af4
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/da9063.txt
> @@ -0,0 +1,94 @@
> +* Dialog DA9063 Power Management Integrated Circuit (PMIC)
> +
> +DA9093 consists of a large and varied group of sub-devices (I2C Only):
> +
> +Device Supply Names Description
> +------ ------------ -----------
> +da9063-regulator : : LDOs & BUCKs
> +da9063-rtc : : Real-Time Clock
> +da9063-watchdog : : Watchdog
> +
> +======
> +
> +Required properties:
> +
> +- compatible : Should be "dlg,da9063-ca", "dlg,da9063-bb" or/and
> + "dlg,da9063-ad".
What are 'ca', 'bb' and 'ad'?
> +- reg : Specifies the I2C slave address (this defaults to 0x58 but it can be
> + modified to match the chip's OTP settings).
> +- interrupt-parent : Specifies the reference to the interrupt controller for
> + the DA9063.
> +- interrupts : IRQ line information.
> +- interrupt-controller
> +
> +Sub-nodes:
> +
> +- regulators : This node defines the settings for the LDOs and BUCKs. The
> + DA9063 regulators are bound using their names listed below:
> +
> + bcore1 : BUCK CORE1
> + bcore2 : BUCK CORE2
> + bpro : BUCK PRO
> + bmem : BUCK MEM
> + bio : BUCK IO
> + bperi : BUCK PERI
> + ldo1 : LDO_1
> + ldo2 : LDO_2
> + ldo3 : LDO_3
> + ldo4 : LDO_4
> + ldo5 : LDO_5
> + ldo6 : LDO_6
> + ldo7 : LDO_7
> + ldo8 : LDO_8
> + ldo9 : LDO_9
> + ldo10 : LDO_10
> + ldo11 : LDO_11
> +
> + The component follows the standard regulator framework and the bindings
> + details of individual regulator device can be found in:
> + Documentation/devicetree/bindings/regulator/regulator.txt
> +
> +- rtc : This node defines settings for the Real-Time Clock associated with
> + the DA9063. There are currently no entries in this binding, however
> + compatible = "dlg,da9063-rtc" should be added if a node is created.
> +
> +- watchdog : This node defines settings for the Watchdog timer associated
> + with the DA9063. There are currently no entries in this binding, however
> + compatible = "dlg,da9063-watchdog" should be added if a node is created.
> +
> +
> +Example:
> +
> + pmic0: da9063@58 {
> + compatible = "dlg,da9063-ca", "dlg,da9063-bb", "dlg,da9063-ad";
> + reg = <0x58>;
> + interrupt-parent = <&gpio6>;
> + interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
> + interrupt-controller;
> +
> + rtc {
> + compatible = "dlg,da9063-rtc";
> + };
> +
> + wdt {
> + compatible = "dlg,da9063-watchdog";
> + };
> +
> + regulators {
> + DA9063_BCORE1: bcore1 {
> + regulator-name = "BCORE1";
> + regulator-min-microvolt = <300000>;
> + regulator-max-microvolt = <1570000>;
> + regulator-min-microamp = <500000>;
> + regulator-max-microamp = <2000000>;
> + regulator-boot-on;
> + };
> + DA9063_LDO11: ldo11 {
> + regulator-name = "LDO_11";
> + regulator-min-microvolt = <900000>;
> + regulator-max-microvolt = <3600000>;
> + regulator-boot-on;
> + };
> + };
> + };
> +
> diff --git a/drivers/mfd/da9063-core.c b/drivers/mfd/da9063-core.c
> index f38bc98..171ed7e 100644
> --- a/drivers/mfd/da9063-core.c
> +++ b/drivers/mfd/da9063-core.c
> @@ -85,6 +85,7 @@ static const struct mfd_cell da9063_devs[] = {
> .name = DA9063_DRVNAME_LEDS,
> },
> {
> + .of_compatible = "dlg,da9063-watchdog",
Can you put the of_compatible attribute at the end of the structure
please?
> .name = DA9063_DRVNAME_WATCHDOG,
> },
> {
> @@ -98,6 +99,7 @@ static const struct mfd_cell da9063_devs[] = {
> .resources = da9063_onkey_resources,
> },
> {
> + .of_compatible = "dlg,da9063-rtc",
Same here.
> .name = DA9063_DRVNAME_RTC,
> .num_resources = ARRAY_SIZE(da9063_rtc_resources),
> .resources = da9063_rtc_resources,
> diff --git a/drivers/mfd/da9063-i2c.c b/drivers/mfd/da9063-i2c.c
> index 21fd8d9..c4f5351 100644
> --- a/drivers/mfd/da9063-i2c.c
> +++ b/drivers/mfd/da9063-i2c.c
> @@ -25,6 +25,9 @@
> #include <linux/mfd/da9063/pdata.h>
> #include <linux/mfd/da9063/registers.h>
>
> +#include <linux/of.h>
> +#include <linux/regulator/of_regulator.h>
> +
> static const struct regmap_range da9063_ad_readable_ranges[] = {
> {
> .range_min = DA9063_REG_PAGE_CON,
> @@ -203,6 +206,13 @@ static struct regmap_config da9063_regmap_config = {
> .cache_type = REGCACHE_RBTREE,
> };
>
> +static const struct of_device_id da9063_dt_ids[] = {
> + { .compatible = "dlg,da9063-ad", },
> + { .compatible = "dlg,da9063-bb", },
> + { .compatible = "dlg,da9063-ca", },
Why is there a need to differientiae between 'ad', 'bb' and 'ca'
(whatever they are)?
> + { /* sentinel */ }
Nit: You can drop this comment.
> +};
> +MODULE_DEVICE_TABLE(of, da9063_dt_ids);
> static int da9063_i2c_probe(struct i2c_client *i2c,
> const struct i2c_device_id *id)
> {
> @@ -257,6 +267,7 @@ static struct i2c_driver da9063_i2c_driver = {
> .driver = {
> .name = "da9063",
> .owner = THIS_MODULE,
> + .of_match_table = of_match_ptr(da9063_dt_ids),
> },
> .probe = da9063_i2c_probe,
> .remove = da9063_i2c_remove,
> diff --git a/include/linux/mfd/da9063/core.h b/include/linux/mfd/da9063/core.h
> index b92a326..79f4d82 100644
> --- a/include/linux/mfd/da9063/core.h
> +++ b/include/linux/mfd/da9063/core.h
> @@ -36,6 +36,7 @@ enum da9063_models {
> enum da9063_variant_codes {
> PMIC_DA9063_AD = 0x3,
> PMIC_DA9063_BB = 0x5,
> + PMIC_DA9063_CA = 0x6,
> };
>
> /* Interrupts */
--
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] 4+ messages in thread
* Re: [PATCH V1] mfd: da9063: Add device tree support
[not found] ` <201501141438.t0EEcMBg010491-GMeof6ifPvyPZR/jWPPeGKXmvbD0mHlG@public.gmane.org>
@ 2015-01-19 9:56 ` Lee Jones
0 siblings, 0 replies; 4+ messages in thread
From: Lee Jones @ 2015-01-19 9:56 UTC (permalink / raw)
To: Steve Twiss
Cc: Grant Likely, Ian Campbell, Kumar Gala, Mark Rutland, Pawel Moll,
Rob Herring, Samuel Ortiz, DT, David Dajun Chen, LKML, Mark Brown,
Philipp Zabel, Support Opensource
On Wed, 14 Jan 2015, Steve Twiss wrote:
> From: Steve Twiss <stwiss.opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
>
> Add device tree support for DA9063 regulators; Real-Time Clock
> and Watchdog.
>
>
> Signed-off-by: Steve Twiss <stwiss.opensource-WBD+wuPFNBhBDgjK7y7TUQ@public.gmane.org>
>
> ---
> Checks performed with linux-next/v3.19-rc4/scripts/checkpatch.pl
> da9063.txt total: 0 errors, 0 warnings, 94 lines checked
> da9063-core.c total: 0 errors, 0 warnings, 192 lines checked
> da9063-i2c.c total: 0 errors, 0 warnings, 277 lines checked
> core.h total: 0 errors, 0 warnings, 99 lines checked
> This patch applies against linux-next and v3.19-rc4
>
>
>
> Documentation/devicetree/bindings/mfd/da9063.txt | 94 ++++++++++++++++++++++++
Ah, and this should be in a separate patch.
--
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] 4+ messages in thread
* RE: [PATCH V1] mfd: da9063: Add device tree support
2015-01-19 9:54 ` Lee Jones
@ 2015-01-19 14:22 ` Opensource [Steve Twiss]
0 siblings, 0 replies; 4+ messages in thread
From: Opensource [Steve Twiss] @ 2015-01-19 14:22 UTC (permalink / raw)
To: Lee Jones
Cc: Grant Likely, Ian Campbell, Kumar Gala, Mark Rutland, Pawel Moll,
Rob Herring, Samuel Ortiz, DT, David Dajun Chen, LKML, Mark Brown,
Philipp Zabel, Support Opensource
On 19 January 2015 09:54, Lee Jones wrote:
> On Wed, 14 Jan 2015, Steve Twiss wrote:
> > From: Steve Twiss <stwiss.opensource@diasemi.com>
> >
> > ---
> > Checks performed with linux-next/v3.19-rc4/scripts/checkpatch.pl
> > da9063.txt total: 0 errors, 0 warnings, 94 lines checked
> > da9063-core.c total: 0 errors, 0 warnings, 192 lines checked
> > da9063-i2c.c total: 0 errors, 0 warnings, 277 lines checked
> > core.h total: 0 errors, 0 warnings, 99 lines checked
>
> There is no need to put this in here really. It is assumed that
> checkpatch.pl has been run and that no warnings/errors exists.
>
ok -- I will remove this in future
[...]
> > +Required properties:
> > +
> > +- compatible : Should be "dlg,da9063-ca", "dlg,da9063-bb" or/and
> > + "dlg,da9063-ad".
>
> What are 'ca', 'bb' and 'ad'?
There are multiple variants of the DA9063 chip -- historical support.
The AD chip has a different register map to BB and CA silicon and the
variant information is read from the chip at run-time and used to set
up the correct regmap_config tables during initialisation.
[...]
> > +++ b/drivers/mfd/da9063-core.c
> > @@ -85,6 +85,7 @@ static const struct mfd_cell da9063_devs[] = {
> > .name = DA9063_DRVNAME_LEDS,
> > },
> > {
> > + .of_compatible = "dlg,da9063-watchdog",
>
> Can you put the of_compatible attribute at the end of the structure
> please?
>
> > .name = DA9063_DRVNAME_WATCHDOG,
> > },
> > {
> > @@ -98,6 +99,7 @@ static const struct mfd_cell da9063_devs[] = {
> > .resources = da9063_onkey_resources,
> > },
> > {
> > + .of_compatible = "dlg,da9063-rtc",
>
> Same here.
Sure.
[...]
> >
> > +static const struct of_device_id da9063_dt_ids[] = {
> > + { .compatible = "dlg,da9063-ad", },
> > + { .compatible = "dlg,da9063-bb", },
> > + { .compatible = "dlg,da9063-ca", },
>
> Why is there a need to differientiae between 'ad', 'bb' and 'ca'
> (whatever they are)?
As described above.
> > + { /* sentinel */ }
>
> Nit: You can drop this comment.
ok.
[...]
I will also make changes to separate into multiple patches
as described in https://lkml.org/lkml/2015/1/19/149
Will re-send as patch V2 ...
Regards,
Steve
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-01-19 14:22 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-14 14:09 [PATCH V1] mfd: da9063: Add device tree support Steve Twiss
2015-01-19 9:54 ` Lee Jones
2015-01-19 14:22 ` Opensource [Steve Twiss]
[not found] ` <201501141438.t0EEcMBg010491-GMeof6ifPvyPZR/jWPPeGKXmvbD0mHlG@public.gmane.org>
2015-01-19 9:56 ` Lee Jones
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).