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/rockchip_headset_core.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/kernel/drivers/headset_observe/rockchip_headset_core.c b/kernel/drivers/headset_observe/rockchip_headset_core.c
index 3c2eeb7..9f44b25 100644
--- a/kernel/drivers/headset_observe/rockchip_headset_core.c
+++ b/kernel/drivers/headset_observe/rockchip_headset_core.c
@@ -73,6 +73,34 @@
 						     HEADSET_IN_LOW :
 						     HEADSET_IN_HIGH;
 	}
+
+        /* spk-ctl */
+        ret = of_get_named_gpio_flags(node, "spk_ctl_gpio", 0, &flags);
+        if (ret < 0) {
+                dev_err(&pdev->dev, "Can not read property headset_gpio\n");
+                goto err;
+        } else {
+                pdata->spk_ctl_gpio = ret;
+                ret = devm_gpio_request(&pdev->dev, pdata->spk_ctl_gpio,
+                                        "spk_ctl_gpio");
+                if (ret < 0) {
+                        dev_err(&pdev->dev, "spk_ctl_gpio request fail\n");
+                        goto err;
+                }
+		
+		ret = gpio_get_value(pdata->headset_gpio);
+		printk(" headset_gpio value : %d\n",ret);
+		if (ret == 0)
+                	ret = gpio_direction_output(pdata->spk_ctl_gpio,0);
+		else 
+			ret = gpio_direction_output(pdata->spk_ctl_gpio,1);
+                if (ret < 0) {
+                        dev_err(&pdev->dev,
+                                "spk_ctl_gpio set direction fail\n");
+                        goto err;
+                }
+        }
+
 	/* hook */
 	ret = of_get_named_gpio_flags(node, "hook_gpio", 0, &pdata->hook_gpio);
 	if (ret < 0) {

--
Gitblit v1.6.2