From: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
To: Lee Jones <lee.jones@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org, robh+dt@kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
rtc-linux@googlegroups.com, sameo@linux.intel.com,
a.zummo@towertech.it, alexandre.belloni@free-electrons.com,
Chao Xie <chao.xie@marvell.com>
Subject: [rtc-linux] Re: [PATCH 1/4] mfd: 88pm800: add device tree support
Date: Tue, 16 Jun 2015 13:22:13 +0530 [thread overview]
Message-ID: <557FD5AD.5020405@linaro.org> (raw)
In-Reply-To: <20150601083835.GE3329@x1>
On Monday 01 June 2015 02:08 PM, Lee Jones wrote:
> On Sat, 30 May 2015, Vaibhav Hiremath wrote:
>
Thanks for your review. and sorry for delayed response.
>> Add DT support to the 88pm800 driver along with below properties
>> - marvell,88pm800-irq-write-clear :
>> Idicates whether interrupt status is cleared by write
>>
>> Also, creates the DT binding text file,
>> Documentation/devicetree/bindings/mfd/88pm800.txt
>>
>> Signed-off-by: Chao Xie <chao.xie@marvell.com>
>> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
>> ---
>> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++++++++
>> drivers/mfd/88pm800.c | 39 ++++++++++++++++
>
> These should be submitted separately.
>
Ok, will separate it in next version.
>> 2 files changed, 96 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.txt
>>
>> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Documentation/devicetree/bindings/mfd/88pm800.txt
>> new file mode 100644
>> index 0000000..094951b
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/mfd/88pm800.txt
>> @@ -0,0 +1,57 @@
>> +* Marvell 88PM800 Power Management IC
>> +
>> +Required parent device properties:
>> +- compatible : "marvell,88pm800"
>> +- reg : the I2C slave address for the 88pm800 chip
>> +- interrupts : IRQ line for the 88pm800 chip
>> +- interrupt-controller: describes the 88pm800 as an interrupt controller
>> +- #interrupt-cells : should be 1.
>> + - The cell is the 88pm800 local IRQ number
>> +
>> +Optional parent device properties:
>> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is cleared by write
>
> Drop the device name. These bindings should be as generic as possible.
>
OK, how about simply
"mfd-irq_clr_on_write"
> Also describe what the absence of the property means.
>
Ok.
>> +88pm800 consists of a large and varied group of sub-devices:
>
> 3?
>
I have explicitly mentioned in note that more device list will follow.
I just wanted to add entries as and when we add/enable driver support.
>> +Device Supply Names Description
>> +------ ------------ -----------
>> +88pm80x-onkey : : On key
>> +88pm80x-rtc : : RTC
>> +88pm80x : : Regulators
>
> Surely regulators is 88pm80x-regulator, no?
>
did not understand what change is expected here.
>> +Note: More device list will follow
>> +
>> +Example:
>> +
>> + pmic: 88pm800@30 {
>> + compatible = "marvell,88pm800";
>> + reg = <0x30>;
>> + interrupts = <0 77 0x4>;
>
> Please use the #defines in include/dt-bindings/
>
Ok.
>> + interrupt-parent = <&gic>;
>> + interrupt-controller;
>> + #interrupt-cells = <1>;
>> +
>> + marvell,88pm800-irq-write-clr;
>> +
>> + regulators {
>> + compatible = "marvell,88pm80x-regulator";
>> +
>> + buck1a: BUCK1A {
>> + regulator-compatible = "88PM800-BUCK1A";
>> + regulator-min-microvolt = <600000>;
>> + regulator-max-microvolt = <1800000>;
>> + regulator-boot-on;
>> + regulator-always-on;
>> + };
>> + ldo1: LDO1 {
>> + regulator-compatible = "88PM800-LDO1";
>> + regulator-min-microvolt = <1700000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-boot-on;
>> + regulator-always-on;
>> + };
>> + };
>
> '\n' here.
>
>> + rtc {
>> + compatible = "marvell,88pm80x-rtc";
>> + };
>> + };
>> diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c
>> index 841717a..06ee058 100644
>> --- a/drivers/mfd/88pm800.c
>> +++ b/drivers/mfd/88pm800.c
>> @@ -27,6 +27,7 @@
>> #include <linux/mfd/core.h>
>> #include <linux/mfd/88pm80x.h>
>> #include <linux/slab.h>
>> +#include <linux/of_device.h>
>>
>> /* Interrupt Registers */
>> #define PM800_INT_STATUS1 (0x05)
>> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = {
>> };
>> MODULE_DEVICE_TABLE(i2c, pm80x_id_table);
>>
>> +static const struct of_device_id pm80x_of_match_table[] = {
>> + { .compatible = "marvell,88pm800", },
>> + {},
>> +};
>> +
>> static struct resource rtc_resources[] = {
>> {
>> .name = "88pm80x-rtc",
>> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] = {
>> static struct mfd_cell rtc_devs[] = {
>> {
>> .name = "88pm80x-rtc",
>> + .of_compatible = "marvell,88pm80x-rtc",
>> .num_resources = ARRAY_SIZE(rtc_resources),
>> .resources = &rtc_resources[0],
>> .id = -1,
>> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] = {
>> static const struct mfd_cell onkey_devs[] = {
>> {
>> .name = "88pm80x-onkey",
>> + .of_compatible = "marvell,88pm80x-onkey",
>> .num_resources = 1,
>> .resources = &onkey_resources[0],
>> .id = -1,
>> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] = {
>> static const struct mfd_cell regulator_devs[] = {
>> {
>> .name = "88pm80x-regulator",
>> + .of_compatible = "marvell,88pm80x-regulator",
>> .id = -1,
>> },
>> };
>> @@ -538,14 +547,43 @@ out:
>> return ret;
>> }
>>
>> +static int pm800_probe_dt(struct device_node *np,
>> + struct device *dev,
>
> Do you even use dev?
>
Yeah, not used. Will remove it.
>> + struct pm80x_platform_data *pdata)
>> +{
>> + pdata->irq_mode =
>> + of_property_read_bool(np, "marvell,88pm800-irq-write-clear");
>
> You write a new function for this?
>
Just felt clean this way.
I am ok to merge it in parent function.
>> + return 0;
>> +}
>> +
>> +
>
> Superfluous '\n'.
>
>> static int pm800_probe(struct i2c_client *client,
>> const struct i2c_device_id *id)
>> {
>> int ret = 0;
>> struct pm80x_chip *chip;
>> struct pm80x_platform_data *pdata = dev_get_platdata(&client->dev);
>> + struct device_node *node = client->dev.of_node;
>
> It's more common to use 'np'.
>
ok.
>> struct pm80x_subchip *subchip;
>>
>> + if (!pdata && !node) {
>> + dev_err(&client->dev,
>> + "pm80x requires platform data or of_node\n");
>> + return -EINVAL;
>> + }
>> +
>> + if (!pdata) {
>> + pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);
>> + if (!pdata) {
>> + dev_err(&client->dev, "failed to allocaate memory\n");
>> + return -ENOMEM;
>> + }
>> + ret = pm800_probe_dt(node, &client->dev, pdata);
>> + if (ret)
>> + return ret;
>> + }
>
> All this for a single attribute? Please simplify.
>
Ok, let me kill probe_dt function here.
Thanks,
Vaibhav
--
--
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
---
You received this message because you are subscribed to the Google Groups "rtc-linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
WARNING: multiple messages have this Message-ID (diff)
From: vaibhav.hiremath@linaro.org (Vaibhav Hiremath)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/4] mfd: 88pm800: add device tree support
Date: Tue, 16 Jun 2015 13:22:13 +0530 [thread overview]
Message-ID: <557FD5AD.5020405@linaro.org> (raw)
In-Reply-To: <20150601083835.GE3329@x1>
On Monday 01 June 2015 02:08 PM, Lee Jones wrote:
> On Sat, 30 May 2015, Vaibhav Hiremath wrote:
>
Thanks for your review. and sorry for delayed response.
>> Add DT support to the 88pm800 driver along with below properties
>> - marvell,88pm800-irq-write-clear :
>> Idicates whether interrupt status is cleared by write
>>
>> Also, creates the DT binding text file,
>> Documentation/devicetree/bindings/mfd/88pm800.txt
>>
>> Signed-off-by: Chao Xie <chao.xie@marvell.com>
>> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
>> ---
>> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++++++++
>> drivers/mfd/88pm800.c | 39 ++++++++++++++++
>
> These should be submitted separately.
>
Ok, will separate it in next version.
>> 2 files changed, 96 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.txt
>>
>> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Documentation/devicetree/bindings/mfd/88pm800.txt
>> new file mode 100644
>> index 0000000..094951b
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/mfd/88pm800.txt
>> @@ -0,0 +1,57 @@
>> +* Marvell 88PM800 Power Management IC
>> +
>> +Required parent device properties:
>> +- compatible : "marvell,88pm800"
>> +- reg : the I2C slave address for the 88pm800 chip
>> +- interrupts : IRQ line for the 88pm800 chip
>> +- interrupt-controller: describes the 88pm800 as an interrupt controller
>> +- #interrupt-cells : should be 1.
>> + - The cell is the 88pm800 local IRQ number
>> +
>> +Optional parent device properties:
>> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is cleared by write
>
> Drop the device name. These bindings should be as generic as possible.
>
OK, how about simply
"mfd-irq_clr_on_write"
> Also describe what the absence of the property means.
>
Ok.
>> +88pm800 consists of a large and varied group of sub-devices:
>
> 3?
>
I have explicitly mentioned in note that more device list will follow.
I just wanted to add entries as and when we add/enable driver support.
>> +Device Supply Names Description
>> +------ ------------ -----------
>> +88pm80x-onkey : : On key
>> +88pm80x-rtc : : RTC
>> +88pm80x : : Regulators
>
> Surely regulators is 88pm80x-regulator, no?
>
did not understand what change is expected here.
>> +Note: More device list will follow
>> +
>> +Example:
>> +
>> + pmic: 88pm800 at 30 {
>> + compatible = "marvell,88pm800";
>> + reg = <0x30>;
>> + interrupts = <0 77 0x4>;
>
> Please use the #defines in include/dt-bindings/
>
Ok.
>> + interrupt-parent = <&gic>;
>> + interrupt-controller;
>> + #interrupt-cells = <1>;
>> +
>> + marvell,88pm800-irq-write-clr;
>> +
>> + regulators {
>> + compatible = "marvell,88pm80x-regulator";
>> +
>> + buck1a: BUCK1A {
>> + regulator-compatible = "88PM800-BUCK1A";
>> + regulator-min-microvolt = <600000>;
>> + regulator-max-microvolt = <1800000>;
>> + regulator-boot-on;
>> + regulator-always-on;
>> + };
>> + ldo1: LDO1 {
>> + regulator-compatible = "88PM800-LDO1";
>> + regulator-min-microvolt = <1700000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-boot-on;
>> + regulator-always-on;
>> + };
>> + };
>
> '\n' here.
>
>> + rtc {
>> + compatible = "marvell,88pm80x-rtc";
>> + };
>> + };
>> diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c
>> index 841717a..06ee058 100644
>> --- a/drivers/mfd/88pm800.c
>> +++ b/drivers/mfd/88pm800.c
>> @@ -27,6 +27,7 @@
>> #include <linux/mfd/core.h>
>> #include <linux/mfd/88pm80x.h>
>> #include <linux/slab.h>
>> +#include <linux/of_device.h>
>>
>> /* Interrupt Registers */
>> #define PM800_INT_STATUS1 (0x05)
>> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = {
>> };
>> MODULE_DEVICE_TABLE(i2c, pm80x_id_table);
>>
>> +static const struct of_device_id pm80x_of_match_table[] = {
>> + { .compatible = "marvell,88pm800", },
>> + {},
>> +};
>> +
>> static struct resource rtc_resources[] = {
>> {
>> .name = "88pm80x-rtc",
>> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] = {
>> static struct mfd_cell rtc_devs[] = {
>> {
>> .name = "88pm80x-rtc",
>> + .of_compatible = "marvell,88pm80x-rtc",
>> .num_resources = ARRAY_SIZE(rtc_resources),
>> .resources = &rtc_resources[0],
>> .id = -1,
>> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] = {
>> static const struct mfd_cell onkey_devs[] = {
>> {
>> .name = "88pm80x-onkey",
>> + .of_compatible = "marvell,88pm80x-onkey",
>> .num_resources = 1,
>> .resources = &onkey_resources[0],
>> .id = -1,
>> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] = {
>> static const struct mfd_cell regulator_devs[] = {
>> {
>> .name = "88pm80x-regulator",
>> + .of_compatible = "marvell,88pm80x-regulator",
>> .id = -1,
>> },
>> };
>> @@ -538,14 +547,43 @@ out:
>> return ret;
>> }
>>
>> +static int pm800_probe_dt(struct device_node *np,
>> + struct device *dev,
>
> Do you even use dev?
>
Yeah, not used. Will remove it.
>> + struct pm80x_platform_data *pdata)
>> +{
>> + pdata->irq_mode =
>> + of_property_read_bool(np, "marvell,88pm800-irq-write-clear");
>
> You write a new function for this?
>
Just felt clean this way.
I am ok to merge it in parent function.
>> + return 0;
>> +}
>> +
>> +
>
> Superfluous '\n'.
>
>> static int pm800_probe(struct i2c_client *client,
>> const struct i2c_device_id *id)
>> {
>> int ret = 0;
>> struct pm80x_chip *chip;
>> struct pm80x_platform_data *pdata = dev_get_platdata(&client->dev);
>> + struct device_node *node = client->dev.of_node;
>
> It's more common to use 'np'.
>
ok.
>> struct pm80x_subchip *subchip;
>>
>> + if (!pdata && !node) {
>> + dev_err(&client->dev,
>> + "pm80x requires platform data or of_node\n");
>> + return -EINVAL;
>> + }
>> +
>> + if (!pdata) {
>> + pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);
>> + if (!pdata) {
>> + dev_err(&client->dev, "failed to allocaate memory\n");
>> + return -ENOMEM;
>> + }
>> + ret = pm800_probe_dt(node, &client->dev, pdata);
>> + if (ret)
>> + return ret;
>> + }
>
> All this for a single attribute? Please simplify.
>
Ok, let me kill probe_dt function here.
Thanks,
Vaibhav
WARNING: multiple messages have this Message-ID (diff)
From: Vaibhav Hiremath <vaibhav.hiremath-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
rtc-linux-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
a.zummo-BfzFCNDTiLLj+vYz1yj4TQ@public.gmane.org,
alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org,
Chao Xie <chao.xie-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>
Subject: Re: [PATCH 1/4] mfd: 88pm800: add device tree support
Date: Tue, 16 Jun 2015 13:22:13 +0530 [thread overview]
Message-ID: <557FD5AD.5020405@linaro.org> (raw)
In-Reply-To: <20150601083835.GE3329@x1>
On Monday 01 June 2015 02:08 PM, Lee Jones wrote:
> On Sat, 30 May 2015, Vaibhav Hiremath wrote:
>
Thanks for your review. and sorry for delayed response.
>> Add DT support to the 88pm800 driver along with below properties
>> - marvell,88pm800-irq-write-clear :
>> Idicates whether interrupt status is cleared by write
>>
>> Also, creates the DT binding text file,
>> Documentation/devicetree/bindings/mfd/88pm800.txt
>>
>> Signed-off-by: Chao Xie <chao.xie-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>
>> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>> ---
>> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++++++++
>> drivers/mfd/88pm800.c | 39 ++++++++++++++++
>
> These should be submitted separately.
>
Ok, will separate it in next version.
>> 2 files changed, 96 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.txt
>>
>> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Documentation/devicetree/bindings/mfd/88pm800.txt
>> new file mode 100644
>> index 0000000..094951b
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/mfd/88pm800.txt
>> @@ -0,0 +1,57 @@
>> +* Marvell 88PM800 Power Management IC
>> +
>> +Required parent device properties:
>> +- compatible : "marvell,88pm800"
>> +- reg : the I2C slave address for the 88pm800 chip
>> +- interrupts : IRQ line for the 88pm800 chip
>> +- interrupt-controller: describes the 88pm800 as an interrupt controller
>> +- #interrupt-cells : should be 1.
>> + - The cell is the 88pm800 local IRQ number
>> +
>> +Optional parent device properties:
>> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is cleared by write
>
> Drop the device name. These bindings should be as generic as possible.
>
OK, how about simply
"mfd-irq_clr_on_write"
> Also describe what the absence of the property means.
>
Ok.
>> +88pm800 consists of a large and varied group of sub-devices:
>
> 3?
>
I have explicitly mentioned in note that more device list will follow.
I just wanted to add entries as and when we add/enable driver support.
>> +Device Supply Names Description
>> +------ ------------ -----------
>> +88pm80x-onkey : : On key
>> +88pm80x-rtc : : RTC
>> +88pm80x : : Regulators
>
> Surely regulators is 88pm80x-regulator, no?
>
did not understand what change is expected here.
>> +Note: More device list will follow
>> +
>> +Example:
>> +
>> + pmic: 88pm800@30 {
>> + compatible = "marvell,88pm800";
>> + reg = <0x30>;
>> + interrupts = <0 77 0x4>;
>
> Please use the #defines in include/dt-bindings/
>
Ok.
>> + interrupt-parent = <&gic>;
>> + interrupt-controller;
>> + #interrupt-cells = <1>;
>> +
>> + marvell,88pm800-irq-write-clr;
>> +
>> + regulators {
>> + compatible = "marvell,88pm80x-regulator";
>> +
>> + buck1a: BUCK1A {
>> + regulator-compatible = "88PM800-BUCK1A";
>> + regulator-min-microvolt = <600000>;
>> + regulator-max-microvolt = <1800000>;
>> + regulator-boot-on;
>> + regulator-always-on;
>> + };
>> + ldo1: LDO1 {
>> + regulator-compatible = "88PM800-LDO1";
>> + regulator-min-microvolt = <1700000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-boot-on;
>> + regulator-always-on;
>> + };
>> + };
>
> '\n' here.
>
>> + rtc {
>> + compatible = "marvell,88pm80x-rtc";
>> + };
>> + };
>> diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c
>> index 841717a..06ee058 100644
>> --- a/drivers/mfd/88pm800.c
>> +++ b/drivers/mfd/88pm800.c
>> @@ -27,6 +27,7 @@
>> #include <linux/mfd/core.h>
>> #include <linux/mfd/88pm80x.h>
>> #include <linux/slab.h>
>> +#include <linux/of_device.h>
>>
>> /* Interrupt Registers */
>> #define PM800_INT_STATUS1 (0x05)
>> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = {
>> };
>> MODULE_DEVICE_TABLE(i2c, pm80x_id_table);
>>
>> +static const struct of_device_id pm80x_of_match_table[] = {
>> + { .compatible = "marvell,88pm800", },
>> + {},
>> +};
>> +
>> static struct resource rtc_resources[] = {
>> {
>> .name = "88pm80x-rtc",
>> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] = {
>> static struct mfd_cell rtc_devs[] = {
>> {
>> .name = "88pm80x-rtc",
>> + .of_compatible = "marvell,88pm80x-rtc",
>> .num_resources = ARRAY_SIZE(rtc_resources),
>> .resources = &rtc_resources[0],
>> .id = -1,
>> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] = {
>> static const struct mfd_cell onkey_devs[] = {
>> {
>> .name = "88pm80x-onkey",
>> + .of_compatible = "marvell,88pm80x-onkey",
>> .num_resources = 1,
>> .resources = &onkey_resources[0],
>> .id = -1,
>> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] = {
>> static const struct mfd_cell regulator_devs[] = {
>> {
>> .name = "88pm80x-regulator",
>> + .of_compatible = "marvell,88pm80x-regulator",
>> .id = -1,
>> },
>> };
>> @@ -538,14 +547,43 @@ out:
>> return ret;
>> }
>>
>> +static int pm800_probe_dt(struct device_node *np,
>> + struct device *dev,
>
> Do you even use dev?
>
Yeah, not used. Will remove it.
>> + struct pm80x_platform_data *pdata)
>> +{
>> + pdata->irq_mode =
>> + of_property_read_bool(np, "marvell,88pm800-irq-write-clear");
>
> You write a new function for this?
>
Just felt clean this way.
I am ok to merge it in parent function.
>> + return 0;
>> +}
>> +
>> +
>
> Superfluous '\n'.
>
>> static int pm800_probe(struct i2c_client *client,
>> const struct i2c_device_id *id)
>> {
>> int ret = 0;
>> struct pm80x_chip *chip;
>> struct pm80x_platform_data *pdata = dev_get_platdata(&client->dev);
>> + struct device_node *node = client->dev.of_node;
>
> It's more common to use 'np'.
>
ok.
>> struct pm80x_subchip *subchip;
>>
>> + if (!pdata && !node) {
>> + dev_err(&client->dev,
>> + "pm80x requires platform data or of_node\n");
>> + return -EINVAL;
>> + }
>> +
>> + if (!pdata) {
>> + pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);
>> + if (!pdata) {
>> + dev_err(&client->dev, "failed to allocaate memory\n");
>> + return -ENOMEM;
>> + }
>> + ret = pm800_probe_dt(node, &client->dev, pdata);
>> + if (ret)
>> + return ret;
>> + }
>
> All this for a single attribute? Please simplify.
>
Ok, let me kill probe_dt function here.
Thanks,
Vaibhav
--
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
WARNING: multiple messages have this Message-ID (diff)
From: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
To: Lee Jones <lee.jones@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org, robh+dt@kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
rtc-linux@googlegroups.com, sameo@linux.intel.com,
a.zummo@towertech.it, alexandre.belloni@free-electrons.com,
Chao Xie <chao.xie@marvell.com>
Subject: Re: [PATCH 1/4] mfd: 88pm800: add device tree support
Date: Tue, 16 Jun 2015 13:22:13 +0530 [thread overview]
Message-ID: <557FD5AD.5020405@linaro.org> (raw)
In-Reply-To: <20150601083835.GE3329@x1>
On Monday 01 June 2015 02:08 PM, Lee Jones wrote:
> On Sat, 30 May 2015, Vaibhav Hiremath wrote:
>
Thanks for your review. and sorry for delayed response.
>> Add DT support to the 88pm800 driver along with below properties
>> - marvell,88pm800-irq-write-clear :
>> Idicates whether interrupt status is cleared by write
>>
>> Also, creates the DT binding text file,
>> Documentation/devicetree/bindings/mfd/88pm800.txt
>>
>> Signed-off-by: Chao Xie <chao.xie@marvell.com>
>> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
>> ---
>> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++++++++
>> drivers/mfd/88pm800.c | 39 ++++++++++++++++
>
> These should be submitted separately.
>
Ok, will separate it in next version.
>> 2 files changed, 96 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.txt
>>
>> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Documentation/devicetree/bindings/mfd/88pm800.txt
>> new file mode 100644
>> index 0000000..094951b
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/mfd/88pm800.txt
>> @@ -0,0 +1,57 @@
>> +* Marvell 88PM800 Power Management IC
>> +
>> +Required parent device properties:
>> +- compatible : "marvell,88pm800"
>> +- reg : the I2C slave address for the 88pm800 chip
>> +- interrupts : IRQ line for the 88pm800 chip
>> +- interrupt-controller: describes the 88pm800 as an interrupt controller
>> +- #interrupt-cells : should be 1.
>> + - The cell is the 88pm800 local IRQ number
>> +
>> +Optional parent device properties:
>> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is cleared by write
>
> Drop the device name. These bindings should be as generic as possible.
>
OK, how about simply
"mfd-irq_clr_on_write"
> Also describe what the absence of the property means.
>
Ok.
>> +88pm800 consists of a large and varied group of sub-devices:
>
> 3?
>
I have explicitly mentioned in note that more device list will follow.
I just wanted to add entries as and when we add/enable driver support.
>> +Device Supply Names Description
>> +------ ------------ -----------
>> +88pm80x-onkey : : On key
>> +88pm80x-rtc : : RTC
>> +88pm80x : : Regulators
>
> Surely regulators is 88pm80x-regulator, no?
>
did not understand what change is expected here.
>> +Note: More device list will follow
>> +
>> +Example:
>> +
>> + pmic: 88pm800@30 {
>> + compatible = "marvell,88pm800";
>> + reg = <0x30>;
>> + interrupts = <0 77 0x4>;
>
> Please use the #defines in include/dt-bindings/
>
Ok.
>> + interrupt-parent = <&gic>;
>> + interrupt-controller;
>> + #interrupt-cells = <1>;
>> +
>> + marvell,88pm800-irq-write-clr;
>> +
>> + regulators {
>> + compatible = "marvell,88pm80x-regulator";
>> +
>> + buck1a: BUCK1A {
>> + regulator-compatible = "88PM800-BUCK1A";
>> + regulator-min-microvolt = <600000>;
>> + regulator-max-microvolt = <1800000>;
>> + regulator-boot-on;
>> + regulator-always-on;
>> + };
>> + ldo1: LDO1 {
>> + regulator-compatible = "88PM800-LDO1";
>> + regulator-min-microvolt = <1700000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-boot-on;
>> + regulator-always-on;
>> + };
>> + };
>
> '\n' here.
>
>> + rtc {
>> + compatible = "marvell,88pm80x-rtc";
>> + };
>> + };
>> diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c
>> index 841717a..06ee058 100644
>> --- a/drivers/mfd/88pm800.c
>> +++ b/drivers/mfd/88pm800.c
>> @@ -27,6 +27,7 @@
>> #include <linux/mfd/core.h>
>> #include <linux/mfd/88pm80x.h>
>> #include <linux/slab.h>
>> +#include <linux/of_device.h>
>>
>> /* Interrupt Registers */
>> #define PM800_INT_STATUS1 (0x05)
>> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = {
>> };
>> MODULE_DEVICE_TABLE(i2c, pm80x_id_table);
>>
>> +static const struct of_device_id pm80x_of_match_table[] = {
>> + { .compatible = "marvell,88pm800", },
>> + {},
>> +};
>> +
>> static struct resource rtc_resources[] = {
>> {
>> .name = "88pm80x-rtc",
>> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] = {
>> static struct mfd_cell rtc_devs[] = {
>> {
>> .name = "88pm80x-rtc",
>> + .of_compatible = "marvell,88pm80x-rtc",
>> .num_resources = ARRAY_SIZE(rtc_resources),
>> .resources = &rtc_resources[0],
>> .id = -1,
>> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] = {
>> static const struct mfd_cell onkey_devs[] = {
>> {
>> .name = "88pm80x-onkey",
>> + .of_compatible = "marvell,88pm80x-onkey",
>> .num_resources = 1,
>> .resources = &onkey_resources[0],
>> .id = -1,
>> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] = {
>> static const struct mfd_cell regulator_devs[] = {
>> {
>> .name = "88pm80x-regulator",
>> + .of_compatible = "marvell,88pm80x-regulator",
>> .id = -1,
>> },
>> };
>> @@ -538,14 +547,43 @@ out:
>> return ret;
>> }
>>
>> +static int pm800_probe_dt(struct device_node *np,
>> + struct device *dev,
>
> Do you even use dev?
>
Yeah, not used. Will remove it.
>> + struct pm80x_platform_data *pdata)
>> +{
>> + pdata->irq_mode =
>> + of_property_read_bool(np, "marvell,88pm800-irq-write-clear");
>
> You write a new function for this?
>
Just felt clean this way.
I am ok to merge it in parent function.
>> + return 0;
>> +}
>> +
>> +
>
> Superfluous '\n'.
>
>> static int pm800_probe(struct i2c_client *client,
>> const struct i2c_device_id *id)
>> {
>> int ret = 0;
>> struct pm80x_chip *chip;
>> struct pm80x_platform_data *pdata = dev_get_platdata(&client->dev);
>> + struct device_node *node = client->dev.of_node;
>
> It's more common to use 'np'.
>
ok.
>> struct pm80x_subchip *subchip;
>>
>> + if (!pdata && !node) {
>> + dev_err(&client->dev,
>> + "pm80x requires platform data or of_node\n");
>> + return -EINVAL;
>> + }
>> +
>> + if (!pdata) {
>> + pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);
>> + if (!pdata) {
>> + dev_err(&client->dev, "failed to allocaate memory\n");
>> + return -ENOMEM;
>> + }
>> + ret = pm800_probe_dt(node, &client->dev, pdata);
>> + if (ret)
>> + return ret;
>> + }
>
> All this for a single attribute? Please simplify.
>
Ok, let me kill probe_dt function here.
Thanks,
Vaibhav
next prev parent reply other threads:[~2015-06-16 7:52 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-29 22:19 [rtc-linux] [PATCH 0/4] Add Device tree support for 88PM800 mfd and rtc driver Vaibhav Hiremath
2015-05-29 22:19 ` Vaibhav Hiremath
2015-05-29 22:19 ` Vaibhav Hiremath
2015-05-29 22:19 ` [rtc-linux] [PATCH 1/4] mfd: 88pm800: add device tree support Vaibhav Hiremath
2015-05-29 22:19 ` Vaibhav Hiremath
2015-05-29 22:19 ` Vaibhav Hiremath
2015-05-29 22:19 ` Vaibhav Hiremath
2015-06-01 8:38 ` [rtc-linux] " Lee Jones
2015-06-01 8:38 ` Lee Jones
2015-06-01 8:38 ` Lee Jones
2015-06-01 8:38 ` Lee Jones
2015-06-16 7:52 ` Vaibhav Hiremath [this message]
2015-06-16 7:52 ` Vaibhav Hiremath
2015-06-16 7:52 ` Vaibhav Hiremath
2015-06-16 7:52 ` Vaibhav Hiremath
2015-06-16 13:02 ` [rtc-linux] " Rob Herring
2015-06-16 13:02 ` Rob Herring
2015-06-16 13:02 ` Rob Herring
2015-06-16 13:02 ` Rob Herring
2015-06-16 14:36 ` [rtc-linux] " Vaibhav Hiremath
2015-06-16 14:36 ` Vaibhav Hiremath
2015-06-16 14:36 ` Vaibhav Hiremath
2015-06-16 14:36 ` Vaibhav Hiremath
2015-05-29 22:19 ` [rtc-linux] [PATCH 2/4] mfd: 88pm800: use irq_mode to configure interrupt status reg clear method Vaibhav Hiremath
2015-05-29 22:19 ` Vaibhav Hiremath
2015-05-29 22:19 ` Vaibhav Hiremath
2015-06-01 8:31 ` [rtc-linux] " Lee Jones
2015-06-01 8:31 ` Lee Jones
2015-06-01 8:31 ` Lee Jones
2015-06-02 8:51 ` [rtc-linux] " Vaibhav Hiremath
2015-06-02 8:51 ` Vaibhav Hiremath
2015-06-02 8:51 ` Vaibhav Hiremath
2015-06-02 8:51 ` Vaibhav Hiremath
2015-05-29 22:19 ` [rtc-linux] [PATCH 3/4] rtc: 88pm80x: add device tree support Vaibhav Hiremath
2015-05-29 22:19 ` Vaibhav Hiremath
2015-05-29 22:19 ` Vaibhav Hiremath
2015-05-29 22:19 ` [rtc-linux] [PATCH 4/4] mfd: 88pm800: allocate pdata->rtc if not allocated earlier Vaibhav Hiremath
2015-05-29 22:19 ` Vaibhav Hiremath
2015-05-29 22:19 ` Vaibhav Hiremath
2015-05-29 22:19 ` Vaibhav Hiremath
2015-06-01 8:22 ` [rtc-linux] " Lee Jones
2015-06-01 8:22 ` Lee Jones
2015-06-01 8:22 ` Lee Jones
2015-06-02 5:07 ` [rtc-linux] " Vaibhav Hiremath
2015-06-02 5:07 ` Vaibhav Hiremath
2015-06-02 5:07 ` Vaibhav Hiremath
2015-06-02 7:40 ` [rtc-linux] " Lee Jones
2015-06-02 7:40 ` Lee Jones
2015-06-02 7:40 ` Lee Jones
2015-06-02 7:40 ` Lee Jones
2015-06-02 9:05 ` [rtc-linux] " Vaibhav Hiremath
2015-06-02 9:05 ` Vaibhav Hiremath
2015-06-02 9:05 ` Vaibhav Hiremath
2015-06-02 9:05 ` Vaibhav Hiremath
2015-06-02 9:33 ` [rtc-linux] " Lee Jones
2015-06-02 9:33 ` Lee Jones
2015-06-02 9:33 ` Lee Jones
2015-06-02 9:33 ` Lee Jones
2015-06-02 9:49 ` [rtc-linux] " Vaibhav Hiremath
2015-06-02 9:49 ` Vaibhav Hiremath
2015-06-02 9:49 ` Vaibhav Hiremath
2015-06-02 9:49 ` Vaibhav Hiremath
2015-06-02 10:07 ` [rtc-linux] " Lee Jones
2015-06-02 10:07 ` Lee Jones
2015-06-02 10:07 ` Lee Jones
2015-06-02 10:18 ` [rtc-linux] " Vaibhav Hiremath
2015-06-02 10:18 ` Vaibhav Hiremath
2015-06-02 10:18 ` Vaibhav Hiremath
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=557FD5AD.5020405@linaro.org \
--to=vaibhav.hiremath@linaro.org \
--cc=a.zummo@towertech.it \
--cc=alexandre.belloni@free-electrons.com \
--cc=chao.xie@marvell.com \
--cc=devicetree@vger.kernel.org \
--cc=lee.jones@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh+dt@kernel.org \
--cc=rtc-linux@googlegroups.com \
--cc=sameo@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.