From ee730f864060537157bc45726169530c87a4e600 Mon Sep 17 00:00:00 2001 From: Zhiye Li Date: Wed, 15 Nov 2023 15:05:39 +0800 Subject: [PATCH] arm64/dts: update the wlan_antenna driver code for boston add the code to support get the gpio status. adb shell "cat /sys/devices/platform/soc/soc:wlan_antenna/wlan_antenna_en" low adb shell "cat /sys/devices/platform/soc/soc:wlan_antenna/wlan_antenna_en" high Change-Id: If1e1826e5afa9779bae44a8339eb74f4bbc11e6f Signed-off-by: Zhiye Li Reviewed-on: https://gerrit.mot.com/2795396 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Yeqing Wang Reviewed-by: Bin Liu Reviewed-by: Tao Sun Submit-Approved: Jira Key --- drivers/wlan_antenna/wlan_antenna.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/wlan_antenna/wlan_antenna.c b/drivers/wlan_antenna/wlan_antenna.c index 7f71369330e4..209fbd9bac88 100644 --- a/drivers/wlan_antenna/wlan_antenna.c +++ b/drivers/wlan_antenna/wlan_antenna.c @@ -25,13 +25,15 @@ #include #include #include - +#include +#include #define DRIVER_VERSION "0.0.1" struct wlan_antenna_drvdata { struct device *dev; struct pinctrl *pinctrl; + int wlan_antenna_gpio; struct pinctrl_state *pstate_active; struct pinctrl_state *pstate_suspend; }; @@ -47,7 +49,10 @@ static ssize_t wlan_antenna_en_read(struct device *dev, return -EINVAL; } - return snprintf(buf, PAGE_SIZE, "wlan_antenna: not support!\n"); + if (gpio_get_value(data->wlan_antenna_gpio)) + return snprintf(buf, PAGE_SIZE, "high\n"); + else + return snprintf(buf, PAGE_SIZE, "low\n"); } static ssize_t wlan_antenna_en_write(struct device *dev, @@ -77,8 +82,6 @@ static ssize_t wlan_antenna_en_write(struct device *dev, if(ret) { pr_err("wlan_antenna failed to set pinctrl!\n"); - } else { - pr_info("wlan_antenna success set pinctrl\n"); } return count; @@ -108,6 +111,13 @@ static int wlan_antenna_probe(struct platform_device *pdev) drvdata->dev = &pdev->dev; platform_set_drvdata(pdev, drvdata); + drvdata->wlan_antenna_gpio = of_get_named_gpio(dev->of_node, "qcom,wlan_antenna-gpio", 0); + ret = gpio_request(drvdata->wlan_antenna_gpio, "wlan_antenna_gpio"); + if (ret) { + pr_err("%s, unable to request gpio %d (%d)\n", __func__, drvdata->wlan_antenna_gpio, ret); + return ret; + } + /* Get pinctrl if target uses pinctrl */ drvdata->pinctrl = devm_pinctrl_get(dev); if (IS_ERR_OR_NULL(drvdata->pinctrl)) {