All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laxman Dewangan <ldewangan@nvidia.com>
To: Krzysztof Kozlowski <k.kozlowski@samsung.com>,
	robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com,
	ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
	linus.walleij@linaro.org, gnurou@gmail.com, lee.jones@linaro.org,
	broonie@kernel.org, a.zummo@towertech.it,
	alexandre.belloni@free-electrons.com
Cc: lgirdwood@gmail.com, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org,
	rtc-linux@googlegroups.com, swarren@nvidia.com,
	treding@nvidia.com, Mallikarjun Kasoju <mkasoju@nvidia.com>
Subject: Re: [PATCH V2 6/6] regulator: max77620: add regulator driver for max77620/max20024
Date: Wed, 13 Jan 2016 17:09:55 +0530	[thread overview]
Message-ID: <5696378B.6070704@nvidia.com> (raw)
In-Reply-To: <5695A854.60108@samsung.com>


On Wednesday 13 January 2016 06:58 AM, Krzysztof Kozlowski wrote:
> On 12.01.2016 18:17, Laxman Dewangan wrote:
> +
> +	ret = of_regulator_match(&pdev->dev, np, max77620_regulator_matches,
> +			ARRAY_SIZE(max77620_regulator_matches));
> Why not using 'regulators_node' and getting rid of this and some code
> below? If you need to parse custom regulator properties use 'of_parse_cb'.
>

Yaah, this is something new and I think Mark also wanted to do this 
cleanup on his comment. I did not understand it previously. Looks cool now.

However, I have requirement to configure PMIC with some inital setting 
based on init_data (parsed) before regulator registration happened. Once 
I move to this new mecahinsm, the inti_data parsing and regulator init 
happen in the same function. So I need to have one callback from 
regulator_register to driver.
Something below. This will do the pre configuration before 
regulator_register happena dn machine constraint sets.

I can not use the init_data->regulator_init() as I need to have the init 
data passed to the driver.

Created sample patch below.

ldewangan@ldewanganubuntu-System-Product-Name:~/upstream/linux-next/linux-next/drivers/regulator$ 
git diff core.c ../../include/linux/regulator/driver.h
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 3308c6b..aa2ca20 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -3899,6 +3899,17 @@ regulator_register(const struct regulator_desc 
*regulator_desc,
                 rdev->dev.of_node = of_node_get(config->of_node);
         }

+       if (init_data && regulator_desc->pre_register_init) {
+               ret = regulator_desc->pre_register_init(regulator_desc,
+                                       config, init_data);
+               if (ret < 0) {
+                       dev_err(dev, "Pre register failed: %d\n", ret);
+                       kfree(rdev);
+                       kfree(config);
+                       return ERR_PTR(ret);
+               }
+       }
+
         mutex_lock(&regulator_list_mutex);

         mutex_init(&rdev->mutex);
diff --git a/include/linux/regulator/driver.h 
b/include/linux/regulator/driver.h
index 16ac9e1..fd1d989 100644
--- a/include/linux/regulator/driver.h
+++ b/include/linux/regulator/driver.h
@@ -280,6 +280,9 @@ struct regulator_desc {
         int (*of_parse_cb)(struct device_node *,
                             const struct regulator_desc *,
                             struct regulator_config *);
+       int (*pre_register_init)(const struct regulator_desc *,
+                       struct regulator_config *,
+                       struct regulator_init_data *);
         int id;
         bool continuous_voltage_range;
         unsigned n_voltages;


WARNING: multiple messages have this Message-ID (diff)
From: Laxman Dewangan <ldewangan@nvidia.com>
To: Krzysztof Kozlowski <k.kozlowski@samsung.com>,
	<robh+dt@kernel.org>, <pawel.moll@arm.com>,
	<mark.rutland@arm.com>, <ijc+devicetree@hellion.org.uk>,
	<galak@codeaurora.org>, <linus.walleij@linaro.org>,
	<gnurou@gmail.com>, <lee.jones@linaro.org>, <broonie@kernel.org>,
	<a.zummo@towertech.it>, <alexandre.belloni@free-electrons.com>
Cc: <lgirdwood@gmail.com>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-gpio@vger.kernel.org>,
	<rtc-linux@googlegroups.com>, <swarren@nvidia.com>,
	<treding@nvidia.com>, Mallikarjun Kasoju <mkasoju@nvidia.com>
Subject: [rtc-linux] Re: [PATCH V2 6/6] regulator: max77620: add regulator driver for max77620/max20024
Date: Wed, 13 Jan 2016 17:09:55 +0530	[thread overview]
Message-ID: <5696378B.6070704@nvidia.com> (raw)
In-Reply-To: <5695A854.60108@samsung.com>


On Wednesday 13 January 2016 06:58 AM, Krzysztof Kozlowski wrote:
> On 12.01.2016 18:17, Laxman Dewangan wrote:
> +
> +	ret = of_regulator_match(&pdev->dev, np, max77620_regulator_matches,
> +			ARRAY_SIZE(max77620_regulator_matches));
> Why not using 'regulators_node' and getting rid of this and some code
> below? If you need to parse custom regulator properties use 'of_parse_cb'.
>

Yaah, this is something new and I think Mark also wanted to do this 
cleanup on his comment. I did not understand it previously. Looks cool now.

However, I have requirement to configure PMIC with some inital setting 
based on init_data (parsed) before regulator registration happened. Once 
I move to this new mecahinsm, the inti_data parsing and regulator init 
happen in the same function. So I need to have one callback from 
regulator_register to driver.
Something below. This will do the pre configuration before 
regulator_register happena dn machine constraint sets.

I can not use the init_data->regulator_init() as I need to have the init 
data passed to the driver.

Created sample patch below.

ldewangan@ldewanganubuntu-System-Product-Name:~/upstream/linux-next/linux-next/drivers/regulator$ 
git diff core.c ../../include/linux/regulator/driver.h
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 3308c6b..aa2ca20 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -3899,6 +3899,17 @@ regulator_register(const struct regulator_desc 
*regulator_desc,
                 rdev->dev.of_node = of_node_get(config->of_node);
         }

+       if (init_data && regulator_desc->pre_register_init) {
+               ret = regulator_desc->pre_register_init(regulator_desc,
+                                       config, init_data);
+               if (ret < 0) {
+                       dev_err(dev, "Pre register failed: %d\n", ret);
+                       kfree(rdev);
+                       kfree(config);
+                       return ERR_PTR(ret);
+               }
+       }
+
         mutex_lock(&regulator_list_mutex);

         mutex_init(&rdev->mutex);
diff --git a/include/linux/regulator/driver.h 
b/include/linux/regulator/driver.h
index 16ac9e1..fd1d989 100644
--- a/include/linux/regulator/driver.h
+++ b/include/linux/regulator/driver.h
@@ -280,6 +280,9 @@ struct regulator_desc {
         int (*of_parse_cb)(struct device_node *,
                             const struct regulator_desc *,
                             struct regulator_config *);
+       int (*pre_register_init)(const struct regulator_desc *,
+                       struct regulator_config *,
+                       struct regulator_init_data *);
         int id;
         bool continuous_voltage_range;
         unsigned n_voltages;

-- 
-- 
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: Laxman Dewangan <ldewangan@nvidia.com>
To: Krzysztof Kozlowski <k.kozlowski@samsung.com>,
	<robh+dt@kernel.org>, <pawel.moll@arm.com>,
	<mark.rutland@arm.com>, <ijc+devicetree@hellion.org.uk>,
	<galak@codeaurora.org>, <linus.walleij@linaro.org>,
	<gnurou@gmail.com>, <lee.jones@linaro.org>, <broonie@kernel.org>,
	<a.zummo@towertech.it>, <alexandre.belloni@free-electrons.com>
Cc: <lgirdwood@gmail.com>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-gpio@vger.kernel.org>,
	<rtc-linux@googlegroups.com>, <swarren@nvidia.com>,
	<treding@nvidia.com>, Mallikarjun Kasoju <mkasoju@nvidia.com>
Subject: Re: [PATCH V2 6/6] regulator: max77620: add regulator driver for max77620/max20024
Date: Wed, 13 Jan 2016 17:09:55 +0530	[thread overview]
Message-ID: <5696378B.6070704@nvidia.com> (raw)
In-Reply-To: <5695A854.60108@samsung.com>


On Wednesday 13 January 2016 06:58 AM, Krzysztof Kozlowski wrote:
> On 12.01.2016 18:17, Laxman Dewangan wrote:
> +
> +	ret = of_regulator_match(&pdev->dev, np, max77620_regulator_matches,
> +			ARRAY_SIZE(max77620_regulator_matches));
> Why not using 'regulators_node' and getting rid of this and some code
> below? If you need to parse custom regulator properties use 'of_parse_cb'.
>

Yaah, this is something new and I think Mark also wanted to do this 
cleanup on his comment. I did not understand it previously. Looks cool now.

However, I have requirement to configure PMIC with some inital setting 
based on init_data (parsed) before regulator registration happened. Once 
I move to this new mecahinsm, the inti_data parsing and regulator init 
happen in the same function. So I need to have one callback from 
regulator_register to driver.
Something below. This will do the pre configuration before 
regulator_register happena dn machine constraint sets.

I can not use the init_data->regulator_init() as I need to have the init 
data passed to the driver.

Created sample patch below.

ldewangan@ldewanganubuntu-System-Product-Name:~/upstream/linux-next/linux-next/drivers/regulator$ 
git diff core.c ../../include/linux/regulator/driver.h
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 3308c6b..aa2ca20 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -3899,6 +3899,17 @@ regulator_register(const struct regulator_desc 
*regulator_desc,
                 rdev->dev.of_node = of_node_get(config->of_node);
         }

+       if (init_data && regulator_desc->pre_register_init) {
+               ret = regulator_desc->pre_register_init(regulator_desc,
+                                       config, init_data);
+               if (ret < 0) {
+                       dev_err(dev, "Pre register failed: %d\n", ret);
+                       kfree(rdev);
+                       kfree(config);
+                       return ERR_PTR(ret);
+               }
+       }
+
         mutex_lock(&regulator_list_mutex);

         mutex_init(&rdev->mutex);
diff --git a/include/linux/regulator/driver.h 
b/include/linux/regulator/driver.h
index 16ac9e1..fd1d989 100644
--- a/include/linux/regulator/driver.h
+++ b/include/linux/regulator/driver.h
@@ -280,6 +280,9 @@ struct regulator_desc {
         int (*of_parse_cb)(struct device_node *,
                             const struct regulator_desc *,
                             struct regulator_config *);
+       int (*pre_register_init)(const struct regulator_desc *,
+                       struct regulator_config *,
+                       struct regulator_init_data *);
         int id;
         bool continuous_voltage_range;
         unsigned n_voltages;

  reply	other threads:[~2016-01-13 11:50 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-12  9:17 [PATCH V2 0/6] Add support for MAXIM MAX77620/MAX20024 PMIC Laxman Dewangan
2016-01-12  9:17 ` Laxman Dewangan
2016-01-12  9:17 ` [rtc-linux] " Laxman Dewangan
2016-01-12  9:17 ` [PATCH V2 1/6] DT: mfd: add device-tree binding doc fro PMIC max77620/max20024 Laxman Dewangan
2016-01-12  9:17   ` Laxman Dewangan
2016-01-12  9:17   ` [rtc-linux] " Laxman Dewangan
     [not found]   ` <1452590273-16421-2-git-send-email-ldewangan-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-01-13  2:07     ` Rob Herring
2016-01-13  2:07       ` Rob Herring
2016-01-13  2:07       ` [rtc-linux] " Rob Herring
2016-01-12  9:17 ` [PATCH V2 2/6] mfd: max77620: add core driver for MAX77620/MAX20024 Laxman Dewangan
2016-01-12  9:17   ` Laxman Dewangan
2016-01-12  9:17   ` [rtc-linux] " Laxman Dewangan
2016-01-13  0:47   ` Krzysztof Kozlowski
2016-01-13  0:47     ` [rtc-linux] " Krzysztof Kozlowski
2016-01-13  9:00     ` Laxman Dewangan
2016-01-13  9:00       ` Laxman Dewangan
2016-01-13  9:00       ` [rtc-linux] " Laxman Dewangan
2016-01-13 10:11       ` Alexandre Belloni
2016-01-13 10:11         ` [rtc-linux] " Alexandre Belloni
2016-01-12  9:17 ` [PATCH V2 3/6] pinctrl: max77620: add pincontrol " Laxman Dewangan
2016-01-12  9:17   ` Laxman Dewangan
2016-01-12  9:17   ` [rtc-linux] " Laxman Dewangan
2016-01-12  9:17 ` [PATCH V2 4/6] gpio: max77620: add gpio " Laxman Dewangan
2016-01-12  9:17   ` Laxman Dewangan
2016-01-12  9:17   ` [rtc-linux] " Laxman Dewangan
2016-01-12  9:17 ` [PATCH V2 5/6] rtc: max77xxx: add RTC driver for Maxim MAX77xxx series RTC IP Laxman Dewangan
2016-01-12  9:17   ` Laxman Dewangan
2016-01-12  9:17   ` [rtc-linux] " Laxman Dewangan
2016-01-13  0:06   ` Krzysztof Kozlowski
2016-01-13  0:06     ` [rtc-linux] " Krzysztof Kozlowski
2016-01-13  4:07     ` Laxman Dewangan
2016-01-13  4:07       ` Laxman Dewangan
2016-01-13  4:07       ` [rtc-linux] " Laxman Dewangan
2016-01-13  4:28       ` Krzysztof Kozlowski
2016-01-13  4:28         ` [rtc-linux] " Krzysztof Kozlowski
2016-01-13  4:25         ` Laxman Dewangan
2016-01-13  4:25           ` Laxman Dewangan
2016-01-13  4:25           ` [rtc-linux] " Laxman Dewangan
     [not found]           ` <5695D1AF.9000806-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-01-13 14:59             ` Laxman Dewangan
2016-01-13 14:59               ` Laxman Dewangan
2016-01-13 14:59               ` [rtc-linux] " Laxman Dewangan
2016-01-14  0:50               ` Krzysztof Kozlowski
2016-01-14  0:50                 ` [rtc-linux] " Krzysztof Kozlowski
     [not found]                 ` <5696F0C4.1060904-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2016-01-14  1:20                   ` Krzysztof Kozlowski
2016-01-14  1:20                     ` Krzysztof Kozlowski
2016-01-14  1:20                     ` [rtc-linux] " Krzysztof Kozlowski
2016-01-14 11:50                     ` Laxman Dewangan
2016-01-14 11:50                       ` Laxman Dewangan
2016-01-14 11:50                       ` [rtc-linux] " Laxman Dewangan
2016-01-15  1:50                       ` Javier Martinez Canillas
2016-01-15  1:50                         ` [rtc-linux] " Javier Martinez Canillas
2016-01-18  4:27                         ` Krzysztof Kozlowski
2016-01-18  4:27                           ` [rtc-linux] " Krzysztof Kozlowski
2016-01-18 12:01                           ` Laxman Dewangan
2016-01-18 12:01                             ` Laxman Dewangan
2016-01-18 12:01                             ` [rtc-linux] " Laxman Dewangan
2016-01-18 12:52                             ` Javier Martinez Canillas
2016-01-18 12:52                               ` [rtc-linux] " Javier Martinez Canillas
2016-01-14 14:20                     ` Mark Brown
2016-01-14 14:20                       ` [rtc-linux] " Mark Brown
2016-01-18  4:23                       ` Krzysztof Kozlowski
2016-01-18  4:23                         ` [rtc-linux] " Krzysztof Kozlowski
2016-01-12  9:17 ` [PATCH V2 6/6] regulator: max77620: add regulator driver for max77620/max20024 Laxman Dewangan
2016-01-12  9:17   ` Laxman Dewangan
2016-01-12  9:17   ` [rtc-linux] " Laxman Dewangan
2016-01-13  1:28   ` Krzysztof Kozlowski
2016-01-13  1:28     ` [rtc-linux] " Krzysztof Kozlowski
2016-01-13 11:39     ` Laxman Dewangan [this message]
2016-01-13 11:39       ` Laxman Dewangan
2016-01-13 11:39       ` [rtc-linux] " Laxman Dewangan
2016-01-13 11:57       ` Mark Brown
2016-01-13 11:57         ` [rtc-linux] " Mark Brown
2016-01-13 12:05         ` Laxman Dewangan
2016-01-13 12:05           ` Laxman Dewangan
2016-01-13 12:05           ` [rtc-linux] " Laxman Dewangan
2016-01-13 12:31           ` Mark Brown
2016-01-13 12:31             ` [rtc-linux] " Mark Brown
2016-01-13 12:37             ` Laxman Dewangan
2016-01-13 12:37               ` Laxman Dewangan
2016-01-13 12:37               ` [rtc-linux] " Laxman Dewangan
2016-01-13 13:09               ` Mark Brown
2016-01-13 13:09                 ` [rtc-linux] " Mark Brown
2016-01-13 13:11                 ` Laxman Dewangan
2016-01-13 13:11                   ` Laxman Dewangan
2016-01-13 13:11                   ` [rtc-linux] " Laxman Dewangan
     [not found]                   ` <56964CEF.3030900-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-01-13 14:20                     ` Mark Brown
2016-01-13 14:20                       ` Mark Brown
2016-01-13 14:20                       ` [rtc-linux] " Mark Brown
2016-01-13 14:42                       ` Laxman Dewangan
2016-01-13 14:42                         ` Laxman Dewangan
2016-01-13 14:42                         ` [rtc-linux] " Laxman Dewangan
     [not found]                         ` <56966242.4080601-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-01-13 15:51                           ` Mark Brown
2016-01-13 15:51                             ` Mark Brown
2016-01-13 15:51                             ` [rtc-linux] " 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=5696378B.6070704@nvidia.com \
    --to=ldewangan@nvidia.com \
    --cc=a.zummo@towertech.it \
    --cc=alexandre.belloni@free-electrons.com \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=gnurou@gmail.com \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=k.kozlowski@samsung.com \
    --cc=lee.jones@linaro.org \
    --cc=lgirdwood@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mkasoju@nvidia.com \
    --cc=pawel.moll@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=rtc-linux@googlegroups.com \
    --cc=swarren@nvidia.com \
    --cc=treding@nvidia.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.