All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Kocialkowski <contact-W9ppeneeCTY@public.gmane.org>
To: Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	"Rob Herring" <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	"Pawel Moll" <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
	"Mark Rutland" <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	"Ian Campbell"
	<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
	"Kumar Gala" <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	"Russell King" <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
	"Benoît Cousson"
	<bcousson-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>,
	"Tony Lindgren" <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>,
	"Liam Girdwood"
	<lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"Milo Kim" <milo.kim-l0cyMroinI0@public.gmane.org>,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 4/6] regulator: lp872x: Add enable GPIO pin support
Date: Thu, 24 Dec 2015 19:12:53 +0100	[thread overview]
Message-ID: <1450980773.11913.3.camel@collins> (raw)
In-Reply-To: <20151223115632.GS16023-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 2342 bytes --]

Le mercredi 23 décembre 2015 à 11:56 +0000, Mark Brown a écrit :
> On Wed, Dec 23, 2015 at 11:58:37AM +0100, Paul Kocialkowski wrote:
> 
> > +	gpio = lp->pdata->enable_gpio;
> > +	if (!gpio_is_valid(gpio))
> > +		return 0;
> > +
> > +	/* Always set enable GPIO high. */
> > +	ret = devm_gpio_request_one(lp->dev, gpio, GPIOF_OUT_INIT_HIGH, "LP872X EN");
> > +	if (ret) {
> > +		dev_err(lp->dev, "gpio request err: %d\n", ret);
> > +		return ret;
> > +	}
> 
> This isn't really adding support for the enable GPIO as the changelog
> suggests, it's requesting but not managing the GPIO.  Since there is
> core support for manging enable GPIOs this seems especially silly,
> please tell the core about the GPIO and then it will work at runtime
> too.

It looks like the core bindings for GPIO can only be used instead of the
rdev->desc->ops->enable callback, not jointly, which doesn't fit my use
case, where both the GPIO and register write have to be used to enable
regulators.

I think it would be worth making it possible to use both in core, since
that situation is probably shared with other regulators. I suggest the
following diff (that would be split into a separate patch in v2 of this
series):

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index e92f344..dd0674f 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1963,7 +1963,6 @@ static int regulator_ena_gpio_ctrl(struct
regulator_dev *rdev, bool enable)
 		if (pin->enable_count == 0)
 			gpiod_set_value_cansleep(pin->gpiod,
 						 !pin->ena_gpio_invert);
-
 		pin->enable_count++;
 	} else {
 		if (pin->enable_count > 1) {
@@ -2063,6 +2062,14 @@ static int _regulator_do_enable(struct
regulator_dev *rdev)
 		}
 	}
 
+	if (rdev->desc->ops->enable) {
+		ret = rdev->desc->ops->enable(rdev);
+		if (ret < 0)
+			return ret;
+	} else if (!rdev->ena_pin) {
+		return -EINVAL;
+	}
+
 	if (rdev->ena_pin) {
 		if (!rdev->ena_gpio_state) {
 			ret = regulator_ena_gpio_ctrl(rdev, true);
@@ -2070,10 +2077,6 @@ static int _regulator_do_enable(struct
regulator_dev *rdev)
 				return ret;
 			rdev->ena_gpio_state = 1;
 		}
-	} else if (rdev->desc->ops->enable) {
-		ret = rdev->desc->ops->enable(rdev);
-		if (ret < 0)
-			return ret;
 	} else {
 		return -EINVAL;
 	}

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: contact@paulk.fr (Paul Kocialkowski)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/6] regulator: lp872x: Add enable GPIO pin support
Date: Thu, 24 Dec 2015 19:12:53 +0100	[thread overview]
Message-ID: <1450980773.11913.3.camel@collins> (raw)
In-Reply-To: <20151223115632.GS16023@sirena.org.uk>

Le mercredi 23 d?cembre 2015 ? 11:56 +0000, Mark Brown a ?crit :
> On Wed, Dec 23, 2015 at 11:58:37AM +0100, Paul Kocialkowski wrote:
> 
> > +	gpio = lp->pdata->enable_gpio;
> > +	if (!gpio_is_valid(gpio))
> > +		return 0;
> > +
> > +	/* Always set enable GPIO high. */
> > +	ret = devm_gpio_request_one(lp->dev, gpio, GPIOF_OUT_INIT_HIGH, "LP872X EN");
> > +	if (ret) {
> > +		dev_err(lp->dev, "gpio request err: %d\n", ret);
> > +		return ret;
> > +	}
> 
> This isn't really adding support for the enable GPIO as the changelog
> suggests, it's requesting but not managing the GPIO.  Since there is
> core support for manging enable GPIOs this seems especially silly,
> please tell the core about the GPIO and then it will work at runtime
> too.

It looks like the core bindings for GPIO can only be used instead of the
rdev->desc->ops->enable callback, not jointly, which doesn't fit my use
case, where both the GPIO and register write have to be used to enable
regulators.

I think it would be worth making it possible to use both in core, since
that situation is probably shared with other regulators. I suggest the
following diff (that would be split into a separate patch in v2 of this
series):

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index e92f344..dd0674f 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1963,7 +1963,6 @@ static int regulator_ena_gpio_ctrl(struct
regulator_dev *rdev, bool enable)
 		if (pin->enable_count == 0)
 			gpiod_set_value_cansleep(pin->gpiod,
 						 !pin->ena_gpio_invert);
-
 		pin->enable_count++;
 	} else {
 		if (pin->enable_count > 1) {
@@ -2063,6 +2062,14 @@ static int _regulator_do_enable(struct
regulator_dev *rdev)
 		}
 	}
 
+	if (rdev->desc->ops->enable) {
+		ret = rdev->desc->ops->enable(rdev);
+		if (ret < 0)
+			return ret;
+	} else if (!rdev->ena_pin) {
+		return -EINVAL;
+	}
+
 	if (rdev->ena_pin) {
 		if (!rdev->ena_gpio_state) {
 			ret = regulator_ena_gpio_ctrl(rdev, true);
@@ -2070,10 +2077,6 @@ static int _regulator_do_enable(struct
regulator_dev *rdev)
 				return ret;
 			rdev->ena_gpio_state = 1;
 		}
-	} else if (rdev->desc->ops->enable) {
-		ret = rdev->desc->ops->enable(rdev);
-		if (ret < 0)
-			return ret;
 	} else {
 		return -EINVAL;
 	}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151224/1f3f065a/attachment.sig>

WARNING: multiple messages have this Message-ID (diff)
From: Paul Kocialkowski <contact@paulk.fr>
To: Mark Brown <broonie@kernel.org>
Cc: linux-kernel@vger.kernel.org, "Rob Herring" <robh+dt@kernel.org>,
	"Pawel Moll" <pawel.moll@arm.com>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Ian Campbell" <ijc+devicetree@hellion.org.uk>,
	"Kumar Gala" <galak@codeaurora.org>,
	"Russell King" <linux@arm.linux.org.uk>,
	"Benoît Cousson" <bcousson@baylibre.com>,
	"Tony Lindgren" <tony@atomide.com>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Milo Kim" <milo.kim@ti.com>,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-omap@vger.kernel.org
Subject: Re: [PATCH 4/6] regulator: lp872x: Add enable GPIO pin support
Date: Thu, 24 Dec 2015 19:12:53 +0100	[thread overview]
Message-ID: <1450980773.11913.3.camel@collins> (raw)
In-Reply-To: <20151223115632.GS16023@sirena.org.uk>

[-- Attachment #1: Type: text/plain, Size: 2342 bytes --]

Le mercredi 23 décembre 2015 à 11:56 +0000, Mark Brown a écrit :
> On Wed, Dec 23, 2015 at 11:58:37AM +0100, Paul Kocialkowski wrote:
> 
> > +	gpio = lp->pdata->enable_gpio;
> > +	if (!gpio_is_valid(gpio))
> > +		return 0;
> > +
> > +	/* Always set enable GPIO high. */
> > +	ret = devm_gpio_request_one(lp->dev, gpio, GPIOF_OUT_INIT_HIGH, "LP872X EN");
> > +	if (ret) {
> > +		dev_err(lp->dev, "gpio request err: %d\n", ret);
> > +		return ret;
> > +	}
> 
> This isn't really adding support for the enable GPIO as the changelog
> suggests, it's requesting but not managing the GPIO.  Since there is
> core support for manging enable GPIOs this seems especially silly,
> please tell the core about the GPIO and then it will work at runtime
> too.

It looks like the core bindings for GPIO can only be used instead of the
rdev->desc->ops->enable callback, not jointly, which doesn't fit my use
case, where both the GPIO and register write have to be used to enable
regulators.

I think it would be worth making it possible to use both in core, since
that situation is probably shared with other regulators. I suggest the
following diff (that would be split into a separate patch in v2 of this
series):

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index e92f344..dd0674f 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1963,7 +1963,6 @@ static int regulator_ena_gpio_ctrl(struct
regulator_dev *rdev, bool enable)
 		if (pin->enable_count == 0)
 			gpiod_set_value_cansleep(pin->gpiod,
 						 !pin->ena_gpio_invert);
-
 		pin->enable_count++;
 	} else {
 		if (pin->enable_count > 1) {
@@ -2063,6 +2062,14 @@ static int _regulator_do_enable(struct
regulator_dev *rdev)
 		}
 	}
 
+	if (rdev->desc->ops->enable) {
+		ret = rdev->desc->ops->enable(rdev);
+		if (ret < 0)
+			return ret;
+	} else if (!rdev->ena_pin) {
+		return -EINVAL;
+	}
+
 	if (rdev->ena_pin) {
 		if (!rdev->ena_gpio_state) {
 			ret = regulator_ena_gpio_ctrl(rdev, true);
@@ -2070,10 +2077,6 @@ static int _regulator_do_enable(struct
regulator_dev *rdev)
 				return ret;
 			rdev->ena_gpio_state = 1;
 		}
-	} else if (rdev->desc->ops->enable) {
-		ret = rdev->desc->ops->enable(rdev);
-		if (ret < 0)
-			return ret;
 	} else {
 		return -EINVAL;
 	}

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  parent reply	other threads:[~2015-12-24 18:12 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-23 10:58 [PATCH 0/6] LG Optimus Black (P970) codename sniper support and lp872x improvements Paul Kocialkowski
2015-12-23 10:58 ` Paul Kocialkowski
2015-12-23 10:58 ` Paul Kocialkowski
2015-12-23 10:58 ` [PATCH 1/6] regulator: lp872x: Add missing of_match in regulators descriptions Paul Kocialkowski
2015-12-23 10:58   ` Paul Kocialkowski
2015-12-23 10:58   ` Paul Kocialkowski
2015-12-23 12:13   ` Applied "regulator: lp872x: Add missing of_match in regulators descriptions" to the regulator tree Mark Brown
2015-12-28  1:04   ` [PATCH 1/6] regulator: lp872x: Add missing of_match in regulators descriptions Milo Kim
2015-12-28  1:04     ` Milo Kim
2015-12-23 10:58 ` [PATCH 2/6] regulator: lp872x: Get rid of duplicate reference to DVS GPIO Paul Kocialkowski
2015-12-23 10:58   ` Paul Kocialkowski
2015-12-23 10:58   ` Paul Kocialkowski
2015-12-23 12:13   ` Applied "regulator: lp872x: Get rid of duplicate reference to DVS GPIO" to the regulator tree Mark Brown
2015-12-28  1:05   ` [PATCH 2/6] regulator: lp872x: Get rid of duplicate reference to DVS GPIO Milo Kim
2015-12-28  1:05     ` Milo Kim
2015-12-28  1:05     ` Milo Kim
2015-12-23 10:58 ` [PATCH 3/6] regulator: lp872x: Remove warning about invalid " Paul Kocialkowski
2015-12-23 10:58   ` Paul Kocialkowski
2015-12-23 10:58   ` Paul Kocialkowski
2015-12-23 11:41   ` Mark Brown
2015-12-23 11:41     ` Mark Brown
2015-12-23 11:50     ` Paul Kocialkowski
2015-12-23 11:50       ` Paul Kocialkowski
2015-12-23 11:58       ` Mark Brown
2015-12-23 11:58         ` Mark Brown
2015-12-23 11:58         ` Mark Brown
2015-12-23 10:58 ` [PATCH 4/6] regulator: lp872x: Add enable GPIO pin support Paul Kocialkowski
2015-12-23 10:58   ` Paul Kocialkowski
2015-12-23 10:58   ` Paul Kocialkowski
     [not found]   ` <1450868319-20513-5-git-send-email-contact-W9ppeneeCTY@public.gmane.org>
2015-12-23 11:56     ` Mark Brown
2015-12-23 11:56       ` Mark Brown
2015-12-23 11:56       ` Mark Brown
2015-12-23 12:52       ` Paul Kocialkowski
2015-12-23 12:52         ` Paul Kocialkowski
     [not found]       ` <20151223115632.GS16023-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-12-24 18:12         ` Paul Kocialkowski [this message]
2015-12-24 18:12           ` Paul Kocialkowski
2015-12-24 18:12           ` Paul Kocialkowski
2015-12-24 19:35           ` Mark Brown
2015-12-24 19:35             ` Mark Brown
2015-12-24 19:35             ` Mark Brown
2015-12-24 20:05             ` Paul Kocialkowski
2015-12-24 20:05               ` Paul Kocialkowski
2015-12-28  0:56       ` Milo Kim
2015-12-28  0:56         ` Milo Kim
2015-12-28  0:56         ` Milo Kim
     [not found]         ` <568088B4.6090207-l0cyMroinI0@public.gmane.org>
2015-12-28 22:49           ` Paul Kocialkowski
2015-12-28 22:49             ` Paul Kocialkowski
2015-12-28 22:49             ` Paul Kocialkowski
2015-12-29  0:45             ` Milo Kim
2015-12-29  0:45               ` Milo Kim
2015-12-29  0:45               ` Milo Kim
2015-12-29 11:13               ` Paul Kocialkowski
2015-12-29 11:13                 ` Paul Kocialkowski
2015-12-30  0:22                 ` Milo Kim
2015-12-30  0:22                   ` Milo Kim
2015-12-30  0:22                   ` Milo Kim
2015-12-30  8:35                   ` Paul Kocialkowski
2015-12-30  8:35                     ` Paul Kocialkowski
2015-12-30 16:33                     ` Mark Brown
2015-12-30 16:33                       ` Mark Brown
2015-12-30 16:33                       ` Mark Brown
2015-12-30 18:37                       ` Paul Kocialkowski
2015-12-30 18:37                         ` Paul Kocialkowski
2015-12-31 21:40                         ` Mark Brown
2015-12-31 21:40                           ` Mark Brown
2015-12-31 21:40                           ` Mark Brown
     [not found]                           ` <20151231214007.GC16023-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-12-31 21:59                             ` Paul Kocialkowski
2015-12-31 21:59                               ` Paul Kocialkowski
2015-12-31 21:59                               ` Paul Kocialkowski
2015-12-31 22:14                               ` Mark Brown
2015-12-31 22:14                                 ` Mark Brown
2015-12-31 22:14                                 ` Mark Brown
     [not found]                                 ` <20151231221407.GF16023-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2016-01-03 10:19                                   ` Paul Kocialkowski
2016-01-03 10:19                                     ` Paul Kocialkowski
2016-01-03 10:19                                     ` Paul Kocialkowski
2016-01-16  7:32                                   ` Paul Kocialkowski
2016-01-16  7:32                                     ` Paul Kocialkowski
2016-01-16  7:32                                     ` Paul Kocialkowski
2016-01-18 16:32                                     ` Mark Brown
2016-01-18 16:32                                       ` Mark Brown
2016-01-18 16:32                                       ` Mark Brown
2016-02-05 18:48                                       ` Paul Kocialkowski
2016-02-05 18:48                                         ` Paul Kocialkowski
2015-12-28  0:34     ` Milo Kim
2015-12-28  0:34       ` Milo Kim
2015-12-28  0:34       ` Milo Kim
2016-02-05 18:49       ` Paul Kocialkowski
2016-02-05 18:49         ` Paul Kocialkowski
2015-12-29 20:02     ` Rob Herring
2015-12-29 20:02       ` Rob Herring
2015-12-29 20:02       ` Rob Herring
2015-12-29 21:26       ` Paul Kocialkowski
2015-12-29 21:26         ` Paul Kocialkowski
2015-12-29 21:26         ` Paul Kocialkowski
2015-12-29 21:55         ` Rob Herring
2015-12-29 21:55           ` Rob Herring
2015-12-29 21:55           ` Rob Herring
2016-02-05 18:48           ` Paul Kocialkowski
2016-02-05 18:48             ` Paul Kocialkowski
2015-12-23 10:58 ` [PATCH 5/6] ARM: LG Optimus Black (P970) codename sniper support, with basic features Paul Kocialkowski
2015-12-23 10:58   ` Paul Kocialkowski
2015-12-23 10:58   ` Paul Kocialkowski
     [not found]   ` <1450868319-20513-6-git-send-email-contact-W9ppeneeCTY@public.gmane.org>
2015-12-23 15:44     ` Tony Lindgren
2015-12-23 15:44       ` Tony Lindgren
2015-12-23 15:44       ` Tony Lindgren
2015-12-24 19:38       ` Paul Kocialkowski
2015-12-24 19:38         ` Paul Kocialkowski
2015-12-23 16:03   ` Javier Martinez Canillas
2015-12-23 16:03     ` Javier Martinez Canillas
     [not found]     ` <CABxcv=moAUEPo8sq5KhuLZChrQtwjF1aBeNvV1i8HvUnwDXMZA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-24 19:38       ` Paul Kocialkowski
2015-12-24 19:38         ` Paul Kocialkowski
2015-12-24 19:38         ` Paul Kocialkowski
2015-12-23 10:58 ` [PATCH 6/6] ARM: multi_v7_defconfig: Enable LP872x regulator support Paul Kocialkowski
2015-12-23 10:58   ` Paul Kocialkowski
2015-12-23 10:58   ` Paul Kocialkowski

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=1450980773.11913.3.camel@collins \
    --to=contact-w9ppeneecty@public.gmane.org \
    --cc=bcousson-rdvid1DuHRBWk0Htik3J/w@public.gmane.org \
    --cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
    --cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
    --cc=lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
    --cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=milo.kim-l0cyMroinI0@public.gmane.org \
    --cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org \
    /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.