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

Add device tree support for DA9063 regulators; Real-Time Clock
and Watchdog.


Signed-off-by: Steve Twiss <stwiss.opensou...@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
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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to