int c2k_gpio_to_ls(int gpio) { struct mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if (NULL == des) { pr_debug("%s: no des for gpio %d\n", __func__, gpio); return -1; } else { if (des->irq_type == IRQ_TYPE_EDGE_FALLING) /* irq triggerred by edge falling interrupt, so line status should be low */ des->eint_ls = 0; else if (des->irq_type == IRQ_TYPE_EDGE_RISING) /* irq triggerred by edge rising interrupt, so line status should be high */ des->eint_ls = 1; else if (des->irq_type == IRQ_TYPE_LEVEL_LOW) des->eint_ls = 0; else if (des->irq_type == IRQ_TYPE_LEVEL_HIGH) des->eint_ls = 1; } /*pr_debug("[C2K]gpio(%d) ls(%d)", gpio, des->eint_ls); */ return des->eint_ls; }
static void gpio_irq_handle_rst_ind(void) { struct mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(GPIO_C2K_MDM_RST_IND); if (des && des->handle) des->handle(des->irq, des->data); }
static void gpio_irq_handle_excp(void) { struct mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(GPIO_C2K_EXCEPTION); if (des && des->handle) des->handle(des->irq, des->data); }
void c2k_reset_tx_gpio_ready(int gpio) { mtk_c2k_gpio_des *des; des = gpio_des_find_by_gpio(gpio); des->eint_ls = 1; des->irq_type = IRQ_TYPE_EDGE_FALLING; c2k_gpio_set_irq_type(gpio, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING); }
static void gpio_irq_handle_flow_crtl(void) { struct mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(GPIO_C2K_SDIO_FLOW_CTRL); if (des && des->handle) des->handle(des->irq, des->data); }
static void gpio_irq_handle_data_ack(void) { struct mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(GPIO_C2K_SDIO_DATA_ACK); if (des && des->handle) des->handle(des->irq, des->data); }
static void gpio_irq_handle_sdio_mdm_wake_ap(void) { struct mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(GPIO_C2K_SDIO_MDM_WAKE_AP); if (des && des->handle) des->handle(des->irq, des->data); }
static void gpio_irq_handle_usb_mdm_rdy(void) { mtk_oem_gpio_des *des = NULL; des = gpio_des_find_by_gpio(GPIO_VIATEL_USB_MDM_RDY); if(des && des->handle){ des->handle(des->irq, des->data); } }
static void gpio_irq_handle_sdio_mdm_rdy(void) { mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(GPIO_C2K_SDIO_MDM_RDY); if(des && des->handle){ des->handle(des->irq, des->data); } }
static void gpio_irq_handle_pwr_ind(void) { mtk_oem_gpio_des *des = NULL; des = gpio_des_find_by_gpio(GPIO_VIATEL_MDM_PWR_IND); if(des && des->handle){ des->handle(des->irq, des->data); } }
static void gpio_irq_handle_uart_mdm_wake_ap(void) { mtk_oem_gpio_des *des = NULL; des = gpio_des_find_by_gpio(GPIO_VIATEL_UART_MDM_WAKE_AP); if(des && des->handle){ des->handle(des->irq, des->data); } }
int c2k_gpio_get_ls(int gpio) { mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if(NULL == des){ printk("%s: no des for gpio %d\n", __FUNCTION__, gpio); return -1; }else{ return des->eint_ls; } }
int c2k_gpio_get_irq_type(int gpio) { mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if(NULL == des){ printk("%s: no irqtype for gpio %d\n", __FUNCTION__, gpio); return -1; }else{ return des->irq_type; } }
int oem_gpio_to_irq(int gpio) { mtk_oem_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if(NULL == des){ printk("%s: no irq for gpio %d\n", __FUNCTION__, gpio); return -1; }else{ return des->irq; } }
int c2k_gpio_get_irq_type(int gpio) { struct mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if (NULL == des) { pr_debug("%s: no irqtype for gpio %d\n", __func__, gpio); return -1; } else { return des->irq_type; } }
int c2k_gpio_get_ls(int gpio) { struct mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if (NULL == des) { pr_debug("%s: no des for gpio %d\n", __func__, gpio); return -1; } else { return des->eint_ls; } }
int c2k_gpio_set_ls(int gpio, unsigned int ls) { mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if(NULL == des){ printk("%s: no des for gpio %d\n", __FUNCTION__, gpio); return -1; }else{ des->eint_ls = ls;; } return 0; }
int c2k_gpio_set_ls(int gpio, unsigned int ls) { struct mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if (NULL == des) { pr_debug("%s: no des for gpio %d\n", __func__, gpio); return -1; } else des->eint_ls = ls; return 0; }
int oem_gpio_request_irq(int gpio, irq_handler_t handler, unsigned long flags, const char *name, void *dev) { mtk_oem_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if(des == NULL){ return -1; } des->data = dev; des->handle = handler; mt65xx_eint_registration(des->irq, 1, 1, des->redirect, 0); return 0; }
int c2k_gpio_to_irq(int gpio) { struct mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if (NULL == des) { pr_debug("%s: no irq for gpio %d\n", __func__, gpio); return -1; } else { #if defined(CONFIG_MTK_LEGACY) return des->irq; #else des->irq = mt_gpio_to_irq(gpio); return des->irq; #endif } }
int c2k_gpio_request_irq(int gpio, irq_handler_t handler, unsigned long flags, const char *name, void *dev) { mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if(des == NULL){ return -1; } des->data = dev; des->handle = handler; printk("[C2K] c2k_gpio_request_irq eintnum %d\n", des->irq); //mt_eint_registration(des->irq, des->deb_en, des->pol, des->redirect, 0); mt_eint_registration(des->irq, des->pol, des->redirect, 0); return 0; }
int c2k_gpio_to_ls(int gpio) { mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if(NULL == des){ printk("%s: no des for gpio %d\n", __FUNCTION__, gpio); return -1; }else{ if (des->irq_type == IRQ_TYPE_EDGE_FALLING) des->eint_ls = 0; //irq triggerred by edge falling interrupt, so line status should be low else if (des->irq_type == IRQ_TYPE_EDGE_RISING) des->eint_ls = 1; //irq triggerred by edge rising interrupt, so line status should be high else if (des->irq_type == IRQ_TYPE_LEVEL_LOW) des->eint_ls = 0; else if (des->irq_type == IRQ_TYPE_LEVEL_HIGH) des->eint_ls = 1; } //printk("[C2K]gpio(%d) ls(%d)", gpio, des->eint_ls); return des->eint_ls; }
int c2k_gpio_request_irq(int gpio, irq_handler_t handler, unsigned long flags, const char *name, void *dev) { struct mtk_c2k_gpio_des *des = NULL; des = gpio_des_find_by_gpio(gpio); if (des == NULL) return -1; des->data = dev; des->handle = handler; #if defined(CONFIG_MTK_LEGACY) pr_debug("[C2K] c2k_gpio_request_irq eintnum %d\n", des->irq); /*mt_eint_registration(des->irq, des->deb_en, des->pol, des->redirect, 0); */ mt_eint_registration(des->irq, des->pol, des->redirect, 0); #else pr_info("[C2K] c2k_gpio_request_irq gpio %d irq %d\n", gpio, des->irq); /*mt_eint_registration(des->irq, des->pol, des->redirect, 0); */ request_irq(des->irq, handler, flags, name, dev); #endif return 0; }