2019-03-12 15:50:31

by Axel Lin

[permalink] [raw]
Subject: [PATCH 1/2] regulator: da9052: Convert to regulator core's simplified DT parsing code

Use regulator core's simplified DT parsing code to simply the driver
implementation.

Signed-off-by: Axel Lin <[email protected]>
---
Hi,
I don't have this h/w, so please help testing it.
Thanks,
Axel

drivers/regulator/da9052-regulator.c | 33 +++++-----------------------
1 file changed, 6 insertions(+), 27 deletions(-)

diff --git a/drivers/regulator/da9052-regulator.c b/drivers/regulator/da9052-regulator.c
index cefa3558236d..98d486372b8c 100644
--- a/drivers/regulator/da9052-regulator.c
+++ b/drivers/regulator/da9052-regulator.c
@@ -294,6 +294,8 @@ static const struct regulator_ops da9052_ldo_ops = {
{\
.reg_desc = {\
.name = #_name,\
+ .of_match = of_match_ptr(#_name),\
+ .regulators_node = of_match_ptr("regulators"),\
.ops = &da9052_ldo_ops,\
.type = REGULATOR_VOLTAGE,\
.id = DA9052_ID_##_id,\
@@ -314,6 +316,8 @@ static const struct regulator_ops da9052_ldo_ops = {
{\
.reg_desc = {\
.name = #_name,\
+ .of_match = of_match_ptr(#_name),\
+ .regulators_node = of_match_ptr("regulators"),\
.ops = &da9052_dcdc_ops,\
.type = REGULATOR_VOLTAGE,\
.id = DA9052_ID_##_id,\
@@ -417,36 +421,11 @@ static int da9052_regulator_probe(struct platform_device *pdev)
return -EINVAL;
}

- config.dev = &pdev->dev;
+ config.dev = da9052->dev;
config.driver_data = regulator;
config.regmap = da9052->regmap;
- if (pdata) {
+ if (pdata)
config.init_data = pdata->regulators[cell->id];
- } else {
-#ifdef CONFIG_OF
- struct device_node *nproot = da9052->dev->of_node;
- struct device_node *np;
-
- if (!nproot)
- return -ENODEV;
-
- nproot = of_get_child_by_name(nproot, "regulators");
- if (!nproot)
- return -ENODEV;
-
- for_each_child_of_node(nproot, np) {
- if (of_node_name_eq(np,
- regulator->info->reg_desc.name)) {
- config.init_data = of_get_regulator_init_data(
- &pdev->dev, np,
- &regulator->info->reg_desc);
- config.of_node = np;
- break;
- }
- }
- of_node_put(nproot);
-#endif
- }

regulator->rdev = devm_regulator_register(&pdev->dev,
&regulator->info->reg_desc,
--
2.17.1



2019-03-12 15:49:22

by Axel Lin

[permalink] [raw]
Subject: [PATCH 2/2] regulator: da9055: Convert to regulator core's simplified DT parsing code

Use regulator core's simplified DT parsing code to simply the driver
implementation.

Signed-off-by: Axel Lin <[email protected]>
---
drivers/regulator/da9055-regulator.c | 67 +++-------------------------
1 file changed, 6 insertions(+), 61 deletions(-)

diff --git a/drivers/regulator/da9055-regulator.c b/drivers/regulator/da9055-regulator.c
index 3c6fac793658..b7b4dddf5509 100644
--- a/drivers/regulator/da9055-regulator.c
+++ b/drivers/regulator/da9055-regulator.c
@@ -338,6 +338,8 @@ static const struct regulator_ops da9055_ldo_ops = {
{\
.reg_desc = {\
.name = #_id,\
+ .of_match = of_match_ptr(#_id),\
+ .regulators_node = of_match_ptr("regulators"),\
.ops = &da9055_ldo_ops,\
.type = REGULATOR_VOLTAGE,\
.id = DA9055_ID_##_id,\
@@ -366,6 +368,8 @@ static const struct regulator_ops da9055_ldo_ops = {
{\
.reg_desc = {\
.name = #_id,\
+ .of_match = of_match_ptr(#_id),\
+ .regulators_node = of_match_ptr("regulators"),\
.ops = &da9055_buck_ops,\
.type = REGULATOR_VOLTAGE,\
.id = DA9055_ID_##_id,\
@@ -507,59 +511,6 @@ static inline struct da9055_regulator_info *find_regulator_info(int id)
return NULL;
}

-#ifdef CONFIG_OF
-static struct of_regulator_match da9055_reg_matches[] = {
- { .name = "BUCK1", },
- { .name = "BUCK2", },
- { .name = "LDO1", },
- { .name = "LDO2", },
- { .name = "LDO3", },
- { .name = "LDO4", },
- { .name = "LDO5", },
- { .name = "LDO6", },
-};
-
-static int da9055_regulator_dt_init(struct platform_device *pdev,
- struct da9055_regulator *regulator,
- struct regulator_config *config,
- int regid)
-{
- struct device_node *nproot, *np;
- int ret;
-
- nproot = of_node_get(pdev->dev.parent->of_node);
- if (!nproot)
- return -ENODEV;
-
- np = of_get_child_by_name(nproot, "regulators");
- if (!np)
- return -ENODEV;
-
- ret = of_regulator_match(&pdev->dev, np, &da9055_reg_matches[regid], 1);
- of_node_put(nproot);
- if (ret < 0) {
- dev_err(&pdev->dev, "Error matching regulator: %d\n", ret);
- return ret;
- }
-
- config->init_data = da9055_reg_matches[regid].init_data;
- config->of_node = da9055_reg_matches[regid].of_node;
-
- if (!config->of_node)
- return -ENODEV;
-
- return 0;
-}
-#else
-static inline int da9055_regulator_dt_init(struct platform_device *pdev,
- struct da9055_regulator *regulator,
- struct regulator_config *config,
- int regid)
-{
- return -ENODEV;
-}
-#endif /* CONFIG_OF */
-
static int da9055_regulator_probe(struct platform_device *pdev)
{
struct regulator_config config = { };
@@ -580,18 +531,12 @@ static int da9055_regulator_probe(struct platform_device *pdev)
}

regulator->da9055 = da9055;
- config.dev = &pdev->dev;
+ config.dev = da9055->dev;
config.driver_data = regulator;
config.regmap = da9055->regmap;

- if (pdata) {
+ if (pdata)
config.init_data = pdata->regulators[pdev->id];
- } else {
- ret = da9055_regulator_dt_init(pdev, regulator, &config,
- pdev->id);
- if (ret < 0)
- return ret;
- }

ret = da9055_gpio_init(regulator, &config, pdata, pdev->id);
if (ret < 0)
--
2.17.1


2019-03-18 13:58:05

by Steve Twiss

[permalink] [raw]
Subject: RE: [PATCH 2/2] regulator: da9055: Convert to regulator core's simplified DT parsing code

Hi Mark,

For the DA9055, I have spoken with the management here. Dialog Semiconductor are
"no longer building the DA9055"; the device doesn't appear on the support portal
or website and; I have been told, "you can remove [it] from your list of
supported products".

But, as always: I realise that the Linux community will have different aims and
I would like to support those as much as I can.

There are many reasons to keep supporting the drivers, and not least because of
your comments from way-back, in 2014:

On Fri, 14 Feb 2014 14:56:43, Mark Brown wrote:
> We do fairly often see problems with people still using old boards for various
> reasons [and it] does not mean that the old silicon has been retired by users
> (even if [it is] just [used] for comparison purposes [...] - "that worked on
> the rev A boards, did we break the software?").

But it does seem that around 97% of this driver has not has not changed since
2014, so we are happy here at Dialog to remove our support from this DA9055
device.

Is there a Linux device driver retirement plan for obsoleted products? :)

Regards,
Steve

On 12 March 2019 15:48, Axel Lin wrote:

> To: Mark Brown <[email protected]>
> Subject: [PATCH 2/2] regulator: da9055: Convert to regulator core's simplified DT
> parsing code
>
> Use regulator core's simplified DT parsing code to simply the driver
> implementation.
>
> Signed-off-by: Axel Lin <[email protected]>
> ---
> drivers/regulator/da9055-regulator.c | 67 +++-------------------------
> 1 file changed, 6 insertions(+), 61 deletions(-)
>
> diff --git a/drivers/regulator/da9055-regulator.c b/drivers/regulator/da9055-
> regulator.c
> index 3c6fac793658..b7b4dddf5509 100644
> --- a/drivers/regulator/da9055-regulator.c
> +++ b/drivers/regulator/da9055-regulator.c
> @@ -338,6 +338,8 @@ static const struct regulator_ops da9055_ldo_ops = {
> {\
> .reg_desc = {\
> .name = #_id,\
> + .of_match = of_match_ptr(#_id),\
> + .regulators_node = of_match_ptr("regulators"),\
> .ops = &da9055_ldo_ops,\
> .type = REGULATOR_VOLTAGE,\
> .id = DA9055_ID_##_id,\
> @@ -366,6 +368,8 @@ static const struct regulator_ops da9055_ldo_ops = {
> {\
> .reg_desc = {\
> .name = #_id,\
> + .of_match = of_match_ptr(#_id),\
> + .regulators_node = of_match_ptr("regulators"),\
> .ops = &da9055_buck_ops,\
> .type = REGULATOR_VOLTAGE,\
> .id = DA9055_ID_##_id,\
> @@ -507,59 +511,6 @@ static inline struct da9055_regulator_info
> *find_regulator_info(int id)
> return NULL;
> }
>
> -#ifdef CONFIG_OF
> -static struct of_regulator_match da9055_reg_matches[] = {
> - { .name = "BUCK1", },
> - { .name = "BUCK2", },
> - { .name = "LDO1", },
> - { .name = "LDO2", },
> - { .name = "LDO3", },
> - { .name = "LDO4", },
> - { .name = "LDO5", },
> - { .name = "LDO6", },
> -};
> -
> -static int da9055_regulator_dt_init(struct platform_device *pdev,
> - struct da9055_regulator *regulator,
> - struct regulator_config *config,
> - int regid)
> -{
> - struct device_node *nproot, *np;
> - int ret;
> -
> - nproot = of_node_get(pdev->dev.parent->of_node);
> - if (!nproot)
> - return -ENODEV;
> -
> - np = of_get_child_by_name(nproot, "regulators");
> - if (!np)
> - return -ENODEV;
> -
> - ret = of_regulator_match(&pdev->dev, np,
> &da9055_reg_matches[regid], 1);
> - of_node_put(nproot);
> - if (ret < 0) {
> - dev_err(&pdev->dev, "Error matching regulator: %d\n", ret);
> - return ret;
> - }
> -
> - config->init_data = da9055_reg_matches[regid].init_data;
> - config->of_node = da9055_reg_matches[regid].of_node;
> -
> - if (!config->of_node)
> - return -ENODEV;
> -
> - return 0;
> -}
> -#else
> -static inline int da9055_regulator_dt_init(struct platform_device *pdev,
> - struct da9055_regulator *regulator,
> - struct regulator_config *config,
> - int regid)
> -{
> - return -ENODEV;
> -}
> -#endif /* CONFIG_OF */
> -
> static int da9055_regulator_probe(struct platform_device *pdev)
> {
> struct regulator_config config = { };
> @@ -580,18 +531,12 @@ static int da9055_regulator_probe(struct
> platform_device *pdev)
> }
>
> regulator->da9055 = da9055;
> - config.dev = &pdev->dev;
> + config.dev = da9055->dev;
> config.driver_data = regulator;
> config.regmap = da9055->regmap;
>
> - if (pdata) {
> + if (pdata)
> config.init_data = pdata->regulators[pdev->id];
> - } else {
> - ret = da9055_regulator_dt_init(pdev, regulator, &config,
> - pdev->id);
> - if (ret < 0)
> - return ret;
> - }
>
> ret = da9055_gpio_init(regulator, &config, pdata, pdev->id);
> if (ret < 0)
> --
> 2.17.1


2019-03-18 14:27:08

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH 2/2] regulator: da9055: Convert to regulator core's simplified DT parsing code

On Mon, Mar 18, 2019 at 01:56:21PM +0000, Steve Twiss wrote:

> But it does seem that around 97% of this driver has not has not changed since
> 2014, so we are happy here at Dialog to remove our support from this DA9055
> device.

> Is there a Linux device driver retirement plan for obsoleted products? :)

Well, we can delete stuff but personally I don't see a big concern with
leaving things sitting there so long as they're not getting in anyone's
way - it's more effort to figure out if there's any users (like with
this if there's people with old boards somewhere even if the product
isn't being sold yet) than it is just to leave things sitting there. If
you don't want to do any support on it that's fine though.


Attachments:
(No filename) (736.00 B)
signature.asc (499.00 B)
Download all attachments