/********************************************************** ** Function: LineOut Detection configuration function ** Parameter: none ** Return value: IRQ_HANDLED ** ************************************************************/ static int lineout_config_gpio() { int ret; printk("HEADSET: Config LineOut detection gpio\n"); ret = gpio_request(hs_data->lineout_gpio, "lineout_int"); ret = gpio_direction_input(hs_data->lineout_gpio); ret = request_irq(gpio_to_irq(hs_data->lineout_gpio), &lineout_irq_handler, IRQF_TRIGGER_FALLING|IRQF_TRIGGER_RISING, "lineout_int", 0); if(!is_support_dock()){ printk("%s: Not support dock\n", __func__); lineout_alive = false; switch_set_state(&hs_data->ldev, NO_DEVICE); }else if (gpio_get_value(LINEOUT_GPIO) == 0){ lineout_alive = true; audio_stand_route(true); switch_set_state(&hs_data->ldev, LINEOUT_IN); }else{ lineout_alive = false; audio_stand_route(false); switch_set_state(&hs_data->ldev, NO_DEVICE); } return 0; }
static void lineout_work_queue(struct work_struct *work) { msleep(300); if(!is_support_dock()){ printk("%s: Not support dock\n",__func__); lineout_alive = false; switch_set_state(&hs_data->ldev, NO_DEVICE); return; } /* check if audio stand is inserted */ if(!isAudioStandIn()){ printk("LINEOUT: No Audio Stand in\n"); return; } if (gpio_get_value(LINEOUT_GPIO) == 0){ printk("LINEOUT: LineOut inserted\n"); lineout_alive = true; audio_stand_route(true); switch_set_state(&hs_data->ldev, LINEOUT_IN); }else if(gpio_get_value(LINEOUT_GPIO)){ printk("LINEOUT: LineOut removed\n"); lineout_alive = false; audio_stand_route(false); switch_set_state(&hs_data->ldev, NO_DEVICE); } }
static void lineout_work_queue(struct work_struct *work) { msleep(300); /* check if audio stand is inserted */ if(!isAudioStandIn()){ printk("LINEOUT: No Audio Stand in\n"); return; } if (gpio_get_value(LINEOUT_GPIO) == 0){ printk("LINEOUT: LineOut inserted\n"); lineout_alive = true; audio_stand_route(true); }else if(gpio_get_value(LINEOUT_GPIO)){ printk("LINEOUT: LineOut removed\n"); lineout_alive = false; audio_stand_route(false); } }
/********************************************************** ** Function: LineOut Detection configuration function ** Parameter: none ** Return value: IRQ_HANDLED ** ************************************************************/ static int lineout_config_gpio() { int ret; printk("HEADSET: Config LineOut detection gpio\n"); tegra_gpio_enable(LINEOUT_GPIO); ret = gpio_request(LINEOUT_GPIO, "lineout_int"); ret = gpio_direction_input(LINEOUT_GPIO); ret = request_irq(gpio_to_irq(LINEOUT_GPIO), &lineout_irq_handler, IRQF_TRIGGER_FALLING|IRQF_TRIGGER_RISING, "lineout_int", 0); if (gpio_get_value(LINEOUT_GPIO) == 0){ lineout_alive = true; audio_stand_route(true); }else{ lineout_alive = false; audio_stand_route(false); } return 0; }