linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] gpio: brcmstb: allow 0 width GPIO banks
@ 2018-08-17 23:47 justinpopo6
  2018-08-17 23:49 ` Florian Fainelli
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: justinpopo6 @ 2018-08-17 23:47 UTC (permalink / raw)
  To: linux-gpio
  Cc: gregory.0xf0, linus.walleij, computersforpeace, f.fainelli,
	bcm-kernel-feedback-list, linux-arm-kernel, linux-kernel,
	Justin Chen

From: Justin Chen <justinpopo6@gmail.com>

Sometimes we have empty banks within the GPIO block. This commit allows
proper handling of 0 width GPIO banks. We handle 0 width GPIO banks by
incrementing the bank and number of GPIOs, but not initializing them.
This will mean a call into the non-existent GPIOs will return an error.

Also remove "GPIO registered" dev print. This information is misleading
since the incremented banks and gpio_base do not reflect the actual GPIOs
that get initialized. We leave this information out since it is already
printed with dev_dbg.

Signed-off-by: Justin Chen <justinpopo6@gmail.com>
---
 drivers/gpio/gpio-brcmstb.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/gpio/gpio-brcmstb.c b/drivers/gpio/gpio-brcmstb.c
index 16c7f9f..af936dc 100644
--- a/drivers/gpio/gpio-brcmstb.c
+++ b/drivers/gpio/gpio-brcmstb.c
@@ -664,6 +664,18 @@ static int brcmstb_gpio_probe(struct platform_device *pdev)
 		struct brcmstb_gpio_bank *bank;
 		struct gpio_chip *gc;
 
+		/*
+		 * If bank_width is 0, then there is an empty bank in the
+		 * register block. Special handling for this case.
+		 */
+		if (bank_width == 0) {
+			dev_dbg(dev, "Width 0 found: Empty bank @ %d\n",
+				num_banks);
+			num_banks++;
+			gpio_base += MAX_GPIO_PER_BANK;
+			continue;
+		}
+
 		bank = devm_kzalloc(dev, sizeof(*bank), GFP_KERNEL);
 		if (!bank) {
 			err = -ENOMEM;
@@ -740,9 +752,6 @@ static int brcmstb_gpio_probe(struct platform_device *pdev)
 			goto fail;
 	}
 
-	dev_info(dev, "Registered %d banks (GPIO(s): %d-%d)\n",
-			num_banks, priv->gpio_base, gpio_base - 1);
-
 	if (priv->parent_wake_irq && need_wakeup_event)
 		pm_wakeup_event(dev, 0);
 
-- 
2.7.4


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] gpio: brcmstb: allow 0 width GPIO banks
  2018-08-17 23:47 [PATCH v2] gpio: brcmstb: allow 0 width GPIO banks justinpopo6
@ 2018-08-17 23:49 ` Florian Fainelli
  2018-08-18  0:52 ` Andrew Lunn
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Florian Fainelli @ 2018-08-17 23:49 UTC (permalink / raw)
  To: justinpopo6, linux-gpio
  Cc: gregory.0xf0, linus.walleij, computersforpeace, f.fainelli,
	bcm-kernel-feedback-list, linux-arm-kernel, linux-kernel

On 08/17/2018 04:47 PM, justinpopo6@gmail.com wrote:
> From: Justin Chen <justinpopo6@gmail.com>
> 
> Sometimes we have empty banks within the GPIO block. This commit allows
> proper handling of 0 width GPIO banks. We handle 0 width GPIO banks by
> incrementing the bank and number of GPIOs, but not initializing them.
> This will mean a call into the non-existent GPIOs will return an error.
> 
> Also remove "GPIO registered" dev print. This information is misleading
> since the incremented banks and gpio_base do not reflect the actual GPIOs
> that get initialized. We leave this information out since it is already
> printed with dev_dbg.
> 
> Signed-off-by: Justin Chen <justinpopo6@gmail.com>

Acked-by: Florian Fainelli <f.fainelli@gmail.com>

Thanks Justin!
--
Florian

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] gpio: brcmstb: allow 0 width GPIO banks
  2018-08-17 23:47 [PATCH v2] gpio: brcmstb: allow 0 width GPIO banks justinpopo6
  2018-08-17 23:49 ` Florian Fainelli
@ 2018-08-18  0:52 ` Andrew Lunn
  2018-08-20 21:08   ` Florian Fainelli
  2018-08-30  9:05 ` Linus Walleij
  2018-08-31 21:26 ` Gregory Fong
  3 siblings, 1 reply; 6+ messages in thread
From: Andrew Lunn @ 2018-08-18  0:52 UTC (permalink / raw)
  To: justinpopo6
  Cc: linux-gpio, f.fainelli, linus.walleij, linux-kernel,
	bcm-kernel-feedback-list, gregory.0xf0, computersforpeace,
	linux-arm-kernel

On Fri, Aug 17, 2018 at 04:47:39PM -0700, justinpopo6@gmail.com wrote:
> From: Justin Chen <justinpopo6@gmail.com>
> 
> Sometimes we have empty banks within the GPIO block. This commit allows
> proper handling of 0 width GPIO banks.

Hi Justin

This is coming from DT? Why do you put 0 width banks in DT in the
first place?

      Andrew

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] gpio: brcmstb: allow 0 width GPIO banks
  2018-08-18  0:52 ` Andrew Lunn
@ 2018-08-20 21:08   ` Florian Fainelli
  0 siblings, 0 replies; 6+ messages in thread
From: Florian Fainelli @ 2018-08-20 21:08 UTC (permalink / raw)
  To: Andrew Lunn, justinpopo6
  Cc: linux-gpio, f.fainelli, linus.walleij, linux-kernel,
	bcm-kernel-feedback-list, gregory.0xf0, computersforpeace,
	linux-arm-kernel

On 08/17/2018 05:52 PM, Andrew Lunn wrote:
> On Fri, Aug 17, 2018 at 04:47:39PM -0700, justinpopo6@gmail.com wrote:
>> From: Justin Chen <justinpopo6@gmail.com>
>>
>> Sometimes we have empty banks within the GPIO block. This commit allows
>> proper handling of 0 width GPIO banks.
> 
> Hi Justin
> 
> This is coming from DT? Why do you put 0 width banks in DT in the
> first place?

The way the binding is defined, the "reg" property must cover the entire
GPIO block. On our chips we typically have two blocks, one called GIO
and one called AON_GIO. One of our chips, BCM7429 unfortunately does not
have contiguous banks (groups of 32 GPIOs) within the GIO register
range, it has a first bank from 0 -> 0x20, then nothing, then another
one from 0x40 -> 0x60, which is why this change was proposed, since it
does not break any existing DT blob.
-- 
Florian

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] gpio: brcmstb: allow 0 width GPIO banks
  2018-08-17 23:47 [PATCH v2] gpio: brcmstb: allow 0 width GPIO banks justinpopo6
  2018-08-17 23:49 ` Florian Fainelli
  2018-08-18  0:52 ` Andrew Lunn
@ 2018-08-30  9:05 ` Linus Walleij
  2018-08-31 21:26 ` Gregory Fong
  3 siblings, 0 replies; 6+ messages in thread
From: Linus Walleij @ 2018-08-30  9:05 UTC (permalink / raw)
  To: justinpopo6
  Cc: open list:GPIO SUBSYSTEM, Gregory Fong, Brian Norris,
	Florian Fainelli, bcm-kernel-feedback-list, Linux ARM,
	linux-kernel

On Sat, Aug 18, 2018 at 1:47 AM <justinpopo6@gmail.com> wrote:

> From: Justin Chen <justinpopo6@gmail.com>
>
> Sometimes we have empty banks within the GPIO block. This commit allows
> proper handling of 0 width GPIO banks. We handle 0 width GPIO banks by
> incrementing the bank and number of GPIOs, but not initializing them.
> This will mean a call into the non-existent GPIOs will return an error.
>
> Also remove "GPIO registered" dev print. This information is misleading
> since the incremented banks and gpio_base do not reflect the actual GPIOs
> that get initialized. We leave this information out since it is already
> printed with dev_dbg.
>
> Signed-off-by: Justin Chen <justinpopo6@gmail.com>

Patch applied with Florian's ACK.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] gpio: brcmstb: allow 0 width GPIO banks
  2018-08-17 23:47 [PATCH v2] gpio: brcmstb: allow 0 width GPIO banks justinpopo6
                   ` (2 preceding siblings ...)
  2018-08-30  9:05 ` Linus Walleij
@ 2018-08-31 21:26 ` Gregory Fong
  3 siblings, 0 replies; 6+ messages in thread
From: Gregory Fong @ 2018-08-31 21:26 UTC (permalink / raw)
  To: Justin Chen
  Cc: linux-gpio, Linus Walleij, Brian Norris, Florian Fainelli,
	bcm-kernel-feedback-list, linux-arm-kernel, linux-kernel

On Fri, Aug 17, 2018 at 4:48 PM <justinpopo6@gmail.com> wrote:
>
> From: Justin Chen <justinpopo6@gmail.com>
>
> Sometimes we have empty banks within the GPIO block. This commit allows
> proper handling of 0 width GPIO banks. We handle 0 width GPIO banks by
> incrementing the bank and number of GPIOs, but not initializing them.
> This will mean a call into the non-existent GPIOs will return an error.

This is clearer now; thanks for rewording!

>
> Also remove "GPIO registered" dev print. This information is misleading
> since the incremented banks and gpio_base do not reflect the actual GPIOs
> that get initialized. We leave this information out since it is already
> printed with dev_dbg.
>
> Signed-off-by: Justin Chen <justinpopo6@gmail.com>

Looks like I'm a bit late on the response, but in case you feel like
adding it Linus:

Acked-by: Gregory Fong <gregory.0xf0@gmail.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-08-31 21:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-17 23:47 [PATCH v2] gpio: brcmstb: allow 0 width GPIO banks justinpopo6
2018-08-17 23:49 ` Florian Fainelli
2018-08-18  0:52 ` Andrew Lunn
2018-08-20 21:08   ` Florian Fainelli
2018-08-30  9:05 ` Linus Walleij
2018-08-31 21:26 ` Gregory Fong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).