[PATCH 10/33] pcmcia: soc_common: switch to using gpio_descs
From: Linus Walleij <hidden>
Date: 2016-09-14 11:29:06
Also in:
linux-gpio
On Mon, Aug 29, 2016 at 12:24 PM, Russell King [off-list ref] wrote:
Switch to using the gpiod_* consumer API rather than the legacy API. Signed-off-by: Russell King <redacted>
(...)
+int soc_pcmcia_request_gpiods(struct soc_pcmcia_socket *skt)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(skt->stat); i++) {
+ struct gpio_desc *desc;
+
Here I inserted:
/* Skip over unnamed GPIOs, assume unused */
if (!skt->stat[i].name)
continue;
to get it working again on h3600.
+ desc = gpiod_get(skt->socket.dev.parent,
+ skt->stat[i].name, GPIOD_IN);
+ if (IS_ERR(desc)) {
+ dev_err(skt->socket.dev.parent,
+ "Failed to get GPIO for %s: %ld\n",
+ skt->stat[i].name, PTR_ERR(desc));
+ __soc_pcmcia_hw_shutdown(skt, i);
+ return PTR_ERR(desc);
+ }It bugs out for me on the legacy h3600, since it only defines two of these pins not all of the ARRAY_SIZE(skt->stat) pins will succeed and we get an error message like this: sa11x0-pcmcia sa11x0-pcmcia: Failed to get GPIO for (null): -2 sa11x0-pcmcia: probe of sa11x0-pcmcia failed with error -2 With the patch above it goes away and the log is silent. The debugfs gpio file looks like this: cat gpio gpiochip0: GPIOs 0-27, gpio: gpio-0 ( |Power Button ) in hi gpio-10 ( |pcmcia1-detect ) in hi gpio-11 ( |pcmcia1-ready ) in hi gpio-17 ( |pcmcia0-detect ) in hi gpio-18 ( |Action button ) in hi gpio-21 ( |pcmcia0-ready ) in hi gpio-23 ( |dcd ) in hi gpio-25 ( |cts ) in lo gpio-26 ( |rts ) out lo gpiochip1: GPIOs 28-43, parent: platform/htc-egpio, htc-egpio: gpio-28 ( |Flash Vpp ) out lo gpio-29 ( |PCMCIA CARD RESET ) out lo gpio-30 ( |OPT RESET ) out lo gpio-32 ( |OPT NVRAM ON ) out lo gpio-33 ( |OPT ON ) out lo gpio-34 ( |LCD power ) out lo gpio-36 ( |LCD control ) out lo gpio-42 ( |LCD 5v ) out lo gpio-43 ( |LCD 9v/-6.5v ) out lo Which seems like before the patch series. I still suspect the PCMCIA is not really working but I have limited experience of the bus so I don't really know how to test it deeply or have my PCMCIA ethernet or harddrive probe properly. There are no regressions however, so with something like the above patch applied: Tested-by: Linus Walleij <redacted> For the whole patch series on H3600. Yours, Linus Walleij