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)) {