From f8c23d1415aad662de5acfa33671b5d14d2c1300 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 15 Mar 2023 09:58:59 +0000
Subject: [PATCH] 修复hp / spk自动切换

---
 kernel/drivers/headset_observe/rockchip_headset_core.c |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 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..de4f548 100644
--- a/kernel/drivers/headset_observe/rockchip_headset_core.c
+++ b/kernel/drivers/headset_observe/rockchip_headset_core.c
@@ -73,6 +73,35 @@
 						     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