From: Lee Jones <lee.jones@linaro.org> To: Richard Fitzgerald <rf@opensource.wolfsonmicro.com> Cc: broonie@kernel.org, kgene@kernel.org, krzk@kernel.org, linux-kernel@vger.kernel.org, patches@opensource.wolfsonmicro.com, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org Subject: Re: [PATCH 5/7] regulator: arizona-ldo1: Move pdata into a separate structure Date: Mon, 24 Apr 2017 12:50:44 +0100 [thread overview] Message-ID: <20170424115044.rejrwmi57uifxo7j@dell> (raw) In-Reply-To: <1492512234-19210-7-git-send-email-rf@opensource.wolfsonmicro.com> On Tue, 18 Apr 2017, Richard Fitzgerald wrote: > In preparation for sharing this driver with Madera, move the pdata > for the LDO1 regulator out of struct arizona_pdata into a dedicated > pdata struct for this driver. As a result the code in > arizona_ldo1_of_get_pdata() can be made independent of struct arizona. > > This patch also updates the definition of struct arizona_pdata and > the use of this pdata in mach-crag6410-module.c > > Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com> > --- > arch/arm/mach-s3c64xx/mach-crag6410-module.c | 8 ++++-- > drivers/regulator/arizona-ldo1.c | 39 +++++++++++++++------------- > include/linux/mfd/arizona/pdata.h | 4 +-- Acked-by: Lee Jones <lee.jones@linaro.org> > include/linux/regulator/arizona-ldo1.h | 24 +++++++++++++++++ > 4 files changed, 53 insertions(+), 22 deletions(-) > create mode 100644 include/linux/regulator/arizona-ldo1.h > > diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c b/arch/arm/mach-s3c64xx/mach-crag6410-module.c > index ccc3ab8..ea5f216 100644 > --- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c > +++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c > @@ -209,7 +209,9 @@ > }; > > static struct arizona_pdata wm5102_reva_pdata = { > - .ldoena = S3C64XX_GPN(7), > + .ldo1 = { > + .ldoena = S3C64XX_GPN(7), > + }, > .gpio_base = CODEC_GPIO_BASE, > .irq_flags = IRQF_TRIGGER_HIGH, > .micd_pol_gpio = CODEC_GPIO_BASE + 4, > @@ -239,7 +241,9 @@ > }; > > static struct arizona_pdata wm5102_pdata = { > - .ldoena = S3C64XX_GPN(7), > + .ldo1 = { > + .ldoena = S3C64XX_GPN(7), > + }, > .gpio_base = CODEC_GPIO_BASE, > .irq_flags = IRQF_TRIGGER_HIGH, > .micd_pol_gpio = CODEC_GPIO_BASE + 2, > diff --git a/drivers/regulator/arizona-ldo1.c b/drivers/regulator/arizona-ldo1.c > index b726fa1..f5bc75a 100644 > --- a/drivers/regulator/arizona-ldo1.c > +++ b/drivers/regulator/arizona-ldo1.c > @@ -25,6 +25,8 @@ > #include <linux/gpio.h> > #include <linux/slab.h> > > +#include <linux/regulator/arizona-ldo1.h> > + > #include <linux/mfd/arizona/core.h> > #include <linux/mfd/arizona/pdata.h> > #include <linux/mfd/arizona/registers.h> > @@ -186,20 +188,19 @@ static int arizona_ldo1_hc_get_voltage_sel(struct regulator_dev *rdev) > .num_consumer_supplies = 1, > }; > > -static int arizona_ldo1_of_get_pdata(struct device *dev, > - struct arizona *arizona, > +static int arizona_ldo1_of_get_pdata(struct arizona_ldo1_pdata *pdata, > struct regulator_config *config, > - const struct regulator_desc *desc) > + const struct regulator_desc *desc, > + bool *external_dcvdd) > { > - struct arizona_pdata *pdata = &arizona->pdata; > struct arizona_ldo1 *ldo1 = config->driver_data; > - struct device_node *np = arizona->dev->of_node; > + struct device_node *np = config->dev->of_node; > struct device_node *init_node, *dcvdd_node; > struct regulator_init_data *init_data; > > pdata->ldoena = of_get_named_gpio(np, "wlf,ldoena", 0); > if (pdata->ldoena < 0) { > - dev_warn(arizona->dev, > + dev_warn(config->dev, > "LDOENA GPIO property missing/malformed: %d\n", > pdata->ldoena); > pdata->ldoena = 0; > @@ -213,19 +214,19 @@ static int arizona_ldo1_of_get_pdata(struct device *dev, > if (init_node) { > config->of_node = init_node; > > - init_data = of_get_regulator_init_data(dev, init_node, desc); > - > + init_data = of_get_regulator_init_data(config->dev, init_node, > + desc); > if (init_data) { > init_data->consumer_supplies = &ldo1->supply; > init_data->num_consumer_supplies = 1; > > if (dcvdd_node && dcvdd_node != init_node) > - arizona->external_dcvdd = true; > + *external_dcvdd = true; > > - pdata->ldo1 = init_data; > + pdata->init_data = init_data; > } > } else if (dcvdd_node) { > - arizona->external_dcvdd = true; > + *external_dcvdd = true; > } > > of_node_put(dcvdd_node); > @@ -239,10 +240,9 @@ static int arizona_ldo1_probe(struct platform_device *pdev) > const struct regulator_desc *desc; > struct regulator_config config = { }; > struct arizona_ldo1 *ldo1; > + bool external_dcvdd = false; > int ret; > > - arizona->external_dcvdd = false; > - > ldo1 = devm_kzalloc(&pdev->dev, sizeof(*ldo1), GFP_KERNEL); > if (!ldo1) > return -ENOMEM; > @@ -283,17 +283,18 @@ static int arizona_ldo1_probe(struct platform_device *pdev) > > if (IS_ENABLED(CONFIG_OF)) { > if (!dev_get_platdata(arizona->dev)) { > - ret = arizona_ldo1_of_get_pdata(&pdev->dev, arizona, > - &config, desc); > + ret = arizona_ldo1_of_get_pdata(&arizona->pdata.ldo1, > + &config, desc, > + &external_dcvdd); > if (ret < 0) > return ret; > } > } > > - config.ena_gpio = arizona->pdata.ldoena; > + config.ena_gpio = arizona->pdata.ldo1.ldoena; > > - if (arizona->pdata.ldo1) > - config.init_data = arizona->pdata.ldo1; > + if (arizona->pdata.ldo1.init_data) > + config.init_data = arizona->pdata.ldo1.init_data; > else > config.init_data = &ldo1->init_data; > > @@ -303,6 +304,8 @@ static int arizona_ldo1_probe(struct platform_device *pdev) > */ > if (config.init_data->num_consumer_supplies == 0) > arizona->external_dcvdd = true; > + else > + arizona->external_dcvdd = external_dcvdd; > > ldo1->regulator = devm_regulator_register(&pdev->dev, desc, &config); > > diff --git a/include/linux/mfd/arizona/pdata.h b/include/linux/mfd/arizona/pdata.h > index 43e875f..bfeecf1 100644 > --- a/include/linux/mfd/arizona/pdata.h > +++ b/include/linux/mfd/arizona/pdata.h > @@ -12,6 +12,7 @@ > #define _ARIZONA_PDATA_H > > #include <dt-bindings/mfd/arizona.h> > +#include <linux/regulator/arizona-ldo1.h> > #include <linux/regulator/arizona-micsupp.h> > > #define ARIZONA_GPN_DIR_MASK 0x8000 /* GPN_DIR */ > @@ -77,13 +78,12 @@ struct arizona_micd_range { > > struct arizona_pdata { > int reset; /** GPIO controlling /RESET, if any */ > - int ldoena; /** GPIO controlling LODENA, if any */ > > /** Regulator configuration for MICVDD */ > struct arizona_micsupp_pdata micvdd; > > /** Regulator configuration for LDO1 */ > - struct regulator_init_data *ldo1; > + struct arizona_ldo1_pdata ldo1; > > /** If a direct 32kHz clock is provided on an MCLK specify it here */ > int clk32k_src; > diff --git a/include/linux/regulator/arizona-ldo1.h b/include/linux/regulator/arizona-ldo1.h > new file mode 100644 > index 0000000..c685f12 > --- /dev/null > +++ b/include/linux/regulator/arizona-ldo1.h > @@ -0,0 +1,24 @@ > +/* > + * Platform data for Arizona LDO1 regulator > + * > + * Copyright 2017 Cirrus Logic > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + */ > + > +#ifndef ARIZONA_LDO1_H > +#define ARIZONA_LDO1_H > + > +struct regulator_init_data; > + > +struct arizona_ldo1_pdata { > + /** GPIO controlling LDOENA, if any */ > + int ldoena; > + > + /** Regulator configuration for LDO1 */ > + const struct regulator_init_data *init_data; > +}; > + > +#endif > -- > 1.9.1 > -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
WARNING: multiple messages have this Message-ID (diff)
From: lee.jones@linaro.org (Lee Jones) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 5/7] regulator: arizona-ldo1: Move pdata into a separate structure Date: Mon, 24 Apr 2017 12:50:44 +0100 [thread overview] Message-ID: <20170424115044.rejrwmi57uifxo7j@dell> (raw) In-Reply-To: <1492512234-19210-7-git-send-email-rf@opensource.wolfsonmicro.com> On Tue, 18 Apr 2017, Richard Fitzgerald wrote: > In preparation for sharing this driver with Madera, move the pdata > for the LDO1 regulator out of struct arizona_pdata into a dedicated > pdata struct for this driver. As a result the code in > arizona_ldo1_of_get_pdata() can be made independent of struct arizona. > > This patch also updates the definition of struct arizona_pdata and > the use of this pdata in mach-crag6410-module.c > > Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com> > --- > arch/arm/mach-s3c64xx/mach-crag6410-module.c | 8 ++++-- > drivers/regulator/arizona-ldo1.c | 39 +++++++++++++++------------- > include/linux/mfd/arizona/pdata.h | 4 +-- Acked-by: Lee Jones <lee.jones@linaro.org> > include/linux/regulator/arizona-ldo1.h | 24 +++++++++++++++++ > 4 files changed, 53 insertions(+), 22 deletions(-) > create mode 100644 include/linux/regulator/arizona-ldo1.h > > diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c b/arch/arm/mach-s3c64xx/mach-crag6410-module.c > index ccc3ab8..ea5f216 100644 > --- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c > +++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c > @@ -209,7 +209,9 @@ > }; > > static struct arizona_pdata wm5102_reva_pdata = { > - .ldoena = S3C64XX_GPN(7), > + .ldo1 = { > + .ldoena = S3C64XX_GPN(7), > + }, > .gpio_base = CODEC_GPIO_BASE, > .irq_flags = IRQF_TRIGGER_HIGH, > .micd_pol_gpio = CODEC_GPIO_BASE + 4, > @@ -239,7 +241,9 @@ > }; > > static struct arizona_pdata wm5102_pdata = { > - .ldoena = S3C64XX_GPN(7), > + .ldo1 = { > + .ldoena = S3C64XX_GPN(7), > + }, > .gpio_base = CODEC_GPIO_BASE, > .irq_flags = IRQF_TRIGGER_HIGH, > .micd_pol_gpio = CODEC_GPIO_BASE + 2, > diff --git a/drivers/regulator/arizona-ldo1.c b/drivers/regulator/arizona-ldo1.c > index b726fa1..f5bc75a 100644 > --- a/drivers/regulator/arizona-ldo1.c > +++ b/drivers/regulator/arizona-ldo1.c > @@ -25,6 +25,8 @@ > #include <linux/gpio.h> > #include <linux/slab.h> > > +#include <linux/regulator/arizona-ldo1.h> > + > #include <linux/mfd/arizona/core.h> > #include <linux/mfd/arizona/pdata.h> > #include <linux/mfd/arizona/registers.h> > @@ -186,20 +188,19 @@ static int arizona_ldo1_hc_get_voltage_sel(struct regulator_dev *rdev) > .num_consumer_supplies = 1, > }; > > -static int arizona_ldo1_of_get_pdata(struct device *dev, > - struct arizona *arizona, > +static int arizona_ldo1_of_get_pdata(struct arizona_ldo1_pdata *pdata, > struct regulator_config *config, > - const struct regulator_desc *desc) > + const struct regulator_desc *desc, > + bool *external_dcvdd) > { > - struct arizona_pdata *pdata = &arizona->pdata; > struct arizona_ldo1 *ldo1 = config->driver_data; > - struct device_node *np = arizona->dev->of_node; > + struct device_node *np = config->dev->of_node; > struct device_node *init_node, *dcvdd_node; > struct regulator_init_data *init_data; > > pdata->ldoena = of_get_named_gpio(np, "wlf,ldoena", 0); > if (pdata->ldoena < 0) { > - dev_warn(arizona->dev, > + dev_warn(config->dev, > "LDOENA GPIO property missing/malformed: %d\n", > pdata->ldoena); > pdata->ldoena = 0; > @@ -213,19 +214,19 @@ static int arizona_ldo1_of_get_pdata(struct device *dev, > if (init_node) { > config->of_node = init_node; > > - init_data = of_get_regulator_init_data(dev, init_node, desc); > - > + init_data = of_get_regulator_init_data(config->dev, init_node, > + desc); > if (init_data) { > init_data->consumer_supplies = &ldo1->supply; > init_data->num_consumer_supplies = 1; > > if (dcvdd_node && dcvdd_node != init_node) > - arizona->external_dcvdd = true; > + *external_dcvdd = true; > > - pdata->ldo1 = init_data; > + pdata->init_data = init_data; > } > } else if (dcvdd_node) { > - arizona->external_dcvdd = true; > + *external_dcvdd = true; > } > > of_node_put(dcvdd_node); > @@ -239,10 +240,9 @@ static int arizona_ldo1_probe(struct platform_device *pdev) > const struct regulator_desc *desc; > struct regulator_config config = { }; > struct arizona_ldo1 *ldo1; > + bool external_dcvdd = false; > int ret; > > - arizona->external_dcvdd = false; > - > ldo1 = devm_kzalloc(&pdev->dev, sizeof(*ldo1), GFP_KERNEL); > if (!ldo1) > return -ENOMEM; > @@ -283,17 +283,18 @@ static int arizona_ldo1_probe(struct platform_device *pdev) > > if (IS_ENABLED(CONFIG_OF)) { > if (!dev_get_platdata(arizona->dev)) { > - ret = arizona_ldo1_of_get_pdata(&pdev->dev, arizona, > - &config, desc); > + ret = arizona_ldo1_of_get_pdata(&arizona->pdata.ldo1, > + &config, desc, > + &external_dcvdd); > if (ret < 0) > return ret; > } > } > > - config.ena_gpio = arizona->pdata.ldoena; > + config.ena_gpio = arizona->pdata.ldo1.ldoena; > > - if (arizona->pdata.ldo1) > - config.init_data = arizona->pdata.ldo1; > + if (arizona->pdata.ldo1.init_data) > + config.init_data = arizona->pdata.ldo1.init_data; > else > config.init_data = &ldo1->init_data; > > @@ -303,6 +304,8 @@ static int arizona_ldo1_probe(struct platform_device *pdev) > */ > if (config.init_data->num_consumer_supplies == 0) > arizona->external_dcvdd = true; > + else > + arizona->external_dcvdd = external_dcvdd; > > ldo1->regulator = devm_regulator_register(&pdev->dev, desc, &config); > > diff --git a/include/linux/mfd/arizona/pdata.h b/include/linux/mfd/arizona/pdata.h > index 43e875f..bfeecf1 100644 > --- a/include/linux/mfd/arizona/pdata.h > +++ b/include/linux/mfd/arizona/pdata.h > @@ -12,6 +12,7 @@ > #define _ARIZONA_PDATA_H > > #include <dt-bindings/mfd/arizona.h> > +#include <linux/regulator/arizona-ldo1.h> > #include <linux/regulator/arizona-micsupp.h> > > #define ARIZONA_GPN_DIR_MASK 0x8000 /* GPN_DIR */ > @@ -77,13 +78,12 @@ struct arizona_micd_range { > > struct arizona_pdata { > int reset; /** GPIO controlling /RESET, if any */ > - int ldoena; /** GPIO controlling LODENA, if any */ > > /** Regulator configuration for MICVDD */ > struct arizona_micsupp_pdata micvdd; > > /** Regulator configuration for LDO1 */ > - struct regulator_init_data *ldo1; > + struct arizona_ldo1_pdata ldo1; > > /** If a direct 32kHz clock is provided on an MCLK specify it here */ > int clk32k_src; > diff --git a/include/linux/regulator/arizona-ldo1.h b/include/linux/regulator/arizona-ldo1.h > new file mode 100644 > index 0000000..c685f12 > --- /dev/null > +++ b/include/linux/regulator/arizona-ldo1.h > @@ -0,0 +1,24 @@ > +/* > + * Platform data for Arizona LDO1 regulator > + * > + * Copyright 2017 Cirrus Logic > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + */ > + > +#ifndef ARIZONA_LDO1_H > +#define ARIZONA_LDO1_H > + > +struct regulator_init_data; > + > +struct arizona_ldo1_pdata { > + /** GPIO controlling LDOENA, if any */ > + int ldoena; > + > + /** Regulator configuration for LDO1 */ > + const struct regulator_init_data *init_data; > +}; > + > +#endif > -- > 1.9.1 > -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
next prev parent reply other threads:[~2017-04-24 11:50 UTC|newest] Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-04-18 10:43 [PATCH 0/7] regulator: arizona: Prepare for sharing with Madera codecs Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 10:43 ` [PATCH 1/7] regulator: arizona: Split KConfig options for LDO1 and MICSUPP regulators Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-25 15:46 ` Applied "regulator: arizona: Split KConfig options for LDO1 and MICSUPP regulators" to the regulator tree Mark Brown 2017-04-25 15:46 ` Mark Brown 2017-04-25 15:46 ` Mark Brown 2017-04-18 10:43 ` [PATCH 2/7] regulator: arizona-micsupp: Move pdata into a separate structure Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-24 11:50 ` Lee Jones 2017-04-24 11:50 ` Lee Jones 2017-04-25 15:46 ` Applied "regulator: arizona-micsupp: Move pdata into a separate structure" to the regulator tree Mark Brown 2017-04-25 15:46 ` Mark Brown 2017-04-25 15:46 ` Mark Brown 2017-04-18 10:43 ` [PATCH 3/7] regulator: arizona-micsupp: Make arizona_micsupp independent of struct arizona Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-25 15:46 ` Applied "regulator: arizona-micsupp: Make arizona_micsupp independent of struct arizona" to the regulator tree Mark Brown 2017-04-25 15:46 ` Mark Brown 2017-04-25 15:46 ` Mark Brown 2017-04-18 10:43 ` [PATCH 4/7] regulator: arizona-micsupp: Factor out generic initialization Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-25 15:46 ` Applied "regulator: arizona-micsupp: Factor out generic initialization" to the regulator tree Mark Brown 2017-04-25 15:46 ` Mark Brown 2017-04-25 15:46 ` Mark Brown 2017-04-18 10:43 ` [PATCH 5/7] regulator: arizona-ldo1: Move pdata into a separate structure Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 14:52 ` Krzysztof Kozlowski 2017-04-18 14:52 ` Krzysztof Kozlowski 2017-04-24 11:50 ` Lee Jones [this message] 2017-04-24 11:50 ` Lee Jones 2017-04-25 15:46 ` Applied "regulator: arizona-ldo1: Move pdata into a separate structure" to the regulator tree Mark Brown 2017-04-25 15:46 ` Mark Brown 2017-04-25 15:46 ` Mark Brown 2017-04-18 10:43 ` [PATCH 6/7] regulator: arizona-ldo1: Make arizona_ldo1 independent of struct arizona Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-25 15:46 ` Applied "regulator: arizona-ldo1: Make arizona_ldo1 independent of struct arizona" to the regulator tree Mark Brown 2017-04-25 15:46 ` Mark Brown 2017-04-25 15:46 ` Mark Brown 2017-04-18 10:43 ` [PATCH 7/7] regulator: arizona-ldo1: Factor out generic initialization Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-18 10:43 ` Richard Fitzgerald 2017-04-25 15:45 ` Applied "regulator: arizona-ldo1: Factor out generic initialization" to the regulator tree Mark Brown 2017-04-25 15:45 ` Mark Brown 2017-04-25 15:45 ` Mark Brown 2017-04-18 19:49 ` [PATCH 0/7] regulator: arizona: Prepare for sharing with Madera codecs Mark Brown 2017-04-18 19:49 ` Mark Brown
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=20170424115044.rejrwmi57uifxo7j@dell \ --to=lee.jones@linaro.org \ --cc=broonie@kernel.org \ --cc=kgene@kernel.org \ --cc=krzk@kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-samsung-soc@vger.kernel.org \ --cc=patches@opensource.wolfsonmicro.com \ --cc=rf@opensource.wolfsonmicro.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: linkBe 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.