lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <433295fe-8d34-af8b-f6bf-be1953b6e479@mediatek.com>
Date: Thu, 17 Oct 2024 16:15:30 +0800
From: Macpaul Lin <macpaul.lin@...iatek.com>
To: Bo Ye <bo.ye@...iatek.com>, Sean Wang <sean.wang@...nel.org>, Linus
 Walleij <linus.walleij@...aro.org>, Matthias Brugger
	<matthias.bgg@...il.com>, AngeloGioacchino Del Regno
	<angelogioacchino.delregno@...labora.com>, <Jades.shih@...iatek.com>,
	<ivan.tseng@...iatek.com>
CC: Yongdong Zhang <yongdong.zhang@...iatek.com>, Xiujuan Tan
	<xiujuan.tan@...iatek.com>, Browse Zhang <browse.zhang@...iatek.com>, Light
 Hsieh <light.hsieh@...iatek.com>, Evan Cao <ot_evan.cao@...iatek.com>,
	<linux-mediatek@...ts.infradead.org>, <linux-gpio@...r.kernel.org>,
	<linux-kernel@...r.kernel.org>, <linux-arm-kernel@...ts.infradead.org>
Subject: Re: [PATCH] pinctrl: mediatek: paris: Revert "Rework support for
 PIN_CONFIG_{INPUT,OUTPUT}_ENABLE"



On 10/17/24 15:55, Bo Ye wrote:
> [This reverts commit c5d3b64c568a344e998830e0e94a7c04e372f89b.]
> 
> For MTK HW,
> 1. to enable GPIO input direction: set DIR=0, IES=1
> 2. to enable GPIO output direction: set DIR=1, and set DO=1 to output high, set DO=0 to out low
> 
> The PIN_CONFIG_INPUT/PIN_CONFIG_OUTPUT/PIN_CONFIG_INPUT_ENABLE/PIN_CONFIG_OUTPUT_ENABLE shall
> be implemented according to view of its purpose - set GPIO direction and output value (for
> output only) according to specific HW design.
> 
> However, the reverted patch implement according to author's own explanation of IES without
> understanding of MTK's HW. Such patch does not correctly set DIR/IES bit to control GPIO
> direction on MTK's HW.
> 
> Signed-off-by: Light Hsieh <light.hsieh@...iatek.com>
> Signed-off-by: Evan Cao <ot_evan.cao@...iatek.com>
> Signed-off-by: Bo Ye <bo.ye@...iatek.com>

The "Fixes:" tag is missing. Please add it.

Besides, please update "MAINTAINERS" file with the correct owner.

The Linux kernel is open source and anyone modify it.
If the patch appears reasonable and has been tested, it usually
will be accepted as long as there are no opposing review opinions.


> ---
>   drivers/pinctrl/mediatek/pinctrl-paris.c | 38 +++++++++++++++++-------
>   1 file changed, 27 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.c b/drivers/pinctrl/mediatek/pinctrl-paris.c
> index 87e958d827bf..a8af62e6f8ca 100644
> --- a/drivers/pinctrl/mediatek/pinctrl-paris.c
> +++ b/drivers/pinctrl/mediatek/pinctrl-paris.c
> @@ -165,21 +165,20 @@ static int mtk_pinconf_get(struct pinctrl_dev *pctldev,
>   		err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_SR, &ret);
>   		break;
>   	case PIN_CONFIG_INPUT_ENABLE:
> -		err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_IES, &ret);
> -		if (!ret)
> -			err = -EINVAL;
> -		break;
> -	case PIN_CONFIG_OUTPUT:
> +	case PIN_CONFIG_OUTPUT_ENABLE:
>   		err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &ret);
>   		if (err)
>   			break;
> +		/*     CONFIG     Current direction return value
> +		 * -------------  ----------------- ----------------------
> +		 * OUTPUT_ENABLE       output       1 (= HW value)
> +		 *                     input        0 (= HW value)
> +		 * INPUT_ENABLE        output       0 (= reverse HW value)
> +		 *                     input        1 (= reverse HW value)
> +		 */
> +		if (param == PIN_CONFIG_INPUT_ENABLE)
> +			ret = !ret;
>   
> -		if (!ret) {
> -			err = -EINVAL;
> -			break;
> -		}
> -
> -		err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DO, &ret);
>   		break;
>   	case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
>   		err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &ret);
> @@ -284,9 +283,26 @@ static int mtk_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
>   			break;
>   		err = hw->soc->bias_set_combo(hw, desc, 0, arg);
>   		break;
> +	case PIN_CONFIG_OUTPUT_ENABLE:
> +		err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_SMT,
> +				       MTK_DISABLE);
> +		/* Keep set direction to consider the case that a GPIO pin
> +		 *  does not have SMT control
> +		 */
> +		if (err != -ENOTSUPP)
> +			break;
> +
> +		err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
> +				       MTK_OUTPUT);
> +		break;
>   	case PIN_CONFIG_INPUT_ENABLE:
>   		/* regard all non-zero value as enable */
>   		err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_IES, !!arg);
> +		if (err)
> +			break;
> +
> +		err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DIR,
> +				       MTK_INPUT);
>   		break;
>   	case PIN_CONFIG_SLEW_RATE:
>   		/* regard all non-zero value as enable */

Best regards,
Macpaul Lin

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ