static irqreturn_t earjack_debugger_irq_handler(int irq, void *_dev) { struct earjack_debugger_device *adev = _dev; int detect; printk(KERN_INFO "Calling %s\n", __func__); msleep(400); detect = earjack_debugger_detected(adev); if (detect) { pr_debug("%s() : in!!\n", __func__); printk(KERN_INFO "%s() : in!!\n", __func__); adev->set_uart_console( lge_uart_console_should_enable_on_earjack_debugger()); } else { /* restore uart console status to default mode */ pr_debug("%s() : out!!\n", __func__); printk(KERN_INFO "%s() : out!!\n", __func__); adev->set_uart_console( lge_uart_console_should_enable_on_default()); } return IRQ_HANDLED; }
static void max14688_irq_jack_removed (struct max14688 *me) { cancel_delayed_work_sync(&me->det_work); max14688_disable_irq(me, IRQ_SWD); max14688_write_mode0(me, MAX14688_MODE_LOW); max14688_write_mode1(me, MAX14688_MODE_LOW); /* Make sure no button down */ max14688_irq_button_released(me); if (unlikely(!__present_valid_jack(me))) { goto out; } log_dbg("jack %s removed\n", __current_jack_name(me)); me->report_jack(me->dev, __current_jack(me), JACK_OUT_VALUE); /* release current jack */ me->matched_jack = -1; #ifdef CONFIG_LGE_EARJACK_DEBUGGER msm_serial_set_uart_console(lge_uart_console_should_enable_on_default()); #endif out: return; }
static void max14688_irq_jack_inserted (struct max14688 *me) { unsigned long det_work_delay = msecs_to_jiffies(500); #ifdef CONFIG_LGE_EARJACK_DEBUGGER msm_serial_set_uart_console(lge_uart_console_should_enable_on_default()); #endif /* Check INT bit and STATUS_INT bit for avoiding JIG mode */ if (unlikely(max14688_get_status(me, STATUS_INT) && max14688_get_status(me, STATUS_MICIN))) { log_info("JIG power detected\n"); max14688_disable_irq(me, IRQ_SWD); #ifdef CONFIG_LGE_EARJACK_DEBUGGER msm_serial_set_uart_console(lge_uart_console_should_enable_on_earjack_debugger()); #endif me->matched_jack = -1; me->matched_button = -1; goto out; } if (unlikely(__present_valid_jack(me))) { log_warn("new jack detected during insertion of jack %s\n", __current_jack_name(me)); #ifdef MAX14688_OVERWRITE_JACK_INSERTION max14688_irq_jack_removed(me); #else goto out; #endif } if (unlikely(delayed_work_pending(&me->det_work))) { log_warn("detection in progress\n"); goto out; } log_dbg("%s\n", __func__); max14688_write_mode0(me, MAX14688_MODE_HIGH); max14688_write_mode1(me, MAX14688_MODE_LOW); schedule_delayed_work(&me->det_work, det_work_delay); out: return; }