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