Esempio n. 1
0
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;
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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);
}
Esempio n. 5
0
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);
}
Esempio n. 6
0
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);
}
Esempio n. 7
0
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);
}
Esempio n. 8
0
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);
    }
}
Esempio n. 9
0
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);
    }
}
Esempio n. 10
0
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);
    }
}
Esempio n. 11
0
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);
    }
}
Esempio n. 12
0
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;
    }
}
Esempio n. 13
0
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;
    }
}
Esempio n. 14
0
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;
    }
}
Esempio n. 15
0
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;
	}
}
Esempio n. 16
0
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;
	}
}
Esempio n. 17
0
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;
}
Esempio n. 18
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;
}
Esempio n. 19
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;
}
Esempio n. 20
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
	}
}
Esempio n. 21
0
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;
}
Esempio n. 22
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;
}
Esempio n. 23
0
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;
}