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());
}