Skip to content

Commit

Permalink
ARM: 7900/1: sa1100: h3100: refactor IrDA GPIO handling
Browse files Browse the repository at this point in the history
As GPIOs are going to move to platform device, there is no guarantee
that they will be available at init_machine time.

Request and free all GPIOs from IrDA startup/shutdown callbacks and not
at init_machine time.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Dmitry Eremin-Solenikov authored and Russell King committed Dec 12, 2013
1 parent 8bed576 commit d8eec82
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions arch/arm/mach-sa1100/h3100.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ static void __init h3100_map_io(void)
/*
* This turns the IRDA power on or off on the Compaq H3100
*/
static struct gpio h3100_irda_gpio[] = {
{ H3100_GPIO_IR_ON, GPIOF_OUT_INIT_LOW, "IrDA power" },
{ H3100_GPIO_IR_FSEL, GPIOF_OUT_INIT_LOW, "IrDA fsel" },
};

static int h3100_irda_set_power(struct device *dev, unsigned int state)
{
gpio_set_value(H3100_GPIO_IR_ON, state);
Expand All @@ -100,14 +105,24 @@ static void h3100_irda_set_speed(struct device *dev, unsigned int speed)
gpio_set_value(H3100_GPIO_IR_FSEL, !(speed < 4000000));
}

static int h3100_irda_startup(struct device *dev)
{
return gpio_request_array(h3100_irda_gpio, sizeof(h3100_irda_gpio));
}

static void h3100_irda_shutdown(struct device *dev)
{
return gpio_free_array(h3100_irda_gpio, sizeof(h3100_irda_gpio));
}

static struct irda_platform_data h3100_irda_data = {
.set_power = h3100_irda_set_power,
.set_speed = h3100_irda_set_speed,
.startup = h3100_irda_startup,
.shutdown = h3100_irda_shutdown,
};

static struct gpio_default_state h3100_default_gpio[] = {
{ H3100_GPIO_IR_ON, GPIO_MODE_OUT0, "IrDA power" },
{ H3100_GPIO_IR_FSEL, GPIO_MODE_OUT0, "IrDA fsel" },
{ H3XXX_GPIO_COM_DCD, GPIO_MODE_IN, "COM DCD" },
{ H3XXX_GPIO_COM_CTS, GPIO_MODE_IN, "COM CTS" },
{ H3XXX_GPIO_COM_RTS, GPIO_MODE_OUT0, "COM RTS" },
Expand Down

0 comments on commit d8eec82

Please sign in to comment.