linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Peter Chen <hzpeterchen-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Stephen Boyd <stephen.boyd-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Felipe Balbi <balbi-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
	Neil Armstrong
	<narmstrong-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Bjorn Andersson
	<bjorn.andersson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Peter Chen <peter.chen-3arQi8VN3Tc@public.gmane.org>,
	Greg Kroah-Hartman
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	Andy Gross <andy.gross-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH v5 11/23] usb: chipidea: Emulate OTGSC interrupt enable path
Date: Thu, 20 Oct 2016 18:10:18 +0800	[thread overview]
Message-ID: <20161020101017.GA32001@b29397-desktop> (raw)
In-Reply-To: <147694652997.28344.1048935134595924905@sboyd-linaro>

On Wed, Oct 19, 2016 at 11:55:29PM -0700, Stephen Boyd wrote:
> Quoting Peter Chen (2016-10-19 01:02:11)
> > On Tue, Oct 18, 2016 at 06:53:07PM -0700, Stephen Boyd wrote:
> > > If you're asking if I've made modifications to extcon-usb-gpio, then the
> > > answer is no. The branch on linaro.org git server from the cover-letter
> > > is the branch I've used to test this with. This patch is specifically to
> > > fix issues with that design on the db410c board that has only one pin
> > > for ID and vbus detection. It's the schematic that we've discussed in
> > > another thread.
> > > 
> > > extcon-usb-gpio sends two extcon events, EXTCON_USB_HOST (for the id
> > > pin) and EXTCON_USB (for the vbus). So afaik it does support vbus
> > > events.
> > > 
> > 
> > Hmm, in fact, your ID event is the same with vbus event, you take
> > external vbus event as ID event for extcon-usb-gpio handling. Yes,
> > it can work due to it sends EXTCON_USB_HOST event first.
> > 
> > Where you change the USB_SW_SEL_PM pin?
> 
> Currently that is done with the mux driver I sent based on the extcon
> event. We don't know if that's before or after the controller handles
> the extcon event though, so the pin should probably be changed from the
> chipidea driver instead to be more explicit. Why do you ask though?

I was just curious how you handle it, now I am clear. From my point,
the suitable way may be: mux driver + user app (echo role through
debugfs). The extcon-usb-gpio is not necessary, since you have already
known role at mux driver.

The current kernel has no framework to handle dual-role switch at kernel
space.

> > At some situations, the vbus may already be there before starting
> > gadget. So we need to check vbus event after switch to gadget in
> > order to handle missing vbus event. The typical use cases are plugging
> > vbus cable before driver load or the vbus has already been there
> > after stopping host but before starting gadget.
> > 
> > Signed-off-by: Peter Chen <peter.chen-3arQi8VN3Tc@public.gmane.org>
> 
> Yes this should work. Light testing doesn't show any problems so far.
>  
> > ---
> >  drivers/usb/chipidea/core.c |  4 ----
> >  drivers/usb/chipidea/otg.c  | 10 ++++++----
> >  drivers/usb/chipidea/udc.c  |  2 ++
> >  3 files changed, 8 insertions(+), 8 deletions(-)
> > 
> > diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
> > index b814d91..a7d2c68 100644
> > --- a/drivers/usb/chipidea/core.c
> > +++ b/drivers/usb/chipidea/core.c
> > @@ -992,10 +992,6 @@ static int ci_hdrc_probe(struct platform_device *pdev)
> >         }
> >  
> >         if (!ci_otg_is_fsm_mode(ci)) {
> > -               /* only update vbus status for peripheral */
> > -               if (ci->role == CI_ROLE_GADGET)
> > -                       ci_handle_vbus_change(ci);
> > -
> >                 ret = ci_role_start(ci, ci->role);
> >                 if (ret) {
> >                         dev_err(dev, "can't start %s role\n",
> > diff --git a/drivers/usb/chipidea/otg.c b/drivers/usb/chipidea/otg.c
> > index 695f3fe..99c0709 100644
> > --- a/drivers/usb/chipidea/otg.c
> > +++ b/drivers/usb/chipidea/otg.c
> > @@ -134,9 +134,9 @@ void ci_handle_vbus_change(struct ci_hdrc *ci)
> >         if (!ci->is_otg)
> >                 return;
> >  
> > -       if (hw_read_otgsc(ci, OTGSC_BSV))
> > +       if (hw_read_otgsc(ci, OTGSC_BSV) && !ci->vbus_active)
> >                 usb_gadget_vbus_connect(&ci->gadget);
> > -       else
> > +       else if (!hw_read_otgsc(ci, OTGSC_BSV) && ci->vbus_active)
> >                 usb_gadget_vbus_disconnect(&ci->gadget);
> >  }
> >  
> > @@ -175,10 +175,12 @@ static void ci_handle_id_switch(struct ci_hdrc *ci)
> >  
> >                 ci_role_stop(ci);
> >  
> > -               if (role == CI_ROLE_GADGET)
> > +               if (role == CI_ROLE_GADGET &&
> > +                               IS_ERR(ci->platdata->vbus_extcon.edev))
> >                         /*
> >                          * wait vbus lower than OTGSC_BSV before connecting
> > -                        * to host
> > +                        * to host. And if vbus's status is an external
> > +                        * connector, it doesn't need to wait here.
> 
> because OTGSC_BSV will toggle based on the extcon state and not when the
> phy connects to the host? It would be good to explain why it's not
> needed instead of just repeating what the code is doing.
> 

Thanks, will change like below

"
If connecting status is from an external connector instead of register,
we don't need to care vbus on the board, since it will not affect external
connector status.
"

> >                          */
> >                         hw_wait_vbus_lower_bsv(ci);
> >  
> > diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c
> > index 001c2fa..184ffba 100644
> > --- a/drivers/usb/chipidea/udc.c
> > +++ b/drivers/usb/chipidea/udc.c
> > @@ -1963,6 +1963,8 @@ static int udc_id_switch_for_device(struct ci_hdrc *ci)
> >                 /* Clear and enable BSV irq */
> >                 hw_write_otgsc(ci, OTGSC_BSVIS | OTGSC_BSVIE,
> >                                         OTGSC_BSVIS | OTGSC_BSVIE);
> > +       /* vbus change may has already been occurred */
> 
> "vbus change may have already occurred"?

Yes, will change.

-- 

Best Regards,
Peter Chen
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2016-10-20 10:10 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-18  1:56 [PATCH v5 00/23] Support qcom's HSIC USB and rewrite USB2 HS support Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 03/23] usb: ulpi: Support device discovery via DT Stephen Boyd
2016-10-18 16:44   ` Rob Herring
2016-11-11 11:02   ` Heikki Krogerus
2016-10-18  1:56 ` [PATCH v5 04/23] usb: chipidea: Only read/write OTGSC from one place Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 05/23] usb: chipidea: Handle extcon events properly Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 06/23] usb: chipidea: Add platform flag for wrapper phy management Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 07/23] usb: chipidea: Notify events when switching host mode Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 08/23] usb: chipidea: Remove locking in ci_udc_start() Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 09/23] usb: chipidea: Add support for ULPI PHY bus Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 10/23] usb: chipidea: Consolidate extcon notifiers Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 11/23] usb: chipidea: Emulate OTGSC interrupt enable path Stephen Boyd
2016-10-19  1:15   ` Peter Chen
2016-10-19  1:53     ` Stephen Boyd
2016-10-19  8:02       ` Peter Chen
2016-10-20  6:55         ` Stephen Boyd
2016-10-20 10:10           ` Peter Chen [this message]
2016-10-20 20:36             ` Stephen Boyd
2016-10-21  2:14               ` Peter Chen
2016-10-21 17:57                 ` Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 12/23] usb: chipidea: msm: Mark device as runtime pm active Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 13/23] usb: chipidea: msm: Rely on core to override AHBBURST Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 14/23] usb: chipidea: msm: Use hw_write_id_reg() instead of writel Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 15/23] usb: chipidea: msm: Add proper clk and reset support Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 16/23] usb: chipidea: msm: Mux over secondary phy at the right time Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 17/23] usb: chipidea: msm: Restore wrapper settings after reset Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 18/23] usb: chipidea: msm: Make platform data driver local instead of global Stephen Boyd
     [not found] ` <20161018015636.11701-1-stephen.boyd-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-10-18  1:56   ` [PATCH v5 01/23] of: device: Support loading a module with OF based modalias Stephen Boyd
2016-10-18  1:56   ` [PATCH v5 02/23] of: device: Export of_device_{get_modalias,uvent_modalias} to modules Stephen Boyd
     [not found]     ` <20161018015636.11701-3-stephen.boyd-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-10-18  5:20       ` [PATCH v5 02/23] of: device: Export of_device_{get_modalias, uvent_modalias} " Chen-Yu Tsai
2016-10-24 12:19     ` Chen-Yu Tsai
2016-10-24 19:48       ` Stephen Boyd
2016-10-25  1:16         ` Peter Chen
2016-11-04 20:51           ` Stephen Boyd
2016-11-07  1:29             ` Peter Chen
2016-11-07  1:56               ` Chen-Yu Tsai
     [not found]                 ` <CAGb2v66C15fU1b2+xNDV8Fv2kmmKXyUknA8=9wXztUcs8CNKLg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-11-10 21:42                   ` Rob Herring
2016-11-11  3:01                     ` Chen-Yu Tsai
2016-11-11  4:25                       ` Javier Martinez Canillas
2016-10-18  1:56   ` [PATCH v5 19/23] usb: chipidea: msm: Add reset controller for PHY POR bit Stephen Boyd
2016-10-18  1:56   ` [PATCH v5 20/23] usb: chipidea: msm: Handle phy power states Stephen Boyd
2016-10-18  1:56   ` [PATCH v5 23/23] phy: Add support for Qualcomm's USB HS phy Stephen Boyd
2016-10-18 16:46     ` Rob Herring
2016-10-18 16:47     ` Rob Herring
     [not found]     ` <20161018015636.11701-24-stephen.boyd-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-10-20 23:20       ` Stephen Boyd
2016-10-21  2:20         ` Peter Chen
2016-10-21 19:33           ` Stephen Boyd
2016-10-24  2:14             ` Peter Chen
2016-10-18  9:31   ` [PATCH v5 00/23] Support qcom's HSIC USB and rewrite USB2 HS support Peter Chen
2016-10-18 20:51     ` Stephen Boyd
2016-11-11  7:40       ` Peter Chen
2016-11-14 19:35         ` Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 21/23] usb: chipidea: msm: Be silent on probe defer errors Stephen Boyd
2016-10-18  1:56 ` [PATCH v5 22/23] phy: Add support for Qualcomm's USB HSIC phy Stephen Boyd

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=20161020101017.GA32001@b29397-desktop \
    --to=hzpeterchen-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=andy.gross-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=balbi-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=bjorn.andersson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=narmstrong-rdvid1DuHRBWk0Htik3J/w@public.gmane.org \
    --cc=peter.chen-3arQi8VN3Tc@public.gmane.org \
    --cc=stephen.boyd-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).