Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 535e0abc authored by Russell King's avatar Russell King
Browse files

pcmcia: soc_common: add support for reset and bus enable GPIOs



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: default avatarRussell King <rmk+kernel@armlinux.org.uk>
parent 7bfe4978
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -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);
}

@@ -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.
+3 −0
Original line number Diff line number Diff line
@@ -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;