Loading arch/arm/plat-omap/gpio.c +21 −4 Original line number Original line Diff line number Diff line Loading @@ -662,6 +662,14 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) } } } } static void _reset_gpio(struct gpio_bank *bank, int gpio) { _set_gpio_direction(bank, get_gpio_index(gpio), 1); _set_gpio_irqenable(bank, gpio, 0); _clear_gpio_irqstatus(bank, gpio); _set_gpio_triggering(bank, get_gpio_index(gpio), IRQT_NOEDGE); } /* Use disable_irq_wake() and enable_irq_wake() functions from drivers */ /* Use disable_irq_wake() and enable_irq_wake() functions from drivers */ static int gpio_wake_enable(unsigned int irq, unsigned int enable) static int gpio_wake_enable(unsigned int irq, unsigned int enable) { { Loading Loading @@ -696,7 +704,9 @@ int omap_request_gpio(int gpio) } } bank->reserved_map |= (1 << get_gpio_index(gpio)); bank->reserved_map |= (1 << get_gpio_index(gpio)); /* Set trigger to none. You need to enable the trigger after request_irq */ /* Set trigger to none. You need to enable the desired trigger with * request_irq() or set_irq_type(). */ _set_gpio_triggering(bank, get_gpio_index(gpio), IRQT_NOEDGE); _set_gpio_triggering(bank, get_gpio_index(gpio), IRQT_NOEDGE); #ifdef CONFIG_ARCH_OMAP15XX #ifdef CONFIG_ARCH_OMAP15XX Loading Loading @@ -756,9 +766,7 @@ void omap_free_gpio(int gpio) } } #endif #endif bank->reserved_map &= ~(1 << get_gpio_index(gpio)); bank->reserved_map &= ~(1 << get_gpio_index(gpio)); _set_gpio_direction(bank, get_gpio_index(gpio), 1); _reset_gpio(bank, gpio); _set_gpio_irqenable(bank, gpio, 0); _clear_gpio_irqstatus(bank, gpio); spin_unlock(&bank->lock); spin_unlock(&bank->lock); } } Loading Loading @@ -898,6 +906,14 @@ static void gpio_irq_handler(unsigned int irq, struct irqdesc *desc, } } static void gpio_irq_shutdown(unsigned int irq) { unsigned int gpio = irq - IH_GPIO_BASE; struct gpio_bank *bank = get_gpio_bank(gpio); _reset_gpio(bank, gpio); } static void gpio_ack_irq(unsigned int irq) static void gpio_ack_irq(unsigned int irq) { { unsigned int gpio = irq - IH_GPIO_BASE; unsigned int gpio = irq - IH_GPIO_BASE; Loading Loading @@ -946,6 +962,7 @@ static void mpuio_unmask_irq(unsigned int irq) static struct irq_chip gpio_irq_chip = { static struct irq_chip gpio_irq_chip = { .name = "GPIO", .name = "GPIO", .shutdown = gpio_irq_shutdown, .ack = gpio_ack_irq, .ack = gpio_ack_irq, .mask = gpio_mask_irq, .mask = gpio_mask_irq, .unmask = gpio_unmask_irq, .unmask = gpio_unmask_irq, Loading Loading
arch/arm/plat-omap/gpio.c +21 −4 Original line number Original line Diff line number Diff line Loading @@ -662,6 +662,14 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) } } } } static void _reset_gpio(struct gpio_bank *bank, int gpio) { _set_gpio_direction(bank, get_gpio_index(gpio), 1); _set_gpio_irqenable(bank, gpio, 0); _clear_gpio_irqstatus(bank, gpio); _set_gpio_triggering(bank, get_gpio_index(gpio), IRQT_NOEDGE); } /* Use disable_irq_wake() and enable_irq_wake() functions from drivers */ /* Use disable_irq_wake() and enable_irq_wake() functions from drivers */ static int gpio_wake_enable(unsigned int irq, unsigned int enable) static int gpio_wake_enable(unsigned int irq, unsigned int enable) { { Loading Loading @@ -696,7 +704,9 @@ int omap_request_gpio(int gpio) } } bank->reserved_map |= (1 << get_gpio_index(gpio)); bank->reserved_map |= (1 << get_gpio_index(gpio)); /* Set trigger to none. You need to enable the trigger after request_irq */ /* Set trigger to none. You need to enable the desired trigger with * request_irq() or set_irq_type(). */ _set_gpio_triggering(bank, get_gpio_index(gpio), IRQT_NOEDGE); _set_gpio_triggering(bank, get_gpio_index(gpio), IRQT_NOEDGE); #ifdef CONFIG_ARCH_OMAP15XX #ifdef CONFIG_ARCH_OMAP15XX Loading Loading @@ -756,9 +766,7 @@ void omap_free_gpio(int gpio) } } #endif #endif bank->reserved_map &= ~(1 << get_gpio_index(gpio)); bank->reserved_map &= ~(1 << get_gpio_index(gpio)); _set_gpio_direction(bank, get_gpio_index(gpio), 1); _reset_gpio(bank, gpio); _set_gpio_irqenable(bank, gpio, 0); _clear_gpio_irqstatus(bank, gpio); spin_unlock(&bank->lock); spin_unlock(&bank->lock); } } Loading Loading @@ -898,6 +906,14 @@ static void gpio_irq_handler(unsigned int irq, struct irqdesc *desc, } } static void gpio_irq_shutdown(unsigned int irq) { unsigned int gpio = irq - IH_GPIO_BASE; struct gpio_bank *bank = get_gpio_bank(gpio); _reset_gpio(bank, gpio); } static void gpio_ack_irq(unsigned int irq) static void gpio_ack_irq(unsigned int irq) { { unsigned int gpio = irq - IH_GPIO_BASE; unsigned int gpio = irq - IH_GPIO_BASE; Loading Loading @@ -946,6 +962,7 @@ static void mpuio_unmask_irq(unsigned int irq) static struct irq_chip gpio_irq_chip = { static struct irq_chip gpio_irq_chip = { .name = "GPIO", .name = "GPIO", .shutdown = gpio_irq_shutdown, .ack = gpio_ack_irq, .ack = gpio_ack_irq, .mask = gpio_mask_irq, .mask = gpio_mask_irq, .unmask = gpio_unmask_irq, .unmask = gpio_unmask_irq, Loading