Re: [PATCH V1] mfd: da9063: Add device tree support

From: Lee Jones
Date: Mon Jan 19 2015 - 04:54:35 EST


On Wed, 14 Jan 2015, Steve Twiss wrote:

> From: Steve Twiss <stwiss.opensource@xxxxxxxxxxx>
>
> Add device tree support for DA9063 regulators; Real-Time Clock
> and Watchdog.
>
>
> Signed-off-by: Steve Twiss <stwiss.opensource@xxxxxxxxxxx>
>
> ---
> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/