All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bin Liu <b-liu@ti.com>
To: Felipe Balbi <balbi@kernel.org>
Cc: Roger Quadros <rogerq@ti.com>, <linux-usb@vger.kernel.org>
Subject: Re: [PATCH] usb: dwc3: turn off VBUS when leaving host mode
Date: Mon, 9 Dec 2019 11:15:22 -0600	[thread overview]
Message-ID: <20191209171522.GA26131@uda0271908> (raw)
In-Reply-To: <87r21ncgy1.fsf@gmail.com>

Hi Felipe,

On Mon, Dec 02, 2019 at 09:41:42AM +0200, Felipe Balbi wrote:
> 
> Hi,
> 
> Roger Quadros <rogerq@ti.com> writes:
> > On 18/11/2019 09:07, Felipe Balbi wrote:
> >> Hi,
> >> 
> >> Bin Liu <b-liu@ti.com> writes:
> >> 
> >>> VBUS should be turned off when leaving the host mode.
> >>> Set GCTL_PRTCAP to device mode in teardown to de-assert DRVVBUS pin to
> >>> turn off VBUS power.
> >>>
> >>> Fixes: 5f94adfeed97 ("usb: dwc3: core: refactor mode initialization to its own function")
> >>> Signed-off-by: Bin Liu <b-liu@ti.com>
> >>> ---
> >>>   drivers/usb/dwc3/core.c | 1 +
> >>>   1 file changed, 1 insertion(+)
> >>>
> >>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> >>> index 97d6ae3c4df2..76ac9cd54e64 100644
> >>> --- a/drivers/usb/dwc3/core.c
> >>> +++ b/drivers/usb/dwc3/core.c
> >>> @@ -1201,6 +1201,7 @@ static void dwc3_core_exit_mode(struct dwc3 *dwc)
> >>>   		break;
> >>>   	case USB_DR_MODE_HOST:
> >>>   		dwc3_host_exit(dwc);
> >>> +		dwc3_set_prtcap(dwc, DWC3_GCTL_PRTCAP_DEVICE);
> >> 
> >> seems like this should be done as part of dwc3_host_exit()
> >> 
> >
> > That wouldn't work well with OTG case as dwc3_host_exit(dwc) is
> > called when switching roles and we don't want PRTCAP
> > to change from DWC3_GCTL_PRTCAP_OTG.
> 
> if (port != OTG)
>   set_prtcap(DEVICE)

During init, the PRTCAP is set in dwc3_core_init_mode() besides
dwc3_{host,gadget,drd}_init(). So for tearing down setting it in
dwc3_core_exit_mode() would make the code logic symmetric and easy to
understand.

Also it turns out that setting PRTCAP is required for OTG mode too to
de-assert DRVVBUS. If left GCTL[PRTCAP] to OTG, grounding the ID pin
would make the controller to assert DRVVBUS without any software
involved. So the fix should be the following. Please let me know you
comments.

-Bin.

-----------8<------------
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 97d6ae3c4df2..cede7a8e3605 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -1209,6 +1209,9 @@ static void dwc3_core_exit_mode(struct dwc3 *dwc)
                /* do nothing */
                break;
        }
+
+       /* de-assert DRVVBUS for HOST and OTG mode */
+       dwc3_set_prtcap(dwc, DWC3_GCTL_PRTCAP_DEVICE);
 }

 static void dwc3_get_properties(struct dwc3 *dwc)

> 
> -- 
> balbi



  reply	other threads:[~2019-12-09 17:15 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-13 14:15 [PATCH] usb: dwc3: turn off VBUS when leaving host mode Bin Liu
2019-11-14  8:48 ` Roger Quadros
2019-11-14 14:16   ` Bin Liu
2019-11-18  7:07 ` Felipe Balbi
2019-11-18  9:51   ` Roger Quadros
2019-12-02  7:41     ` Felipe Balbi
2019-12-09 17:15       ` Bin Liu [this message]
2019-12-10 11:50         ` Felipe Balbi
2019-12-10 13:48           ` Bin Liu
2019-12-11 14:41             ` Felipe Balbi
2019-12-11 16:10               ` [PATCH v2] " Bin Liu

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=20191209171522.GA26131@uda0271908 \
    --to=b-liu@ti.com \
    --cc=balbi@kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --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.