return -1;
}
- if (type == IRQ_TYPE_EDGE_FALLING)
+ if (es8316->hp_det_level != gpio_get_value(es8316->hp_det_gpio))
hp_irq_flag = 0;
else
hp_irq_flag = 1;
int ret = -1;
unsigned long irq_flag = 0;
int hp_irq = 0;
+ int val = 0;
enum of_gpio_flags flags;
struct device_node *np = i2c_client->dev.of_node;
irq_flag = IRQF_TRIGGER_LOW | IRQF_ONESHOT;
hp_irq = gpio_to_irq(es8316->hp_det_gpio);
+ val = gpio_get_value(es8316->hp_det_gpio);
+ if (val == es8316->hp_det_level) {
+ pr_info("hp inserted.\n");
+ hp_irq_flag = 1;
+ es8316_set_gpio(ES8316_CODEC_SET_SPK,
+ !es8316->spk_gpio_level);
+ }
+
if (hp_irq)
ret = request_threaded_irq(hp_irq, NULL,
hp_det_irq_handler, irq_flag, "ES8316", NULL);