static void enable_board_wakeup_source(void) { int gpio_val; /* Android does not have touchscreen as wakeup source */ #if !defined(CONFIG_ANDROID) gpio_val = omap_mux_get_gpio(OMAP4_TOUCH_IRQ_1); if ((gpio_val & OMAP44XX_PADCONF_WAKEUPENABLE0) == 0) { gpio_val |= OMAP44XX_PADCONF_WAKEUPENABLE0; omap_mux_set_gpio(gpio_val, OMAP4_TOUCH_IRQ_1); } #endif gpio_val = omap_mux_get_gpio(32); if ((gpio_val & OMAP44XX_PADCONF_WAKEUPENABLE0) == 0) { gpio_val |= OMAP44XX_PADCONF_WAKEUPENABLE0; omap_mux_set_gpio(gpio_val, 32); } gpio_val = omap_mux_get_gpio(29); if ((gpio_val & OMAP44XX_PADCONF_WAKEUPENABLE0) == 0) { gpio_val |= OMAP44XX_PADCONF_WAKEUPENABLE0; omap_mux_set_gpio(gpio_val, 29); } /* * Enable IO daisy for sys_nirq1/2, to be able to * wakeup from interrupts from PMIC/Audio IC. * Needed only in Device OFF mode. */ omap_mux_enable_wakeup("sys_nirq1"); }
static void omap_sfh7741prox_init(void) { int error; struct omap_mux *prox_gpio_mux; bool wake_enable; error = gpio_request(OMAP4_SFH7741_SENSOR_OUTPUT_GPIO, "sfh7741"); if (error < 0) { pr_err("%s: GPIO configuration failed: GPIO %d, error %d\n" , __func__, OMAP4_SFH7741_SENSOR_OUTPUT_GPIO, error); return ; } error = gpio_direction_input(OMAP4_SFH7741_SENSOR_OUTPUT_GPIO); if (error < 0) { pr_err("Proximity GPIO input configuration failed\n"); goto fail1; } error = gpio_request(OMAP4_SFH7741_ENABLE_GPIO, "sfh7741"); if (error < 0) { pr_err("failed to request GPIO %d, error %d\n", OMAP4_SFH7741_ENABLE_GPIO, error); goto fail1; } error = gpio_direction_output(OMAP4_SFH7741_ENABLE_GPIO , 0); if (error < 0) { pr_err("%s: GPIO configuration failed: GPIO %d, error %d\n", __func__, OMAP4_SFH7741_ENABLE_GPIO, error); goto fail3; } prox_gpio_mux = omap_mux_get_gpio(OMAP4_SFH7741_SENSOR_OUTPUT_GPIO); wake_enable = omap_mux_get_wakeupenable(prox_gpio_mux); if (!wake_enable) omap_mux_set_wakeupenable(prox_gpio_mux); return; fail3: gpio_free(OMAP4_SFH7741_ENABLE_GPIO); fail1: gpio_free(OMAP4_SFH7741_SENSOR_OUTPUT_GPIO); }