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

Commit a00315d1 authored by Russell King's avatar Russell King
Browse files

ARM: sa1100/h3xxx: switch h3xxx PCMCIA to use gpiod APIs



Switch h3xxx's PCMCIA implementation to use the gpiod APIs where
possible.

Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
parent 780febd5
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
 */

#include <linux/kernel.h>
#include <linux/gpio/machine.h>
#include <linux/gpio.h>
#include <linux/gpio_keys.h>
#include <linux/input.h>
@@ -264,8 +265,24 @@ static struct platform_device *h3xxx_devices[] = {
	&h3xxx_micro_asic,
};

static struct gpiod_lookup_table h3xxx_pcmcia_gpio_table = {
	.dev_id = "sa11x0-pcmcia",
	.table = {
		GPIO_LOOKUP("gpio", H3XXX_GPIO_PCMCIA_CD0,
			    "pcmcia0-detect", GPIO_ACTIVE_LOW),
		GPIO_LOOKUP("gpio", H3XXX_GPIO_PCMCIA_IRQ0,
			    "pcmcia0-ready", GPIO_ACTIVE_HIGH),
		GPIO_LOOKUP("gpio", H3XXX_GPIO_PCMCIA_CD1,
			    "pcmcia1-detect", GPIO_ACTIVE_LOW),
		GPIO_LOOKUP("gpio", H3XXX_GPIO_PCMCIA_IRQ1,
			    "pcmcia1-ready", GPIO_ACTIVE_HIGH),
		{ },
	},
};

void __init h3xxx_mach_init(void)
{
	gpiod_add_lookup_table(&h3xxx_pcmcia_gpio_table);
	sa1100_register_uart_fns(&h3xxx_port_fns);
	sa11x0_register_mtd(&h3xxx_flash_data, &h3xxx_flash_resource, 1);
	platform_add_devices(h3xxx_devices, ARRAY_SIZE(h3xxx_devices));
+7 −9
Original line number Diff line number Diff line
@@ -24,13 +24,15 @@ static int h3600_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	int err;

	skt->stat[SOC_STAT_CD].name = skt->nr ? "pcmcia1-detect" : "pcmcia0-detect";
	skt->stat[SOC_STAT_RDY].name = skt->nr ? "pcmcia1-ready" : "pcmcia0-ready";

	err = soc_pcmcia_request_gpiods(skt);
	if (err)
		return err;

	switch (skt->nr) {
	case 0:
		skt->stat[SOC_STAT_CD].gpio = H3XXX_GPIO_PCMCIA_CD0;
		skt->stat[SOC_STAT_CD].name = "PCMCIA CD0";
		skt->stat[SOC_STAT_RDY].gpio = H3XXX_GPIO_PCMCIA_IRQ0;
		skt->stat[SOC_STAT_RDY].name = "PCMCIA IRQ0";

		err = gpio_request(H3XXX_EGPIO_OPT_NVRAM_ON, "OPT NVRAM ON");
		if (err)
			goto err01;
@@ -57,10 +59,6 @@ static int h3600_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
			goto err06;
		break;
	case 1:
		skt->stat[SOC_STAT_CD].gpio = H3XXX_GPIO_PCMCIA_CD1;
		skt->stat[SOC_STAT_CD].name = "PCMCIA CD1";
		skt->stat[SOC_STAT_RDY].gpio = H3XXX_GPIO_PCMCIA_IRQ1;
		skt->stat[SOC_STAT_RDY].name = "PCMCIA IRQ1";
		break;
	}
	return 0;