From 0b2dab507db1f5d33b072f1b82db2041f8cba53b Mon Sep 17 00:00:00 2001 From: Mukesh Ojha Date: Thu, 17 Dec 2020 15:52:39 +0530 Subject: [PATCH] pinctrl: qcom: Add flexibility to disable the wakeup capability By default, the system firmware enables the mpm wakeup functionality of all the supported GPIOs. However, certain usecases demand that this capability be disabled on certain gpios. Hence, provide a generic interface to disable the GPIOs as needed. Change-Id: Ib36569d422d2336a81d71e451ef47196c956c3a5 Signed-off-by: Mukesh Ojha --- drivers/pinctrl/qcom/pinctrl-shima.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/qcom/pinctrl-shima.c b/drivers/pinctrl/qcom/pinctrl-shima.c index 9852a17f8910..6f00d1942bdc 100644 --- a/drivers/pinctrl/qcom/pinctrl-shima.c +++ b/drivers/pinctrl/qcom/pinctrl-shima.c @@ -1899,9 +1899,32 @@ static const struct msm_pinctrl_soc_data shima_pinctrl = { .nwakeirq_map = ARRAY_SIZE(shima_pdc_map), }; +/* By default, all the gpios that are mpm wake capable are enabled. + * The following list disables the gpios explicitly + */ +static const unsigned int config_mpm_wake_disable_gpios[] = { +}; + +static void shima_pinctrl_config_mpm_wake_disable_gpios(void) +{ + unsigned int i; + unsigned int n_gpios = ARRAY_SIZE(config_mpm_wake_disable_gpios); + + for (i = 0; i < n_gpios; i++) + msm_gpio_mpm_wake_set(config_mpm_wake_disable_gpios[i], false); +} + static int shima_pinctrl_probe(struct platform_device *pdev) { - return msm_pinctrl_probe(pdev, &shima_pinctrl); + int ret; + + ret = msm_pinctrl_probe(pdev, &shima_pinctrl); + if (ret) + return ret; + + shima_pinctrl_config_mpm_wake_disable_gpios(); + + return 0; } static const struct of_device_id shima_pinctrl_of_match[] = {