void mmc_wimax_enable_host_wakeup(int on) { if (mmc_wimax_get_status()) { if (on) { if (!mmc_wimax_get_gpio_irq_enabled()) { printk("set GPIO%d as wakeup source on IRQ %d\n", mmc_wimax_get_hostwakeup_gpio(),mmc_wimax_get_hostwakeup_IRQ_ID()); enable_irq(mmc_wimax_get_hostwakeup_IRQ_ID()); enable_irq_wake(mmc_wimax_get_hostwakeup_IRQ_ID()); mmc_wimax_set_gpio_irq_enabled(1); } } else { if (mmc_wimax_get_gpio_irq_enabled()) { printk("disable GPIO%d wakeup source\n", mmc_wimax_get_hostwakeup_gpio()); disable_irq_wake(mmc_wimax_get_hostwakeup_IRQ_ID()); disable_irq_nosync(mmc_wimax_get_hostwakeup_IRQ_ID()); mmc_wimax_set_gpio_irq_enabled(0); } } } else { printk("%s mmc_wimax_sdio_status is OFF\n", __func__); } }
void mmc_wimax_enable_host_wakeup(int on) { if (mmc_wimax_sdio_status) { if (on) { if (!mmc_wimax_is_gpio_irq_enabled) { printk("set GPIO%d as waketup source\n", mmc_wimax_get_hostwakeup_gpio()); enable_irq(MSM_GPIO_TO_INT(mmc_wimax_get_hostwakeup_gpio())); enable_irq_wake(MSM_GPIO_TO_INT(mmc_wimax_get_hostwakeup_gpio())); mmc_wimax_is_gpio_irq_enabled = 1; } } else { if (mmc_wimax_is_gpio_irq_enabled) { printk("disable GPIO%d wakeup source\n", mmc_wimax_get_hostwakeup_gpio()); disable_irq_wake(MSM_GPIO_TO_INT(mmc_wimax_get_hostwakeup_gpio())); disable_irq_nosync(MSM_GPIO_TO_INT(mmc_wimax_get_hostwakeup_gpio())); mmc_wimax_is_gpio_irq_enabled = 0; } } } else { printk("%s mmc_wimax_sdio_status is OFF\n", __func__); } }
int mmc_wimax_get_hostwakeup_IRQ_ID(void) { return MSM_GPIO_TO_INT(mmc_wimax_get_hostwakeup_gpio()); }