Commit 2070417d authored by Marek Vasut's avatar Marek Vasut Committed by Eric Miao
Browse files

ARM: pxa: Use gpio arrays in palmld_pcmcia driver



Use gpio_request_array() / gpio_free_array(), this makes the code
cleaner and less error prone.

Signed-off-by: default avatarMarek Vasut <marek.vasut@gmail.com>
parent e593106c
Loading
Loading
Loading
Loading
+9 −31
Original line number Diff line number Diff line
@@ -20,49 +20,27 @@
#include <mach/palmld.h>
#include "soc_common.h"

static struct gpio palmld_pcmcia_gpios[] = {
	{ GPIO_NR_PALMLD_PCMCIA_POWER,	GPIOF_INIT_LOW,	"PCMCIA Power" },
	{ GPIO_NR_PALMLD_PCMCIA_RESET,	GPIOF_INIT_HIGH,"PCMCIA Reset" },
	{ GPIO_NR_PALMLD_PCMCIA_READY,	GPIOF_IN,	"PCMCIA Ready" },
};

static int palmld_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	int ret;

	ret = gpio_request(GPIO_NR_PALMLD_PCMCIA_POWER, "PCMCIA PWR");
	if (ret)
		goto err1;
	ret = gpio_direction_output(GPIO_NR_PALMLD_PCMCIA_POWER, 0);
	if (ret)
		goto err2;

	ret = gpio_request(GPIO_NR_PALMLD_PCMCIA_RESET, "PCMCIA RST");
	if (ret)
		goto err2;
	ret = gpio_direction_output(GPIO_NR_PALMLD_PCMCIA_RESET, 1);
	if (ret)
		goto err3;

	ret = gpio_request(GPIO_NR_PALMLD_PCMCIA_READY, "PCMCIA RDY");
	if (ret)
		goto err3;
	ret = gpio_direction_input(GPIO_NR_PALMLD_PCMCIA_READY);
	if (ret)
		goto err4;
	ret = gpio_request_array(palmld_pcmcia_gpios,
				ARRAY_SIZE(palmld_pcmcia_gpios));

	skt->socket.pci_irq = IRQ_GPIO(GPIO_NR_PALMLD_PCMCIA_READY);
	return 0;

err4:
	gpio_free(GPIO_NR_PALMLD_PCMCIA_READY);
err3:
	gpio_free(GPIO_NR_PALMLD_PCMCIA_RESET);
err2:
	gpio_free(GPIO_NR_PALMLD_PCMCIA_POWER);
err1:
	return ret;
}

static void palmld_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
{
	gpio_free(GPIO_NR_PALMLD_PCMCIA_READY);
	gpio_free(GPIO_NR_PALMLD_PCMCIA_RESET);
	gpio_free(GPIO_NR_PALMLD_PCMCIA_POWER);
	gpio_free_array(palmld_pcmcia_gpios, ARRAY_SIZE(palmld_pcmcia_gpios));
}

static void palmld_pcmcia_socket_state(struct soc_pcmcia_socket *skt,