Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1438971 > unrolled thread

[PATCH v2 07/22] usb: chipidea: Notify events when switching host mode

Started byStephen Boyd <stephen.boyd@linaro.org>
First post2016-07-08 00:30 +0200
Last post2016-07-08 11:50 +0200
Articles 2 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH v2 07/22] usb: chipidea: Notify events when switching host mode Stephen Boyd <stephen.boyd@linaro.org> - 2016-07-08 00:30 +0200
    Re: [PATCH v2 07/22] usb: chipidea: Notify events when switching  host mode Peter Chen <hzpeterchen@gmail.com> - 2016-07-08 11:50 +0200

#1438971 — [PATCH v2 07/22] usb: chipidea: Notify events when switching host mode

FromStephen Boyd <stephen.boyd@linaro.org>
Date2016-07-08 00:30 +0200
Subject[PATCH v2 07/22] usb: chipidea: Notify events when switching host mode
Message-ID<rSpXY-4yB-45@gated-at.bofh.it>
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@nxp.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Stephen Boyd <stephen.boyd@linaro.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) &&
-- 
2.9.0.rc2.8.ga28705d

[toc] | [next] | [standalone]


#1439247 — Re: [PATCH v2 07/22] usb: chipidea: Notify events when switching host mode

FromPeter Chen <hzpeterchen@gmail.com>
Date2016-07-08 11:50 +0200
SubjectRe: [PATCH v2 07/22] usb: chipidea: Notify events when switching host mode
Message-ID<rSAA1-2Xn-9@gated-at.bofh.it>
In reply to#1438971
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@nxp.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Signed-off-by: Stephen Boyd <stephen.boyd@linaro.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@nxp.com>

-- 

Best Regards,
Peter Chen

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web