Skip to content

Commit

Permalink
ARM: iop32x: fix power off handling for the EM7210 board
Browse files Browse the repository at this point in the history
This board was missed when converting all the others to proper
abstracted GPIO handling. Fix it up the right way by requesting
and driving GPIO line 0 high through gpiolib to power off the
machine.

Cc: Arnaud Patard <arnaud.patard@rtp-net.org>
Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Olof Johansson <olof@lixom.net>
  • Loading branch information
Linus Walleij authored and Olof Johansson committed Jan 31, 2014
1 parent 608914b commit afbf1e1
Showing 1 changed file with 27 additions and 5 deletions.
32 changes: 27 additions & 5 deletions arch/arm/mach-iop32x/em7210.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include <linux/mtd/physmap.h>
#include <linux/platform_device.h>
#include <linux/i2c.h>
#include <linux/gpio.h>
#include <mach/hardware.h>
#include <linux/io.h>
#include <linux/irq.h>
Expand Down Expand Up @@ -176,11 +177,35 @@ static struct platform_device em7210_serial_device = {
.resource = &em7210_uart_resource,
};

#define EM7210_HARDWARE_POWER 0

void em7210_power_off(void)
{
*IOP3XX_GPOE &= 0xfe;
*IOP3XX_GPOD |= 0x01;
int ret;

ret = gpio_direction_output(EM7210_HARDWARE_POWER, 1);
if (ret)
pr_crit("could not drive power off GPIO high\n");
}

static int __init em7210_request_gpios(void)
{
int ret;

if (!machine_is_em7210())
return 0;

ret = gpio_request(EM7210_HARDWARE_POWER, "power");
if (ret) {
pr_err("could not request power off GPIO\n");
return 0;
}

pm_power_off = em7210_power_off;

return 0;
}
device_initcall(em7210_request_gpios);

static void __init em7210_init_machine(void)
{
Expand All @@ -194,9 +219,6 @@ static void __init em7210_init_machine(void)

i2c_register_board_info(0, em7210_i2c_devices,
ARRAY_SIZE(em7210_i2c_devices));


pm_power_off = em7210_power_off;
}

MACHINE_START(EM7210, "Lanner EM7210")
Expand Down

0 comments on commit afbf1e1

Please sign in to comment.