[PATCH 10/20] gpio: pca953x: Add optional reset gpio control
From: slongerbeam@gmail.com (Steve Longerbeam)
Date: 2016-12-30 18:03:59
Also in:
linux-devicetree, linux-gpio, linux-media, lkml
Hi Linus, Lothar, On 12/30/2016 05:17 AM, Linus Walleij wrote:
On Thu, Dec 29, 2016 at 11:27 PM, Steve Longerbeam [off-list ref] wrote:quoted
Add optional reset-gpios pin control. If present, de-assert the specified reset gpio pin to bring the chip out of reset. Signed-off-by: Steve Longerbeam <redacted> Cc: Linus Walleij <redacted> Cc: Alexandre Courbot <redacted> Cc: linux-gpio at vger.kernel.org Cc: linux-kernel at vger.kernel.orgThis seems like a separate patch from the other 19 patches so please send it separately so I can handle logistics easier in the future.
Ok, I'll send the next version separately.
quoted
@@ -133,6 +134,7 @@ struct pca953x_chip { const char *const *names; unsigned long driver_data; struct regulator *regulator; + struct gpio_desc *reset_gpio;Why do you even keep this around in the device state container? As you only use it in the probe() function, use a local variable. The descriptor will be free():ed by the devm infrastructure anyways.
I think my reasoning for putting the gpio handle into the device struct was for possibly using it for run-time reset control at some point. But that could be done later if needed, so I'll go ahead and make it local.
quoted
+ /* see if we need to de-assert a reset pin */ + chip->reset_gpio = devm_gpiod_get_optional(&client->dev, + "reset", + GPIOD_OUT_LOW); + if (IS_ERR(chip->reset_gpio)) { + dev_err(&client->dev, "request for reset pin failed\n"); + return PTR_ERR(chip->reset_gpio); + }Nice.quoted
+ if (chip->reset_gpio) { + /* bring chip out of reset */ + dev_info(&client->dev, "releasing reset\n"); + gpiod_set_value(chip->reset_gpio, 0); + }Is this really needed given that you set it low in the devm_gpiod_get_optional()?
Yep, this is left over from a previous iteration, but it isn't needed now. I'll remove it. Steve