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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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 devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux