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