Message ID | 1437476823-3358-5-git-send-email-vaibhav.hiremath@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
2015-07-21 20:07 GMT+09:00 Vaibhav Hiremath <vaibhav.hiremath@linaro.org>: > This patch adds mfd_cell/clk-subdevice for 88PM800 MFD > (and family of devices). > > Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org> > --- > drivers/mfd/88pm800.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > Looks OK: Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Best regards, Krzysztof
On Tue, 21 Jul 2015, Vaibhav Hiremath wrote: > This patch adds mfd_cell/clk-subdevice for 88PM800 MFD > (and family of devices). > > Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org> > --- > drivers/mfd/88pm800.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c > index f104a32..9723eac 100644 > --- a/drivers/mfd/88pm800.c > +++ b/drivers/mfd/88pm800.c > @@ -173,6 +173,14 @@ static const struct mfd_cell regulator_devs[] = { > }, > }; > > +static struct mfd_cell clk_devs[] = { > + { > + .name = "88pm80x-clk", > + .of_compatible = "marvell,88pm800-clk", > + .id = -1, > + }, > +}; Why does each device in 88pm800.c have it's own mfd_cell? Take the opportunity to correct the tabbing in the remainder of the file. Make that fix-up patch 1 of this set. Then fixup this patch. > static const struct regmap_irq pm800_irqs[] = { > /* INT0 */ > [PM800_IRQ_ONKEY] = { > @@ -344,6 +352,17 @@ static int device_regulator_init(struct pm80x_chip *chip) > ARRAY_SIZE(regulator_devs), NULL, 0, NULL); > } > > +static int device_clk_init(struct pm80x_chip *chip) > +{ > + if (chip->type == CHIP_PM800) > + clk_devs[0].name = "88pm800-clk"; > + else if (chip->type == CHIP_PM860) > + clk_devs[0].name = "88pm860-clk"; > + > + return mfd_add_devices(chip->dev, 0, &clk_devs[0], > + ARRAY_SIZE(clk_devs), NULL, 0, NULL); > +} > + > static int device_irq_init_800(struct pm80x_chip *chip) > { > struct regmap *map = chip->regmap; > @@ -513,6 +532,12 @@ static int device_800_init(struct pm80x_chip *chip) > goto out; > } > > + ret = device_clk_init(chip); > + if (ret) { > + dev_err(chip->dev, "Failed to add clk subdev\n"); > + goto out; > + } Why do these have to be seperate? > return 0; > out_dev: > mfd_remove_devices(chip->dev);
On Thursday 23 July 2015 09:20 PM, Lee Jones wrote: > On Tue, 21 Jul 2015, Vaibhav Hiremath wrote: > >> This patch adds mfd_cell/clk-subdevice for 88PM800 MFD >> (and family of devices). >> >> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org> >> --- >> drivers/mfd/88pm800.c | 25 +++++++++++++++++++++++++ >> 1 file changed, 25 insertions(+) >> >> diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c >> index f104a32..9723eac 100644 >> --- a/drivers/mfd/88pm800.c >> +++ b/drivers/mfd/88pm800.c >> @@ -173,6 +173,14 @@ static const struct mfd_cell regulator_devs[] = { >> }, >> }; >> >> +static struct mfd_cell clk_devs[] = { >> + { >> + .name = "88pm80x-clk", >> + .of_compatible = "marvell,88pm800-clk", >> + .id = -1, >> + }, >> +}; > > Why does each device in 88pm800.c have it's own mfd_cell? > Probably, the author of the driver can comment on this. I have cc'ed all of them. But looking at the driver it looks like, except onkey and regulator all other devices need per-initialization. For example, in case of clock, static int device_clk_init(struct pm80x_chip *chip) { if (chip->type == CHIP_PM800) clk_devs[0].name = "88pm800-clk"; else if (chip->type == CHIP_PM860) clk_devs[0].name = "88pm860-clk"; return mfd_add_devices(chip->dev, 0, &clk_devs[0], ARRAY_SIZE(clk_devs), NULL, 0, NULL); } > Take the opportunity to correct the tabbing in the remainder of the > file. Make that fix-up patch 1 of this set. Then fixup this patch. > Ok, I will. Thanks, Vaibhav
diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c index f104a32..9723eac 100644 --- a/drivers/mfd/88pm800.c +++ b/drivers/mfd/88pm800.c @@ -173,6 +173,14 @@ static const struct mfd_cell regulator_devs[] = { }, }; +static struct mfd_cell clk_devs[] = { + { + .name = "88pm80x-clk", + .of_compatible = "marvell,88pm800-clk", + .id = -1, + }, +}; + static const struct regmap_irq pm800_irqs[] = { /* INT0 */ [PM800_IRQ_ONKEY] = { @@ -344,6 +352,17 @@ static int device_regulator_init(struct pm80x_chip *chip) ARRAY_SIZE(regulator_devs), NULL, 0, NULL); } +static int device_clk_init(struct pm80x_chip *chip) +{ + if (chip->type == CHIP_PM800) + clk_devs[0].name = "88pm800-clk"; + else if (chip->type == CHIP_PM860) + clk_devs[0].name = "88pm860-clk"; + + return mfd_add_devices(chip->dev, 0, &clk_devs[0], + ARRAY_SIZE(clk_devs), NULL, 0, NULL); +} + static int device_irq_init_800(struct pm80x_chip *chip) { struct regmap *map = chip->regmap; @@ -513,6 +532,12 @@ static int device_800_init(struct pm80x_chip *chip) goto out; } + ret = device_clk_init(chip); + if (ret) { + dev_err(chip->dev, "Failed to add clk subdev\n"); + goto out; + } + return 0; out_dev: mfd_remove_devices(chip->dev);
This patch adds mfd_cell/clk-subdevice for 88PM800 MFD (and family of devices). Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org> --- drivers/mfd/88pm800.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)