pinctrl: pinctrl-zynqmp: Add support for output-enable and bias-high-impedance
authorSai Krishna Potthuri <lakshmi.sai.krishna.potthuri@xilinx.com>
Fri, 17 Jun 2022 10:46:58 +0000 (16:16 +0530)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 28 Jun 2022 08:29:39 +0000 (10:29 +0200)
Add support to handle 'output-enable' and 'bias-high-impedance'
configurations. As part of the output-enable configuration, ZynqMP pinctrl
driver takes care of removing the pins from tri-state.

Signed-off-by: Sai Krishna Potthuri <lakshmi.sai.krishna.potthuri@xilinx.com>
Link: https://lore.kernel.org/r/1655462819-28801-4-git-send-email-lakshmi.sai.krishna.potthuri@xilinx.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-zynqmp.c

index e140122..b25e9e7 100644 (file)
@@ -410,6 +410,10 @@ static int zynqmp_pinconf_cfg_set(struct pinctrl_dev *pctldev,
 
                        break;
                case PIN_CONFIG_BIAS_HIGH_IMPEDANCE:
+                       param = PM_PINCTRL_CONFIG_TRI_STATE;
+                       arg = PM_PINCTRL_TRI_STATE_ENABLE;
+                       ret = zynqmp_pm_pinctrl_set_config(pin, param, arg);
+                       break;
                case PIN_CONFIG_MODE_LOW_POWER:
                        /*
                         * These cases are mentioned in dts but configurable
@@ -418,6 +422,11 @@ static int zynqmp_pinconf_cfg_set(struct pinctrl_dev *pctldev,
                         */
                        ret = 0;
                        break;
+               case PIN_CONFIG_OUTPUT_ENABLE:
+                       param = PM_PINCTRL_CONFIG_TRI_STATE;
+                       arg = PM_PINCTRL_TRI_STATE_DISABLE;
+                       ret = zynqmp_pm_pinctrl_set_config(pin, param, arg);
+                       break;
                default:
                        dev_warn(pctldev->dev,
                                 "unsupported configuration parameter '%u'\n",