mbox series

[v3,0/4] pinctrl: pinctrl-zynqmp: Add tri-state configuration support

Message ID 20230731095026.3766675-1-sai.krishna.potthuri@amd.com
Headers show
Series pinctrl: pinctrl-zynqmp: Add tri-state configuration support | expand

Message

Potthuri, Sai Krishna July 31, 2023, 9:50 a.m. UTC
Add pinctrl driver support to handle 'output-enable' and
'bias-high-impedance' configurations with proper Configuration Set version
check. This will ensure system not to crash even if older Xilinx ZynqMP
Platform Management Firmware is used.
Initial Commit details:
Commit 133ad0d9af99bdca9070 ("dt-bindings: pinctrl-zynqmp: Add
output-enable configuration").
Commit ad2bea79ef0144043721 ("pinctrl: pinctrl-zynqmp: Add support
for output-enable and bias-high-impedance").

With the above patches, using these pinctrl properties in the device-tree
cause system hang issues with older Xilinx ZynqMP Platform Management
Firmware, hence reverted the patches.
Reverted Commit details:
Commit ff8356060e3a5e126abb ("Revert "dt-bindings: pinctrl-zynqmp: Add
output-enable configuration"").
Commit 9989bc33c4894e075167 ("Revert "pinctrl: pinctrl-zynqmp: Add support
for output-enable and bias-high-impedance"").
With the latest firmware and driver changes, driver will ask firmware if
that feature is supported or not by checking the version. This way it
works with all Xilinx firmwares.

changes in v3:
- Used GENMASK for Family and SubFamily macros instead of individual LSB
and MSB macros as suggested by Michal Simek.

changes in v2:
- Updated commit description in 3/4 patch as suggested by Conor Dooley.

Dhaval Shah (1):
  firmware: xilinx: Add support to get platform information

Sai Krishna Potthuri (3):
  firmware: xilinx: Add version check for TRISTATE configuration
  dt-bindings: pinctrl-zynqmp: Add output-enable configuration
  pinctrl: pinctrl-zynqmp: Add support for output-enable and bias-high
    impedance

 .../bindings/pinctrl/xlnx,zynqmp-pinctrl.yaml |  4 ++
 drivers/firmware/xilinx/zynqmp.c              | 49 +++++++++++++++++++
 drivers/pinctrl/pinctrl-zynqmp.c              |  9 ++++
 include/linux/firmware/xlnx-zynqmp.h          | 13 +++++
 4 files changed, 75 insertions(+)

Comments

Michal Simek July 31, 2023, 10:06 a.m. UTC | #1
On 7/31/23 11:50, Sai Krishna Potthuri wrote:
> Add support to handle 'output-enable' and 'bias-high-impedance'
> configurations.
> 
> Using these pinctrl properties observed hang issues with older PMUFW(Xilinx
> ZynqMP Platform Management Firmware), hence reverted the patch.
> Commit 9989bc33c4894e075167 ("Revert "pinctrl: pinctrl-zynqmp: Add support
> for output-enable and bias-high-impedance"").
> 
> Support for configuring these properties added in PMUFW Configuration Set
> version 2.0. When there is a request for these configurations from pinctrl
> driver for ZynqMP platform, xilinx firmware driver checks for this version
> before configuring these properties to avoid the hang issue and proceeds
> further only when firmware version is >=2 otherwise it returns error.
> 
> Signed-off-by: Sai Krishna Potthuri <sai.krishna.potthuri@amd.com>
> ---
>   drivers/pinctrl/pinctrl-zynqmp.c | 9 +++++++++
>   1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/pinctrl/pinctrl-zynqmp.c b/drivers/pinctrl/pinctrl-zynqmp.c
> index 8d2cb0999f2f..f2be341f73e1 100644
> --- a/drivers/pinctrl/pinctrl-zynqmp.c
> +++ b/drivers/pinctrl/pinctrl-zynqmp.c
> @@ -415,6 +415,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
> @@ -423,6 +427,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",

Reviewed-by: Michal Simek <michal.simek@amd.com>

Thanks,
Michal
Linus Walleij Aug. 7, 2023, 8:49 a.m. UTC | #2
On Mon, Jul 31, 2023 at 11:50 AM Sai Krishna Potthuri
<sai.krishna.potthuri@amd.com> wrote:

> Add pinctrl driver support to handle 'output-enable' and
> 'bias-high-impedance' configurations with proper Configuration Set version
> check. This will ensure system not to crash even if older Xilinx ZynqMP
> Platform Management Firmware is used.

Patches applied to the pinctrl tree, this looks fine to me, firmware
patches ACKed by
Michal so I'm happy to take these in the set.

Yours,
Linus Walleij