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.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/kernel/drivers/headset_observe/rk_headset.c b/kernel/drivers/headset_observe/rk_headset.c
index 5b16db7..3564946 100644
--- a/kernel/drivers/headset_observe/rk_headset.c
+++ b/kernel/drivers/headset_observe/rk_headset.c
@@ -153,6 +153,7 @@
 {
 	int level = 0;
 	int level2 = 0;
+	int ret;
 	struct rk_headset_pdata *pdata = headset_info->pdata;
 	static unsigned int old_status = 0;
 
@@ -177,11 +178,15 @@
 		pr_warn("old_status == headset_info->headset_status\n");
 		goto out;
 	}
-	DBG("(headset in is %s)headset status is %s\n",
+	DBG("(troy test 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) {
 		headset_info->cur_headset_status = BIT_HEADSET_NO_MIC;
+		ret = gpio_direction_output(pdata->spk_ctl_gpio,1);
+		if (ret < 0) {
+			 printk("spk_ctl_gpio set direction fail\n");
+		}
 		if (pdata->headset_insert_type == HEADSET_IN_HIGH)
 			irq_set_irq_type(headset_info->irq[HEADSET],
 					 IRQF_TRIGGER_FALLING);
@@ -196,6 +201,10 @@
 			goto out;
 		}
 	} 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->hook_status = HOOK_UP;
 		if (headset_info->isHook_irq == enable) {
 			DBG("disable headset_hook irq\n");

--
Gitblit v1.6.2