From 619f0f87159c5dbd2755b1b0a0eb35784be84e7a Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Fri, 22 Mar 2024 08:09:42 +0000 Subject: [PATCH] 增加支持hp & spk 自动切换 --- kernel/drivers/headset_observe/rk_headset_irq_hook_adc.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-) diff --git a/kernel/drivers/headset_observe/rk_headset_irq_hook_adc.c b/kernel/drivers/headset_observe/rk_headset_irq_hook_adc.c index 828a026..9484c75 100644 --- a/kernel/drivers/headset_observe/rk_headset_irq_hook_adc.c +++ b/kernel/drivers/headset_observe/rk_headset_irq_hook_adc.c @@ -111,6 +111,7 @@ struct rk_headset_pdata *pdata = headset_info->pdata; static unsigned int old_status = 0; int i, level = 0; + int ret; disable_irq_nosync(headset_info->irq[HEADSET]); if (headset_info->heatset_irq_working == BUSY || @@ -161,11 +162,15 @@ goto out; } - pr_info("(headset in is %s)headset status is %s\n", + pr_info("(myttest headset in is %s)headset status is %s\n", pdata->headset_insert_type ? "high level" : "low level", headset_info->headset_status ? "in" : "out"); if (headset_info->headset_status == HEADSET_IN) { + ret = gpio_direction_output(pdata->spk_ctl_gpio,1); + if (ret < 0) { + printk("spk_ctl_gpio set direction fail\n"); + } if (pdata->chan != 0) { /* detect Hook key */ schedule_delayed_work( @@ -186,6 +191,10 @@ irq_set_irq_type(headset_info->irq[HEADSET], IRQF_TRIGGER_RISING); } else if (headset_info->headset_status == HEADSET_OUT) { + ret = gpio_direction_output(pdata->spk_ctl_gpio,0); + if (ret < 0) { + printk("spk_ctl_gpio set direction fail\n"); + } headset_info->cur_headset_status = HEADSET_OUT; cancel_delayed_work(&headset_info->hook_work); if (headset_info->isMic) { -- Gitblit v1.6.2