* [PATCH 0/4] mfd: 88pn80x: bug fix and device tree support
@ 2013-07-29 8:29 Chao Xie
2013-07-29 8:29 ` [PATCH 1/4] mfd: 88pm800: Fix the bug that pdata may be NULL Chao Xie
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Chao Xie @ 2013-07-29 8:29 UTC (permalink / raw)
To: linux-kernel, sameo, xiechao.mail; +Cc: Chao Xie
There are 4 patches.
1. Bug fix.
mfd: 88pm800: Fix the bug that pdata may be NULL
mfd: 88pm805: Fix the bug that pdata may be NULL
Above patches fix the bug that pdata may be NULL when driver uses it.
2. Device tree support
mfd: 88pm800: add device tree support
mfd: 88pm805: add device tree support
Add device tree support for 88pm800 and 88pm805
Chao Xie (4):
mfd: 88pm800: Fix the bug that pdata may be NULL
mfd: 88pm805: Fix the bug that pdata may be NULL
mfd: 88pm800: add device tree support
mfd: 88pm805: add device tree support
Documentation/devicetree/bindings/mfd/88pm800.c | 55 +++++++++++++++++++
Documentation/devicetree/bindings/mfd/88pm805.c | 15 +++++
drivers/mfd/88pm800.c | 65 +++++++++++++++++++++--
drivers/mfd/88pm805.c | 10 +++-
4 files changed, 140 insertions(+), 5 deletions(-)
create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.c
create mode 100644 Documentation/devicetree/bindings/mfd/88pm805.c
--
1.7.4.1
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 1/4] mfd: 88pm800: Fix the bug that pdata may be NULL 2013-07-29 8:29 [PATCH 0/4] mfd: 88pn80x: bug fix and device tree support Chao Xie @ 2013-07-29 8:29 ` Chao Xie 2013-07-29 8:29 ` [PATCH 2/4] mfd: 88pm805: " Chao Xie ` (2 subsequent siblings) 3 siblings, 0 replies; 7+ messages in thread From: Chao Xie @ 2013-07-29 8:29 UTC (permalink / raw) To: linux-kernel, sameo, xiechao.mail; +Cc: Chao Xie User pass platform data to device, and platform data may be NULL. Add the check for pdata. Signed-off-by: Chao Xie <chao.xie@marvell.com> --- drivers/mfd/88pm800.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c index 6c95483..d4d272f 100644 --- a/drivers/mfd/88pm800.c +++ b/drivers/mfd/88pm800.c @@ -333,9 +333,11 @@ static int device_rtc_init(struct pm80x_chip *chip, { int ret; - rtc_devs[0].platform_data = pdata->rtc; - rtc_devs[0].pdata_size = - pdata->rtc ? sizeof(struct pm80x_rtc_pdata) : 0; + if (pdata) { + rtc_devs[0].platform_data = pdata->rtc; + rtc_devs[0].pdata_size = + pdata->rtc ? sizeof(struct pm80x_rtc_pdata) : 0; + } ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0], ARRAY_SIZE(rtc_devs), NULL, 0, NULL); if (ret) { @@ -578,7 +580,7 @@ static int pm800_probe(struct i2c_client *client, goto err_device_init; } - if (pdata->plat_config) + if (pdata && pdata->plat_config) pdata->plat_config(chip, pdata); return 0; -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/4] mfd: 88pm805: Fix the bug that pdata may be NULL 2013-07-29 8:29 [PATCH 0/4] mfd: 88pn80x: bug fix and device tree support Chao Xie 2013-07-29 8:29 ` [PATCH 1/4] mfd: 88pm800: Fix the bug that pdata may be NULL Chao Xie @ 2013-07-29 8:29 ` Chao Xie 2013-07-29 8:29 ` [PATCH 3/4] mfd: 88pm800: add device tree support Chao Xie 2013-07-29 8:29 ` [PATCH 4/4] mfd: 88pm805: " Chao Xie 3 siblings, 0 replies; 7+ messages in thread From: Chao Xie @ 2013-07-29 8:29 UTC (permalink / raw) To: linux-kernel, sameo, xiechao.mail; +Cc: Chao Xie User pass platform data to device, and platform data may be NULL. Add the check for pdata. Signed-off-by: Chao Xie <chao.xie@marvell.com> --- drivers/mfd/88pm805.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/mfd/88pm805.c b/drivers/mfd/88pm805.c index 5216022..57135bb 100644 --- a/drivers/mfd/88pm805.c +++ b/drivers/mfd/88pm805.c @@ -243,7 +243,7 @@ static int pm805_probe(struct i2c_client *client, goto err_805_init; } - if (pdata->plat_config) + if (pdata && pdata->plat_config) pdata->plat_config(chip, pdata); err_805_init: -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/4] mfd: 88pm800: add device tree support 2013-07-29 8:29 [PATCH 0/4] mfd: 88pn80x: bug fix and device tree support Chao Xie 2013-07-29 8:29 ` [PATCH 1/4] mfd: 88pm800: Fix the bug that pdata may be NULL Chao Xie 2013-07-29 8:29 ` [PATCH 2/4] mfd: 88pm805: " Chao Xie @ 2013-07-29 8:29 ` Chao Xie 2013-07-29 8:29 ` [PATCH 4/4] mfd: 88pm805: " Chao Xie 3 siblings, 0 replies; 7+ messages in thread From: Chao Xie @ 2013-07-29 8:29 UTC (permalink / raw) To: linux-kernel, sameo, xiechao.mail; +Cc: Chao Xie Signed-off-by: Chao Xie <chao.xie@marvell.com> --- Documentation/devicetree/bindings/mfd/88pm800.c | 55 +++++++++++++++++++++++ drivers/mfd/88pm800.c | 55 +++++++++++++++++++++++ 2 files changed, 110 insertions(+), 0 deletions(-) create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.c diff --git a/Documentation/devicetree/bindings/mfd/88pm800.c b/Documentation/devicetree/bindings/mfd/88pm800.c new file mode 100644 index 0000000..2299752 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/88pm800.c @@ -0,0 +1,55 @@ +* 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 (has its own domain) +- #interrupt-cells : should be 1. + - The cell is the 88pm800 local IRQ number + +Optional parent device properties: +- marvell,88pm800-irq-write-clear: inicates whether interrupt status is cleared by write +- marvell,88pm800-battery-detection: indicats whether need 88pm800 to support battery + detection or not. + +88pm800 consists of a large and varied group of sub-devices: + +Device Supply Names Description +------ ------------ ----------- +88pm80x-onkey : : On key +88pm80x-rtc : : RTC +88pm80x-regulator : : Regulators + +Example: + + pmic: 88pm800@30 { + compatible = "marvell,88pm800"; + reg = <0x30>; + interrupts = <0 4 0x4>; + interrupt-parent = <&gic>; + interrupt-controller; + #interrupt-cells = <1>; + + marvell,88pm800-irq-write-clr; + + regulators { + compatible = "marvell,88pm80x-regulator"; + + BUCK1 { + regulator-min-microvolt = <600000>; + regulator-max-microvolt = <3950000>; + regulator-boot-on; + regulator-always-on; + }; + LDO1 { + regulator-min-microvolt = <600000>; + regulator-max-microvolt = <3950000>; + regulator-boot-on; + regulator-always-on; + }; + }; + rtc { + compatible = "marvell,88pm80x-rtc"; + }; + }; diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c index d4d272f..07a24e2 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,12 @@ static const struct i2c_device_id pm80x_id_table[] = { }; MODULE_DEVICE_TABLE(i2c, pm80x_id_table); +static const struct of_device_id pm80x_dt_ids[] = { + { .compatible = "marvell,88pm800", }, + {}, +}; +MODULE_DEVICE_TABLE(of, pm80x_dt_ids); + static struct resource rtc_resources[] = { { .name = "88pm80x-rtc", @@ -133,6 +140,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 +159,7 @@ static struct resource onkey_resources[] = { static struct mfd_cell onkey_devs[] = { { .name = "88pm80x-onkey", + .of_compatible = "marvell,88pm80x-onkey", .num_resources = 1, .resources = &onkey_resources[0], .id = -1, @@ -160,6 +169,7 @@ static struct mfd_cell onkey_devs[] = { static struct mfd_cell regulator_devs[] = { { .name = "88pm80x-regulator", + .of_compatible = "marvell,88pm80x-regulator", .id = -1, }, }; @@ -538,14 +548,58 @@ out: return ret; } +static int pm800_dt_init(struct device_node *np, + struct device *dev, + struct pm80x_platform_data *pdata) +{ + pdata->irq_mode = + !of_property_read_bool(np, "marvell,88pm800-irq-write-clear"); + pdata->batt_det = + of_property_read_bool(np, "marvell,88pm800-battery-detection"); + + return 0; +} + + 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 = client->dev.platform_data; + struct device_node *node = client->dev.of_node; struct pm80x_subchip *subchip; + if (IS_ENABLED(CONFIG_OF)) { + if (!pdata) { + pdata = devm_kzalloc(&client->dev, + sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return -ENOMEM; + } + ret = pm800_dt_init(node, &client->dev, pdata); + if (ret) + return ret; + } else if (!pdata) { + return -EINVAL; + } + + /* + * RTC in pmic can run even the core is powered off, and user can set + * alarm in RTC. When the alarm is time out, the PMIC will power up + * the core, and the whole system will boot up. When PMIC driver is + * probed, it will read out some register to find out whether this + * boot is caused by RTC timeout or not, and it need pass this + * information to RTC driver. + * So we need rtc platform data to be existed to pass this information. + */ + if (!pdata->rtc) { + pdata->rtc = devm_kzalloc(&client->dev, + sizeof(*(pdata->rtc)), GFP_KERNEL); + if (!pdata->rtc) + return -ENOMEM; + } + ret = pm80x_init(client); if (ret) { dev_err(&client->dev, "pm800_init fail\n"); @@ -612,6 +666,7 @@ static struct i2c_driver pm800_driver = { .name = "88PM800", .owner = THIS_MODULE, .pm = &pm80x_pm_ops, + .of_match_table = of_match_ptr(pm80x_dt_ids), }, .probe = pm800_probe, .remove = pm800_remove, -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/4] mfd: 88pm805: add device tree support 2013-07-29 8:29 [PATCH 0/4] mfd: 88pn80x: bug fix and device tree support Chao Xie ` (2 preceding siblings ...) 2013-07-29 8:29 ` [PATCH 3/4] mfd: 88pm800: add device tree support Chao Xie @ 2013-07-29 8:29 ` Chao Xie 3 siblings, 0 replies; 7+ messages in thread From: Chao Xie @ 2013-07-29 8:29 UTC (permalink / raw) To: linux-kernel, sameo, xiechao.mail; +Cc: Chao Xie Signed-off-by: Chao Xie <chao.xie@marvell.com> --- Documentation/devicetree/bindings/mfd/88pm805.c | 15 +++++++++++++++ drivers/mfd/88pm805.c | 8 ++++++++ 2 files changed, 23 insertions(+), 0 deletions(-) create mode 100644 Documentation/devicetree/bindings/mfd/88pm805.c diff --git a/Documentation/devicetree/bindings/mfd/88pm805.c b/Documentation/devicetree/bindings/mfd/88pm805.c new file mode 100644 index 0000000..f3878a3 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/88pm805.c @@ -0,0 +1,15 @@ +* Marvell 88PM805 Power Management IC + +Required parent device properties: +- compatible : "marvell,88pm805" +- reg : the I2C slave address for the 88pm805 chip +- interrupts : IRQ line for the 88pm805 chip + +Example: + + pmic: 88pm805@38 { + compatible = "marvell,88pm805"; + reg = <0x38>; + interrupt-parent = <&gpio1>; + interrupts = <124 0x1>; + }; diff --git a/drivers/mfd/88pm805.c b/drivers/mfd/88pm805.c index 57135bb..f6e0e55 100644 --- a/drivers/mfd/88pm805.c +++ b/drivers/mfd/88pm805.c @@ -28,6 +28,7 @@ #include <linux/mfd/88pm80x.h> #include <linux/slab.h> #include <linux/delay.h> +#include <linux/of_device.h> static const struct i2c_device_id pm80x_id_table[] = { {"88PM805", 0}, @@ -35,6 +36,12 @@ static const struct i2c_device_id pm80x_id_table[] = { }; MODULE_DEVICE_TABLE(i2c, pm80x_id_table); +static const struct of_device_id pm80x_dt_ids[] = { + { .compatible = "marvell,88pm805", }, + {}, +}; +MODULE_DEVICE_TABLE(of, pm80x_dt_ids); + /* Interrupt Number in 88PM805 */ enum { PM805_IRQ_LDO_OFF, /*0 */ @@ -269,6 +276,7 @@ static struct i2c_driver pm805_driver = { .name = "88PM805", .owner = THIS_MODULE, .pm = &pm80x_pm_ops, + .of_match_table = of_match_ptr(pm80x_dt_ids), }, .probe = pm805_probe, .remove = pm805_remove, -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 0/4] mfd: 88pn80x: bug fix and device tree support @ 2013-08-14 8:28 Chao Xie 2013-08-14 8:28 ` [PATCH 4/4] mfd: 88pm805: add " Chao Xie 0 siblings, 1 reply; 7+ messages in thread From: Chao Xie @ 2013-08-14 8:28 UTC (permalink / raw) To: sameo, lee.jones, linux-kernel, xiechao.mail; +Cc: Chao Xie There are 4 patches. 1. Bug fix. mfd: 88pm800: Fix the bug that pdata may be NULL mfd: 88pm805: Fix the bug that pdata may be NULL Above patches fix the bug that pdata may be NULL when driver uses it. 2. Device tree support mfd: 88pm800: add device tree support mfd: 88pm805: add device tree support Add device tree support for 88pm800 and 88pm805 Chao Xie (4): mfd: 88pm800: Fix the bug that pdata may be NULL mfd: 88pm805: Fix the bug that pdata may be NULL mfd: 88pm800: add device tree support mfd: 88pm805: add device tree support Documentation/devicetree/bindings/mfd/88pm800.c | 55 +++++++++++++++++++ Documentation/devicetree/bindings/mfd/88pm805.c | 15 +++++ drivers/mfd/88pm800.c | 65 +++++++++++++++++++++-- drivers/mfd/88pm805.c | 10 +++- 4 files changed, 140 insertions(+), 5 deletions(-) create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.c create mode 100644 Documentation/devicetree/bindings/mfd/88pm805.c -- 1.7.4.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 4/4] mfd: 88pm805: add device tree support 2013-08-14 8:28 [PATCH 0/4] mfd: 88pn80x: bug fix and " Chao Xie @ 2013-08-14 8:28 ` Chao Xie 2013-08-14 9:52 ` Lee Jones 0 siblings, 1 reply; 7+ messages in thread From: Chao Xie @ 2013-08-14 8:28 UTC (permalink / raw) To: sameo, lee.jones, linux-kernel, xiechao.mail; +Cc: Chao Xie Signed-off-by: Chao Xie <chao.xie@marvell.com> --- Documentation/devicetree/bindings/mfd/88pm805.c | 15 +++++++++++++++ drivers/mfd/88pm805.c | 8 ++++++++ 2 files changed, 23 insertions(+), 0 deletions(-) create mode 100644 Documentation/devicetree/bindings/mfd/88pm805.c diff --git a/Documentation/devicetree/bindings/mfd/88pm805.c b/Documentation/devicetree/bindings/mfd/88pm805.c new file mode 100644 index 0000000..f3878a3 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/88pm805.c @@ -0,0 +1,15 @@ +* Marvell 88PM805 Power Management IC + +Required parent device properties: +- compatible : "marvell,88pm805" +- reg : the I2C slave address for the 88pm805 chip +- interrupts : IRQ line for the 88pm805 chip + +Example: + + pmic: 88pm805@38 { + compatible = "marvell,88pm805"; + reg = <0x38>; + interrupt-parent = <&gpio1>; + interrupts = <124 0x1>; + }; diff --git a/drivers/mfd/88pm805.c b/drivers/mfd/88pm805.c index 57135bb..f6e0e55 100644 --- a/drivers/mfd/88pm805.c +++ b/drivers/mfd/88pm805.c @@ -28,6 +28,7 @@ #include <linux/mfd/88pm80x.h> #include <linux/slab.h> #include <linux/delay.h> +#include <linux/of_device.h> static const struct i2c_device_id pm80x_id_table[] = { {"88PM805", 0}, @@ -35,6 +36,12 @@ static const struct i2c_device_id pm80x_id_table[] = { }; MODULE_DEVICE_TABLE(i2c, pm80x_id_table); +static const struct of_device_id pm80x_dt_ids[] = { + { .compatible = "marvell,88pm805", }, + {}, +}; +MODULE_DEVICE_TABLE(of, pm80x_dt_ids); + /* Interrupt Number in 88PM805 */ enum { PM805_IRQ_LDO_OFF, /*0 */ @@ -269,6 +276,7 @@ static struct i2c_driver pm805_driver = { .name = "88PM805", .owner = THIS_MODULE, .pm = &pm80x_pm_ops, + .of_match_table = of_match_ptr(pm80x_dt_ids), }, .probe = pm805_probe, .remove = pm805_remove, -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 4/4] mfd: 88pm805: add device tree support 2013-08-14 8:28 ` [PATCH 4/4] mfd: 88pm805: add " Chao Xie @ 2013-08-14 9:52 ` Lee Jones 0 siblings, 0 replies; 7+ messages in thread From: Lee Jones @ 2013-08-14 9:52 UTC (permalink / raw) To: Chao Xie; +Cc: sameo, linux-kernel, xiechao.mail I think this patch deserves a commit log. > Signed-off-by: Chao Xie <chao.xie@marvell.com> > --- > Documentation/devicetree/bindings/mfd/88pm805.c | 15 +++++++++++++++ > drivers/mfd/88pm805.c | 8 ++++++++ > 2 files changed, 23 insertions(+), 0 deletions(-) > create mode 100644 Documentation/devicetree/bindings/mfd/88pm805.c > > diff --git a/Documentation/devicetree/bindings/mfd/88pm805.c b/Documentation/devicetree/bindings/mfd/88pm805.c > new file mode 100644 > index 0000000..f3878a3 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/88pm805.c > @@ -0,0 +1,15 @@ > +* Marvell 88PM805 Power Management IC > + > +Required parent device properties: > +- compatible : "marvell,88pm805" > +- reg : the I2C slave address for the 88pm805 chip > +- interrupts : IRQ line for the 88pm805 chip > + > +Example: > + > + pmic: 88pm805@38 { > + compatible = "marvell,88pm805"; > + reg = <0x38>; > + interrupt-parent = <&gpio1>; > + interrupts = <124 0x1>; Please use the defines provided in include/dt-bindings. > + }; > diff --git a/drivers/mfd/88pm805.c b/drivers/mfd/88pm805.c > index 57135bb..f6e0e55 100644 > --- a/drivers/mfd/88pm805.c > +++ b/drivers/mfd/88pm805.c > @@ -28,6 +28,7 @@ > #include <linux/mfd/88pm80x.h> > #include <linux/slab.h> > #include <linux/delay.h> > +#include <linux/of_device.h> > > static const struct i2c_device_id pm80x_id_table[] = { > {"88PM805", 0}, > @@ -35,6 +36,12 @@ static const struct i2c_device_id pm80x_id_table[] = { > }; > MODULE_DEVICE_TABLE(i2c, pm80x_id_table); > > +static const struct of_device_id pm80x_dt_ids[] = { > + { .compatible = "marvell,88pm805", }, > + {}, > +}; > +MODULE_DEVICE_TABLE(of, pm80x_dt_ids); > + > /* Interrupt Number in 88PM805 */ > enum { > PM805_IRQ_LDO_OFF, /*0 */ > @@ -269,6 +276,7 @@ static struct i2c_driver pm805_driver = { > .name = "88PM805", > .owner = THIS_MODULE, > .pm = &pm80x_pm_ops, > + .of_match_table = of_match_ptr(pm80x_dt_ids), > }, > .probe = pm805_probe, > .remove = pm805_remove, -- Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-08-14 9:52 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-07-29 8:29 [PATCH 0/4] mfd: 88pn80x: bug fix and device tree support Chao Xie 2013-07-29 8:29 ` [PATCH 1/4] mfd: 88pm800: Fix the bug that pdata may be NULL Chao Xie 2013-07-29 8:29 ` [PATCH 2/4] mfd: 88pm805: " Chao Xie 2013-07-29 8:29 ` [PATCH 3/4] mfd: 88pm800: add device tree support Chao Xie 2013-07-29 8:29 ` [PATCH 4/4] mfd: 88pm805: " Chao Xie -- strict thread matches above, loose matches on Subject: below -- 2013-08-14 8:28 [PATCH 0/4] mfd: 88pn80x: bug fix and " Chao Xie 2013-08-14 8:28 ` [PATCH 4/4] mfd: 88pm805: add " Chao Xie 2013-08-14 9:52 ` 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).