Skip to content

Commit

Permalink
pcmcia: soc_common: add support for reset and bus enable GPIOs
Browse files Browse the repository at this point in the history
Add support to soc_common for controlling reset and bus enable GPIOs
from within the generic soc_common layer, rather than having
individual drivers having to perform this themselves.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
  • Loading branch information
Russell King committed Sep 22, 2016
1 parent 7bfe497 commit 535e0ab
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
16 changes: 16 additions & 0 deletions drivers/pcmcia/soc_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ static void __soc_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt,
if (skt->ops->hw_shutdown)
skt->ops->hw_shutdown(skt);


clk_disable_unprepare(skt->clk);
}

Expand Down Expand Up @@ -286,6 +287,21 @@ static int soc_common_pcmcia_config_skt(

ret = skt->ops->configure_socket(skt, state);
if (ret == 0) {
struct gpio_desc *descs[2];
int values[2], n = 0;

if (skt->gpio_reset) {
descs[n] = skt->gpio_reset;
values[n++] = !!(state->flags & SS_RESET);
}
if (skt->gpio_bus_enable) {
descs[n] = skt->gpio_bus_enable;
values[n++] = !!(state->flags & SS_OUTPUT_ENA);
}

if (n)
gpiod_set_array_value_cansleep(n, descs, values);

/*
* This really needs a better solution. The IRQ
* may or may not be claimed by the driver.
Expand Down
3 changes: 3 additions & 0 deletions drivers/pcmcia/soc_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ struct soc_pcmcia_socket {
#define SOC_STAT_BVD2 2 /* BATWARN / IOSPKR */
#define SOC_STAT_RDY 3 /* Ready / Interrupt */

struct gpio_desc *gpio_reset;
struct gpio_desc *gpio_bus_enable;

unsigned int irq_state;

struct timer_list poll_timer;
Expand Down

0 comments on commit 535e0ab

Please sign in to comment.