All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhiyong Tao <zhiyong.tao@mediatek.com>
To: Sean Wang <sean.wang@mediatek.com>
Cc: robh+dt@kernel.org, linus.walleij@linaro.org,
	mark.rutland@arm.com, matthias.bgg@gmail.com,
	devicetree@vger.kernel.org, hongkun.cao@mediatek.com,
	srv_heupstream@mediatek.com, linux-gpio@vger.kernel.org,
	biao.huang@mediatek.com, erin.lo@mediatek.com,
	liguo.zhang@mediatek.com, linux-kernel@vger.kernel.org,
	hongzhou.yang@mediatek.com, linux-mediatek@lists.infradead.org,
	yingjoe.chen@mediatek.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 4/4] pintcrl: support bias-disable of generic and special pins simultaneously
Date: Mon, 5 Mar 2018 09:23:08 +0800	[thread overview]
Message-ID: <1520212988.23198.22.camel@mhfsdcap03> (raw)
In-Reply-To: <1519890183.8089.114.camel@mtkswgap22>

On Thu, 2018-03-01 at 15:43 +0800, Sean Wang wrote:
> On Thu, 2018-03-01 at 11:47 +0800, Zhiyong Tao wrote:
> > On Wed, 2018-02-28 at 15:49 +0800, Zhiyong Tao wrote:
> > > On Wed, 2018-02-28 at 15:33 +0800, Sean Wang wrote:
> > > > On Mon, 2018-02-26 at 16:34 +0800, Zhiyong Tao wrote:
> > > > > For generic pins, parameter "arg" is 0 or 1.
> > > > > For special pins, bias-disable is set by R0R1,
> > > > > so we need transmited "00" to set bias-disable
> > > > > When we set "bias-disable" as high-z property,
> > > > > the parameter should be "MTK_PUPD_SET_R1R0_00".
> > > > > 
> > > > > Signed-off-by: Zhiyong Tao <zhiyong.tao@mediatek.com>
> > > > > ---
> > > > >  drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 13 +++++++++++--
> > > > >  1 file changed, 11 insertions(+), 2 deletions(-)
> > > > > 
> > > > > diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> > > > > index 3cf384f..e88ba04 100644
> > > > > --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> > > > > +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> > > > > @@ -301,8 +301,17 @@ static int mtk_pconf_set_pull_select(struct mtk_pinctrl *pctl,
> > > > >  	 * resistor bit, so we need this special handle.
> > > > >  	 */
> > > > >  	if (pctl->devdata->spec_pull_set) {
> > > > > -		ret = pctl->devdata->spec_pull_set(mtk_get_regmap(pctl, pin),
> > > > > -			pin, pctl->devdata->port_align, isup, arg);
> > > > > +		if (enable) {
> > > > > +			ret = pctl->devdata->spec_pull_set(
> > > > > +				mtk_get_regmap(pctl, pin), pin,
> > > > > +				pctl->devdata->port_align, isup,
> > > > > +				arg);
> > > > > +		} else {
> > > > > +			ret = pctl->devdata->spec_pull_set(
> > > > > +				mtk_get_regmap(pctl, pin), pin,
> > > > > +				pctl->devdata->port_align, isup,
> > > > > +				MTK_PUPD_SET_R1R0_00);
> > > > > +		}
> > > > 
> > > > 
> > > > it looks like you can use as following snippet with reusing original
> > > > logic and less effort on maintaining these common code (?)
> > > ==> Thanks for your suggestion very much. It seems better.
> > > I will change it in v3.
> > 
> > ==>
> >  Hi sean,
> > 
> > we try it in our site. we can't change like this.
> > Because we will check "arg" after setting "arg = MTK_PUPD_SET_R1R0_00;".
> > following snippet which check "arg" value is o or 1. If it not, which
> > will print error. so we can't change like this.
> > /* For generic pull config, default arg value should be 0 or 1. */
> > if (arg != 0 && arg != 1) {
> > 	dev_err(pctl->dev, "invalid pull-up argument %d on pin %d .\n", arg,
> > pin);
> > 	return -EINVAL;
> > }
> > 
> > Thanks.
> 
> why not rewrite it with

==> Hi sean,
Thanks for your comments, we will try to do it. If it is ok, we will
modify it in v3.
> 
> @@ -301,8 +301,10 @@ static int mtk_pconf_set_pull_select(struct
> mtk_pinctrl *pctl,
>          * resistor bit, so we need this special handle.
>          */
>         if (pctl->devdata->spec_pull_set) {
> +               unsigned int r1r0 = enable ? arg : MTK_PUPD_SET_R1R0_00;
> +
>                 ret = pctl->devdata->spec_pull_set(mtk_get_regmap(pctl,
> pin),
> -                       pin, pctl->devdata->port_align, isup, arg);
> +                       pin, pctl->devdata->port_align, isup, r1r0);
>                 if (!ret)
>                         return 0;
>         }
> 
> and also I appeared to find another bug in the original code when I had
> a close look at the code path, but it's not related to the patch: 
> 
> a special pin would still go through the code path to handle
> generic pin when the special pin uses an invalid argument.
> 
> It looks like err-code from pctl->devdata->spec_pull_set cannot be
> used directly to judge its pin type. It's also possible to use it as an
> indication of the real failure during special pin is being set up.
> 
==>Hi sean,

The function seems ok. it is not related to the patch. We will think
about your comment. If there is better idea to modify the code flow. We
will change it in another patch.

Thanks.
> > > > 
> > > > 
> > > > if (pctl->devdata->spec_pull_set) {
> > > > 	+ if (!enable)
> > > > 	+ 	arg = MTK_PUPD_SET_R1R0_00;
> > > > 
> > > > 	ret = pctl->devdata->spec_pull_set(mtk_get_regmap(pctl, pin),
> > > > 		pin, pctl->devdata->port_align, isup, arg);
> > > > 
> > > > 
> > > > Also, it's better to add more comments to such kind of special path for
> > > > allowing future SoCs to follow and extend more easily.
> > > 
> > > ==> Thanks for your suggestion very much. I will add more comments here.
> > > > 
> > > > >  		if (!ret)
> > > > >  			return 0;
> > > > >  	}
> > > > 
> > > > 
> > > 
> > 
> > 
> 
> 

WARNING: multiple messages have this Message-ID (diff)
From: Zhiyong Tao <zhiyong.tao@mediatek.com>
To: Sean Wang <sean.wang@mediatek.com>
Cc: <robh+dt@kernel.org>, <linus.walleij@linaro.org>,
	<mark.rutland@arm.com>, <matthias.bgg@gmail.com>,
	<devicetree@vger.kernel.org>, <hongkun.cao@mediatek.com>,
	<srv_heupstream@mediatek.com>, <linux-gpio@vger.kernel.org>,
	<biao.huang@mediatek.com>, <erin.lo@mediatek.com>,
	<liguo.zhang@mediatek.com>, <linux-kernel@vger.kernel.org>,
	<hongzhou.yang@mediatek.com>,
	<linux-mediatek@lists.infradead.org>, <yingjoe.chen@mediatek.com>,
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v2 4/4] pintcrl: support bias-disable of generic and special pins simultaneously
Date: Mon, 5 Mar 2018 09:23:08 +0800	[thread overview]
Message-ID: <1520212988.23198.22.camel@mhfsdcap03> (raw)
In-Reply-To: <1519890183.8089.114.camel@mtkswgap22>

On Thu, 2018-03-01 at 15:43 +0800, Sean Wang wrote:
> On Thu, 2018-03-01 at 11:47 +0800, Zhiyong Tao wrote:
> > On Wed, 2018-02-28 at 15:49 +0800, Zhiyong Tao wrote:
> > > On Wed, 2018-02-28 at 15:33 +0800, Sean Wang wrote:
> > > > On Mon, 2018-02-26 at 16:34 +0800, Zhiyong Tao wrote:
> > > > > For generic pins, parameter "arg" is 0 or 1.
> > > > > For special pins, bias-disable is set by R0R1,
> > > > > so we need transmited "00" to set bias-disable
> > > > > When we set "bias-disable" as high-z property,
> > > > > the parameter should be "MTK_PUPD_SET_R1R0_00".
> > > > > 
> > > > > Signed-off-by: Zhiyong Tao <zhiyong.tao@mediatek.com>
> > > > > ---
> > > > >  drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 13 +++++++++++--
> > > > >  1 file changed, 11 insertions(+), 2 deletions(-)
> > > > > 
> > > > > diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> > > > > index 3cf384f..e88ba04 100644
> > > > > --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> > > > > +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> > > > > @@ -301,8 +301,17 @@ static int mtk_pconf_set_pull_select(struct mtk_pinctrl *pctl,
> > > > >  	 * resistor bit, so we need this special handle.
> > > > >  	 */
> > > > >  	if (pctl->devdata->spec_pull_set) {
> > > > > -		ret = pctl->devdata->spec_pull_set(mtk_get_regmap(pctl, pin),
> > > > > -			pin, pctl->devdata->port_align, isup, arg);
> > > > > +		if (enable) {
> > > > > +			ret = pctl->devdata->spec_pull_set(
> > > > > +				mtk_get_regmap(pctl, pin), pin,
> > > > > +				pctl->devdata->port_align, isup,
> > > > > +				arg);
> > > > > +		} else {
> > > > > +			ret = pctl->devdata->spec_pull_set(
> > > > > +				mtk_get_regmap(pctl, pin), pin,
> > > > > +				pctl->devdata->port_align, isup,
> > > > > +				MTK_PUPD_SET_R1R0_00);
> > > > > +		}
> > > > 
> > > > 
> > > > it looks like you can use as following snippet with reusing original
> > > > logic and less effort on maintaining these common code (?)
> > > ==> Thanks for your suggestion very much. It seems better.
> > > I will change it in v3.
> > 
> > ==>
> >  Hi sean,
> > 
> > we try it in our site. we can't change like this.
> > Because we will check "arg" after setting "arg = MTK_PUPD_SET_R1R0_00;".
> > following snippet which check "arg" value is o or 1. If it not, which
> > will print error. so we can't change like this.
> > /* For generic pull config, default arg value should be 0 or 1. */
> > if (arg != 0 && arg != 1) {
> > 	dev_err(pctl->dev, "invalid pull-up argument %d on pin %d .\n", arg,
> > pin);
> > 	return -EINVAL;
> > }
> > 
> > Thanks.
> 
> why not rewrite it with

==> Hi sean,
Thanks for your comments, we will try to do it. If it is ok, we will
modify it in v3.
> 
> @@ -301,8 +301,10 @@ static int mtk_pconf_set_pull_select(struct
> mtk_pinctrl *pctl,
>          * resistor bit, so we need this special handle.
>          */
>         if (pctl->devdata->spec_pull_set) {
> +               unsigned int r1r0 = enable ? arg : MTK_PUPD_SET_R1R0_00;
> +
>                 ret = pctl->devdata->spec_pull_set(mtk_get_regmap(pctl,
> pin),
> -                       pin, pctl->devdata->port_align, isup, arg);
> +                       pin, pctl->devdata->port_align, isup, r1r0);
>                 if (!ret)
>                         return 0;
>         }
> 
> and also I appeared to find another bug in the original code when I had
> a close look at the code path, but it's not related to the patch: 
> 
> a special pin would still go through the code path to handle
> generic pin when the special pin uses an invalid argument.
> 
> It looks like err-code from pctl->devdata->spec_pull_set cannot be
> used directly to judge its pin type. It's also possible to use it as an
> indication of the real failure during special pin is being set up.
> 
==>Hi sean,

The function seems ok. it is not related to the patch. We will think
about your comment. If there is better idea to modify the code flow. We
will change it in another patch.

Thanks.
> > > > 
> > > > 
> > > > if (pctl->devdata->spec_pull_set) {
> > > > 	+ if (!enable)
> > > > 	+ 	arg = MTK_PUPD_SET_R1R0_00;
> > > > 
> > > > 	ret = pctl->devdata->spec_pull_set(mtk_get_regmap(pctl, pin),
> > > > 		pin, pctl->devdata->port_align, isup, arg);
> > > > 
> > > > 
> > > > Also, it's better to add more comments to such kind of special path for
> > > > allowing future SoCs to follow and extend more easily.
> > > 
> > > ==> Thanks for your suggestion very much. I will add more comments here.
> > > > 
> > > > >  		if (!ret)
> > > > >  			return 0;
> > > > >  	}
> > > > 
> > > > 
> > > 
> > 
> > 
> 
> 

WARNING: multiple messages have this Message-ID (diff)
From: zhiyong.tao@mediatek.com (Zhiyong Tao)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 4/4] pintcrl: support bias-disable of generic and special pins simultaneously
Date: Mon, 5 Mar 2018 09:23:08 +0800	[thread overview]
Message-ID: <1520212988.23198.22.camel@mhfsdcap03> (raw)
In-Reply-To: <1519890183.8089.114.camel@mtkswgap22>

On Thu, 2018-03-01 at 15:43 +0800, Sean Wang wrote:
> On Thu, 2018-03-01 at 11:47 +0800, Zhiyong Tao wrote:
> > On Wed, 2018-02-28 at 15:49 +0800, Zhiyong Tao wrote:
> > > On Wed, 2018-02-28 at 15:33 +0800, Sean Wang wrote:
> > > > On Mon, 2018-02-26 at 16:34 +0800, Zhiyong Tao wrote:
> > > > > For generic pins, parameter "arg" is 0 or 1.
> > > > > For special pins, bias-disable is set by R0R1,
> > > > > so we need transmited "00" to set bias-disable
> > > > > When we set "bias-disable" as high-z property,
> > > > > the parameter should be "MTK_PUPD_SET_R1R0_00".
> > > > > 
> > > > > Signed-off-by: Zhiyong Tao <zhiyong.tao@mediatek.com>
> > > > > ---
> > > > >  drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 13 +++++++++++--
> > > > >  1 file changed, 11 insertions(+), 2 deletions(-)
> > > > > 
> > > > > diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> > > > > index 3cf384f..e88ba04 100644
> > > > > --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> > > > > +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> > > > > @@ -301,8 +301,17 @@ static int mtk_pconf_set_pull_select(struct mtk_pinctrl *pctl,
> > > > >  	 * resistor bit, so we need this special handle.
> > > > >  	 */
> > > > >  	if (pctl->devdata->spec_pull_set) {
> > > > > -		ret = pctl->devdata->spec_pull_set(mtk_get_regmap(pctl, pin),
> > > > > -			pin, pctl->devdata->port_align, isup, arg);
> > > > > +		if (enable) {
> > > > > +			ret = pctl->devdata->spec_pull_set(
> > > > > +				mtk_get_regmap(pctl, pin), pin,
> > > > > +				pctl->devdata->port_align, isup,
> > > > > +				arg);
> > > > > +		} else {
> > > > > +			ret = pctl->devdata->spec_pull_set(
> > > > > +				mtk_get_regmap(pctl, pin), pin,
> > > > > +				pctl->devdata->port_align, isup,
> > > > > +				MTK_PUPD_SET_R1R0_00);
> > > > > +		}
> > > > 
> > > > 
> > > > it looks like you can use as following snippet with reusing original
> > > > logic and less effort on maintaining these common code (?)
> > > ==> Thanks for your suggestion very much. It seems better.
> > > I will change it in v3.
> > 
> > ==>
> >  Hi sean,
> > 
> > we try it in our site. we can't change like this.
> > Because we will check "arg" after setting "arg = MTK_PUPD_SET_R1R0_00;".
> > following snippet which check "arg" value is o or 1. If it not, which
> > will print error. so we can't change like this.
> > /* For generic pull config, default arg value should be 0 or 1. */
> > if (arg != 0 && arg != 1) {
> > 	dev_err(pctl->dev, "invalid pull-up argument %d on pin %d .\n", arg,
> > pin);
> > 	return -EINVAL;
> > }
> > 
> > Thanks.
> 
> why not rewrite it with

==> Hi sean,
Thanks for your comments, we will try to do it. If it is ok, we will
modify it in v3.
> 
> @@ -301,8 +301,10 @@ static int mtk_pconf_set_pull_select(struct
> mtk_pinctrl *pctl,
>          * resistor bit, so we need this special handle.
>          */
>         if (pctl->devdata->spec_pull_set) {
> +               unsigned int r1r0 = enable ? arg : MTK_PUPD_SET_R1R0_00;
> +
>                 ret = pctl->devdata->spec_pull_set(mtk_get_regmap(pctl,
> pin),
> -                       pin, pctl->devdata->port_align, isup, arg);
> +                       pin, pctl->devdata->port_align, isup, r1r0);
>                 if (!ret)
>                         return 0;
>         }
> 
> and also I appeared to find another bug in the original code when I had
> a close look at the code path, but it's not related to the patch: 
> 
> a special pin would still go through the code path to handle
> generic pin when the special pin uses an invalid argument.
> 
> It looks like err-code from pctl->devdata->spec_pull_set cannot be
> used directly to judge its pin type. It's also possible to use it as an
> indication of the real failure during special pin is being set up.
> 
==>Hi sean,

The function seems ok. it is not related to the patch. We will think
about your comment. If there is better idea to modify the code flow. We
will change it in another patch.

Thanks.
> > > > 
> > > > 
> > > > if (pctl->devdata->spec_pull_set) {
> > > > 	+ if (!enable)
> > > > 	+ 	arg = MTK_PUPD_SET_R1R0_00;
> > > > 
> > > > 	ret = pctl->devdata->spec_pull_set(mtk_get_regmap(pctl, pin),
> > > > 		pin, pctl->devdata->port_align, isup, arg);
> > > > 
> > > > 
> > > > Also, it's better to add more comments to such kind of special path for
> > > > allowing future SoCs to follow and extend more easily.
> > > 
> > > ==> Thanks for your suggestion very much. I will add more comments here.
> > > > 
> > > > >  		if (!ret)
> > > > >  			return 0;
> > > > >  	}
> > > > 
> > > > 
> > > 
> > 
> > 
> 
> 

  reply	other threads:[~2018-03-05  1:23 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-26  8:33 [PATCH v2 0/4] PINCTRL: Mediatek pinctrl driver for mt2712 Zhiyong Tao
2018-02-26  8:33 ` Zhiyong Tao
2018-02-26  8:33 ` Zhiyong Tao
2018-02-26  8:33 ` [PATCH v2 1/4] arm64: dts: mt2712: add pintcrl file Zhiyong Tao
2018-02-26  8:33   ` Zhiyong Tao
2018-02-26  8:33   ` Zhiyong Tao
2018-02-28  6:42   ` Sean Wang
2018-02-28  6:42     ` Sean Wang
2018-02-28  6:42     ` Sean Wang
2018-02-28  7:42     ` Zhiyong Tao
2018-02-28  7:42       ` Zhiyong Tao
2018-02-28  7:42       ` Zhiyong Tao
2018-02-26  8:34 ` [PATCH v2 2/4] arm64: dts: mt2712: add pintcrl device node Zhiyong Tao
2018-02-26  8:34   ` Zhiyong Tao
2018-02-26  8:34   ` Zhiyong Tao
2018-02-26  8:34 ` [PATCH v2 3/4] pinctrl: add mt2712 pinctrl driver Zhiyong Tao
2018-02-26  8:34   ` Zhiyong Tao
2018-02-26  8:34   ` Zhiyong Tao
2018-02-28  7:14   ` Sean Wang
2018-02-28  7:14     ` Sean Wang
2018-02-28  7:14     ` Sean Wang
2018-02-28  7:46     ` Zhiyong Tao
2018-02-28  7:46       ` Zhiyong Tao
2018-02-28  7:46       ` Zhiyong Tao
2018-02-26  8:34 ` [PATCH v2 4/4] pintcrl: support bias-disable of generic and special pins simultaneously Zhiyong Tao
2018-02-26  8:34   ` Zhiyong Tao
2018-02-26  8:34   ` Zhiyong Tao
     [not found]   ` <1519634042-12063-5-git-send-email-zhiyong.tao-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
2018-02-28  7:33     ` Sean Wang
2018-02-28  7:33       ` Sean Wang
2018-02-28  7:33       ` Sean Wang
2018-02-28  7:49       ` Zhiyong Tao
2018-02-28  7:49         ` Zhiyong Tao
2018-02-28  7:49         ` Zhiyong Tao
2018-03-01  3:47         ` Zhiyong Tao
2018-03-01  3:47           ` Zhiyong Tao
2018-03-01  3:47           ` Zhiyong Tao
2018-03-01  7:43           ` Sean Wang
2018-03-01  7:43             ` Sean Wang
2018-03-01  7:43             ` Sean Wang
2018-03-05  1:23             ` Zhiyong Tao [this message]
2018-03-05  1:23               ` Zhiyong Tao
2018-03-05  1:23               ` Zhiyong Tao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1520212988.23198.22.camel@mhfsdcap03 \
    --to=zhiyong.tao@mediatek.com \
    --cc=biao.huang@mediatek.com \
    --cc=devicetree@vger.kernel.org \
    --cc=erin.lo@mediatek.com \
    --cc=hongkun.cao@mediatek.com \
    --cc=hongzhou.yang@mediatek.com \
    --cc=liguo.zhang@mediatek.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=matthias.bgg@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=sean.wang@mediatek.com \
    --cc=srv_heupstream@mediatek.com \
    --cc=yingjoe.chen@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.