static void mtk_wcn_cmb_sdio_request_eirq(sdio_irq_handler_t irq_handler, void *data) { #if CONFIG_EINT_DEVICE_TREE struct device_node *node; u32 ints[2] = {0,0}; int ret = -EINVAL; #endif printk( KERN_INFO "enter %s\n", __func__); mtk_wcn_sdio_irq_flag_set (0); mtk_wcn_cmb_sdio_eirq_data = data; mtk_wcn_cmb_sdio_eirq_handler = irq_handler; #if 1 #if CONFIG_EINT_DEVICE_TREE node = of_find_compatible_node(NULL, NULL, "mediatek, WIFI-eint"); if(node) { of_property_read_u32_array(node, "debounce", ints, ARRAY_SIZE(ints)); mt_gpio_set_debounce(ints[0], ints[1]); wifi_irq = irq_of_parse_and_map(node, 0); ret = request_irq(wifi_irq, mtk_wcn_cmb_sdio_eirq_handler_stub, IRQF_TRIGGER_NONE,"WIFI-eint", NULL); printk(KERN_DEBUG "WIFI EINT irq %d !!\n",wifi_irq); atomic_set(&wifi_irq_flag, 0);/*default: irq enable*/ if(ret) printk(KERN_ERR "WIFI EINT IRQ LINE NOT AVAILABLE!!\n"); else { mtk_wcn_cmb_sdio_disable_eirq();/*not ,chip state is power off*/ } } else printk(KERN_ERR "[%s] can't find wifi eint compatible node\n",__func__); #else mt_eint_registration(mtk_wcn_cmb_sdio_eint_num, CUST_EINT_WIFI_TYPE, mtk_wcn_cmb_sdio_eirq_handler_stub, 0); #endif #else { int i_ret = 0; i_ret = request_irq(mtk_wcn_cmb_sdio_eint_num, (irq_handler_t)mtk_wcn_cmb_sdio_eirq_handler_stub, IRQF_TRIGGER_LOW, "SDIO_EXT_IRQ", NULL); if (i_ret) printk( KERN_ERR "request_irq for SDIO ext IRQ failed, i_ret(%d)\n", i_ret); else printk( KERN_ERR "request_irq for SDIO ext IRQ succeed, i_ret(%d)\n", i_ret); } #endif #if CONFIG_EINT_DEVICE_TREE #else mt_eint_mask(mtk_wcn_cmb_sdio_eint_num);/*CUST_EINT_WIFI_NUM */ #endif printk(KERN_INFO "exit %s\n", __func__); }
void mtk_wcn_cmb_sdio_request_eirq(sdio_irq_handler_t irq_handler, void *data) { mtk_wcn_sdio_irq_flag_set (0); mtk_wcn_cmb_sdio_eirq_data = data; mtk_wcn_cmb_sdio_eirq_handler = irq_handler; //mt_eint_set_sens(mtk_wcn_cmb_sdio_eint_num, CUST_EINT_WIFI_SENSITIVE); /*CUST_EINT_WIFI_NUM */ //mt_eint_set_hw_debounce(mtk_wcn_cmb_sdio_eint_num, CUST_EINT_WIFI_DEBOUNCE_CN); /*CUST_EINT_WIFI_NUM */ mt_set_gpio_pull_enable(mtk_wcn_cmb_sdio_eint_pin, GPIO_PULL_ENABLE); mt_set_gpio_pull_select(mtk_wcn_cmb_sdio_eint_pin, GPIO_PULL_UP); mt_eint_registration(mtk_wcn_cmb_sdio_eint_num, CUST_EINT_WIFI_POLARITY, mtk_wcn_cmb_sdio_eirq_handler_stub, 0); mt_eint_mask(mtk_wcn_cmb_sdio_eint_num);/*CUST_EINT_WIFI_NUM */ }
static void mtk_wcn_cmb_sdio_request_eirq(sdio_irq_handler_t irq_handler, void *data) { mtk_wcn_sdio_irq_flag_set (0); mtk_wcn_cmb_sdio_eirq_data = data; mtk_wcn_cmb_sdio_eirq_handler = irq_handler; #if CUST_EINT_WIFI_DEBOUNCE_EN mt_eint_set_hw_debounce(mtk_wcn_cmb_sdio_eint_num, CUST_EINT_WIFI_DEBOUNCE_CN); /*CUST_EINT_WIFI_NUM */ #endif mt_set_gpio_pull_enable(mtk_wcn_cmb_sdio_eint_pin, GPIO_PULL_ENABLE); mt_set_gpio_pull_select(mtk_wcn_cmb_sdio_eint_pin, GPIO_PULL_UP); mt_eint_registration(mtk_wcn_cmb_sdio_eint_num/*CUST_EINT_WIFI_NUM */, CUST_EINT_WIFI_TYPE, mtk_wcn_cmb_sdio_eirq_handler_stub, 0); mt_eint_mask(mtk_wcn_cmb_sdio_eint_num);/*CUST_EINT_WIFI_NUM */ }