[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160708092905.GE20485@shlinux2>
Date: Fri, 8 Jul 2016 17:29:05 +0800
From: Peter Chen <hzpeterchen@...il.com>
To: Stephen Boyd <stephen.boyd@...aro.org>
Cc: linux-usb@...r.kernel.org, Felipe Balbi <balbi@...nel.org>,
Arnd Bergmann <arnd@...db.de>,
Neil Armstrong <narmstrong@...libre.com>,
linux-arm-msm@...r.kernel.org, linux-kernel@...r.kernel.org,
Bjorn Andersson <bjorn.andersson@...aro.org>,
Peter Chen <peter.chen@....com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Andy Gross <andy.gross@...aro.org>,
linux-arm-kernel@...ts.infradead.org
Subject: Re: [PATCH v2 07/22] usb: chipidea: Notify events when switching
host mode
On Thu, Jul 07, 2016 at 03:20:58PM -0700, Stephen Boyd wrote:
> The chipidea/udc.c file sends a CI_HDRC_CONTROLLER_RESET_EVENT to
> the wrapper drivers when it calls hw_device_reset(), but that
> function is not called from chipidea/host.c. And the udc.c file
> sends the CI_HDRC_CONTROLLER_STOPPED_EVENT but the host.c file
> doesn't do anything.
>
> The intent of the reset event is to allow the wrapper driver to
> do any wrapper specific things after the reset bit has been set
> in the usb command register. Therefore, add this event hook in
> the host role after we toggle that bit.
>
> Similarly, the intent of the stopped event is to allow the
> wrapper driver to do any wrapper specific things after the device
> is stopped. So when we stop the host role, send the stopped
> event.
>
> Cc: Peter Chen <peter.chen@....com>
> Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
> Signed-off-by: Stephen Boyd <stephen.boyd@...aro.org>
> ---
> drivers/usb/chipidea/host.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
> index 053bac9d983c..a1d8551ca79d 100644
> --- a/drivers/usb/chipidea/host.c
> +++ b/drivers/usb/chipidea/host.c
> @@ -87,6 +87,9 @@ static int ehci_ci_reset(struct usb_hcd *hcd)
> if (ret)
> return ret;
>
> + if (ci->platdata->notify_event)
> + ci->platdata->notify_event(ci, CI_HDRC_CONTROLLER_RESET_EVENT);
> +
> ci_platform_configure(ci);
>
> return ret;
> @@ -184,6 +187,9 @@ static void host_stop(struct ci_hdrc *ci)
> struct usb_hcd *hcd = ci->hcd;
>
> if (hcd) {
> + if (ci->platdata->notify_event)
> + ci->platdata->notify_event(ci,
> + CI_HDRC_CONTROLLER_STOPPED_EVENT);
> usb_remove_hcd(hcd);
> usb_put_hcd(hcd);
> if (ci->platdata->reg_vbus && !ci_otg_is_fsm_mode(ci) &&
Acked-by: Peter Chen <peter.chen@....com>
--
Best Regards,
Peter Chen
Powered by blists - more mailing lists