All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Chen <peter.chen@nxp.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: "balbi@kernel.org" <balbi@kernel.org>,
	"mathias.nyman@intel.com" <mathias.nyman@intel.com>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	dl-linux-imx <linux-imx@nxp.com>,
	"pawell@cadence.com" <pawell@cadence.com>,
	"rogerq@ti.com" <rogerq@ti.com>, Jun Li <jun.li@nxp.com>
Subject: Re: [PATCH v4 1/9] usb: cdns3: introduce cdns3_set_phy_power API
Date: Fri, 3 Jul 2020 07:16:19 +0000	[thread overview]
Message-ID: <20200703071628.GA14348@b29397-desktop> (raw)
In-Reply-To: <20200703070044.GB2220026@kroah.com>

On 20-07-03 09:00:44, Greg KH wrote:
> On Fri, Jul 03, 2020 at 02:26:45PM +0800, Peter Chen wrote:
> > Since we have both USB2 and USB3 PHYs for cdns3 controller, it is
> > better we have a unity API to handle both USB2 and USB3's power, it
> > could simplify code for error handling and further power management
> > implementation.
> > 
> > Reviewed-by: Jun Li <jun.li@nxp.com>
> > Signed-off-by: Peter Chen <peter.chen@nxp.com>
> > ---
> >  drivers/usb/cdns3/core.c | 44 ++++++++++++++++++++++++++--------------
> >  1 file changed, 29 insertions(+), 15 deletions(-)
> > 
> > diff --git a/drivers/usb/cdns3/core.c b/drivers/usb/cdns3/core.c
> > index 19bbb5b7e6b6..bfd09aa98c12 100644
> > --- a/drivers/usb/cdns3/core.c
> > +++ b/drivers/usb/cdns3/core.c
> > @@ -384,6 +384,28 @@ static int cdns3_role_set(struct usb_role_switch *sw, enum usb_role role)
> >  	return ret;
> >  }
> >  
> > +static int cdns3_set_phy_power(struct cdns3 *cdns, bool on)
> 
> Please just make function calls self-describing, instead of having to
> try to remember what a specific flag means.  This isn't as bad as some
> functions, but the general idea remains, this should be 2 functions:
> 	set_phy_power_off()
> 	set_phy_power_on()
> 
> no need for the cdns3_ prefix, it's a static function.
> 
> Then have those two functions call a helper if you really want to, but
> that means that reading where those functions are called is obvious and
> no need to backtrack to where this was declared to determine that the
> second parameter meant on/off and not is_disabled/not_disabled or
> something crazy like that.
> 
> 
> 
> > +{
> > +	int ret = 0;
> > +
> > +	if (on) {
> > +		ret = phy_power_on(cdns->usb2_phy);
> 
> See, phy gets it right.
> 
> > +		if (ret)
> > +			return ret;
> > +
> > +		ret = phy_power_on(cdns->usb3_phy);
> > +		if (ret) {
> > +			phy_power_off(cdns->usb2_phy);
> > +			return ret;
> > +		}
> > +	} else {
> > +		phy_power_off(cdns->usb3_phy);
> > +		phy_power_off(cdns->usb2_phy);
> 
> Ick, even worse, this needs to be 2 separate functions as there is NO
> common code path here at all.
> 

The purpose of this API is adding two PHY (USB2 and USB3) APIs into one
private APIs since two PHYs power operation are always called together
and we will have more than one places to call them.

If you think it is not necessary, and make code not easy to read, I
could skip this patch.

-- 

Thanks,
Peter Chen

  reply	other threads:[~2020-07-03  7:16 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-03  6:26 [PATCH v4 0/9] usb: some PM changes for cdns3 and xhci-plat Peter Chen
2020-07-03  6:26 ` [PATCH v4 1/9] usb: cdns3: introduce cdns3_set_phy_power API Peter Chen
2020-07-03  7:00   ` Greg KH
2020-07-03  7:16     ` Peter Chen [this message]
2020-07-03  7:23       ` Greg KH
2020-07-03  7:31         ` Peter Chen
2020-09-07  7:29     ` Felipe Balbi
2020-07-03  6:26 ` [PATCH v4 2/9] usb: cdns3: add runtime PM support Peter Chen
2020-07-03  6:26 ` [PATCH v4 3/9] usb: cdns3: imx: add glue layer runtime pm implementation Peter Chen
2020-07-05  7:07   ` kernel test robot
2020-07-05  7:07     ` kernel test robot
2020-07-03  6:26 ` [PATCH v4 4/9] usb: host: xhci-plat: add platform data support Peter Chen
2020-07-03  6:26 ` [PATCH v4 5/9] usb: host: xhci-plat: add .suspend_quirk for struct xhci_plat_priv Peter Chen
2020-07-03  6:26 ` [PATCH v4 6/9] usb: host: xhci-plat: delete the unnecessary code Peter Chen
2020-07-03  6:26 ` [PATCH v4 7/9] usb: host: xhci-plat: add priv quirk for skip PHY initialization Peter Chen
2020-07-03  6:26 ` [PATCH v4 8/9] usb: cdns3: host: add .suspend_quirk for xhci-plat.c Peter Chen
2020-07-03  6:26 ` [PATCH v4 9/9] usb: cdns3: host: add xhci_plat_priv quirk XHCI_SKIP_PHY_INIT Peter Chen

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=20200703071628.GA14348@b29397-desktop \
    --to=peter.chen@nxp.com \
    --cc=balbi@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jun.li@nxp.com \
    --cc=linux-imx@nxp.com \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=pawell@cadence.com \
    --cc=rogerq@ti.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.