All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] usb: gadget: udc: renesas_usb3: add suspend event support
@ 2019-09-05  9:17 Veeraiyan Chidambaram
  2019-09-05 11:07 ` Yoshihiro Shimoda
  0 siblings, 1 reply; 5+ messages in thread
From: Veeraiyan Chidambaram @ 2019-09-05  9:17 UTC (permalink / raw)
  To: Felipe Balbi, Greg Kroah-Hartman, Geert Uytterhoeven,
	Yoshihiro Shimoda, Linux-Renesas
  Cc: linux-usb, Andrew Gabbasov, Eugeniu Rosca, external.veeraiyan.c,
	Veeraiyan Chidambaram

From: Veeraiyan Chidambaram <veeraiyan.chidambaram@in.bosch.com>

In R-Car Gen3 USB 3.0 Function, if host is detached an interrupt
will be generated and Suspended state bit is set in interrupt status
register. Interrupt handler will call driver->suspend(composite_suspend)
if suspended state bit is set. composite_suspend will call
ffs_func_suspend which will post FUNCTIONFS_SUSPEND and will be consumed
by user space application via /dev/ep0.

To be able to detect the host detach, USB_INT_1_B2_SPND to cover the
Suspended bit of the B2_SPND_OUT[9] from the USB Status Register
(USB_STA) register and perform appropriate action in the
usb3_irq_epc_int_1 function.

Without this commit, disconnection of the phone from R-Car H3 ES2.0
Salvator-X CN11 port is not recognized and reverse role switch does
not happen. If phone is connected again it does not enumerate.

With this commit, disconnection will be recognized and reverse role
switch will happen by a user space application. If phone is connected
again it will enumerate properly and will become visible in the
output of 'lsusb'.

Signed-off-by: Veeraiyan Chidambaram <veeraiyan.chidambaram@in.bosch.com>
---
 drivers/usb/gadget/udc/renesas_usb3.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c
index eaa3339b30a2..39dbd644c770 100644
--- a/drivers/usb/gadget/udc/renesas_usb3.c
+++ b/drivers/usb/gadget/udc/renesas_usb3.c
@@ -767,6 +767,18 @@ static void usb3_irq_epc_int_1_resume(struct renesas_usb3 *usb3)
 	usb3_transition_to_default_state(usb3, false);
 }
 
+static void usb3_irq_epc_int_1_suspend(struct renesas_usb3 *usb3)
+{
+	usb3_disable_irq_1(usb3, USB_INT_1_B2_SPND);
+
+	if (usb3->gadget.speed != USB_SPEED_UNKNOWN &&
+	    usb3->gadget.state != USB_STATE_NOTATTACHED) {
+		if (usb3->driver && usb3->driver->suspend)
+			usb3->driver->suspend(&usb3->gadget);
+		usb_gadget_set_state(&usb3->gadget, USB_STATE_SUSPENDED);
+	}
+}
+
 static void usb3_irq_epc_int_1_disable(struct renesas_usb3 *usb3)
 {
 	usb3_stop_usb3_connection(usb3);
@@ -852,6 +864,9 @@ static void usb3_irq_epc_int_1(struct renesas_usb3 *usb3, u32 int_sta_1)
 	if (int_sta_1 & USB_INT_1_B2_RSUM)
 		usb3_irq_epc_int_1_resume(usb3);
 
+	if (int_sta_1 & USB_INT_1_B2_SPND)
+		usb3_irq_epc_int_1_suspend(usb3);
+
 	if (int_sta_1 & USB_INT_1_SPEED)
 		usb3_irq_epc_int_1_speed(usb3);
 
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* RE: [PATCH v3] usb: gadget: udc: renesas_usb3: add suspend event support
  2019-09-05  9:17 [PATCH v3] usb: gadget: udc: renesas_usb3: add suspend event support Veeraiyan Chidambaram
@ 2019-09-05 11:07 ` Yoshihiro Shimoda
  2019-09-05 19:07   ` Eugeniu Rosca
  0 siblings, 1 reply; 5+ messages in thread
From: Yoshihiro Shimoda @ 2019-09-05 11:07 UTC (permalink / raw)
  To: Veeraiyan Chidambaram, Felipe Balbi, Greg Kroah-Hartman,
	Geert Uytterhoeven, Linux-Renesas
  Cc: linux-usb, Andrew Gabbasov, REE erosca@DE.ADIT-JV.COM,
	Veeraiyan Chidambaram

Hi Veeraiyan,

> From: Veeraiyan Chidambaram, Sent: Thursday, September 5, 2019 6:18 PM
> 
> In R-Car Gen3 USB 3.0 Function, if host is detached an interrupt
> will be generated and Suspended state bit is set in interrupt status
> register. Interrupt handler will call driver->suspend(composite_suspend)
> if suspended state bit is set. composite_suspend will call
> ffs_func_suspend which will post FUNCTIONFS_SUSPEND and will be consumed
> by user space application via /dev/ep0.
> 
> To be able to detect the host detach, USB_INT_1_B2_SPND to cover the
> Suspended bit of the B2_SPND_OUT[9] from the USB Status Register
> (USB_STA) register and perform appropriate action in the
> usb3_irq_epc_int_1 function.
> 
> Without this commit, disconnection of the phone from R-Car H3 ES2.0
> Salvator-X CN11 port is not recognized and reverse role switch does
> not happen. If phone is connected again it does not enumerate.
> 
> With this commit, disconnection will be recognized and reverse role
> switch will happen by a user space application. If phone is connected
> again it will enumerate properly and will become visible in the
> output of 'lsusb'.
> 
> Signed-off-by: Veeraiyan Chidambaram <veeraiyan.chidambaram@in.bosch.com>

Thank you for the patch!

Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>

And, I tested this patch on my environment [1] and works correctly. So,

Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>

[1]
 - Two R-Car Gen3 boards.
 -- with minor customized this driver for switching b_device role.
 - Connected a usb cable to each CN11.
 -- Use g_mass_storage.ko.

Best regards,
Yoshihiro Shimoda


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] usb: gadget: udc: renesas_usb3: add suspend event support
  2019-09-05 11:07 ` Yoshihiro Shimoda
@ 2019-09-05 19:07   ` Eugeniu Rosca
  2019-09-06  4:41     ` Yoshihiro Shimoda
  0 siblings, 1 reply; 5+ messages in thread
From: Eugeniu Rosca @ 2019-09-05 19:07 UTC (permalink / raw)
  To: Yoshihiro Shimoda
  Cc: Veeraiyan Chidambaram, Felipe Balbi, Greg Kroah-Hartman,
	Geert Uytterhoeven, Linux-Renesas, linux-usb, Andrew Gabbasov,
	Veeraiyan Chidambaram, Eugeniu Rosca, Eugeniu Rosca

Hello Shimoda-san,

On Thu, Sep 05, 2019 at 11:07:02AM +0000, Yoshihiro Shimoda wrote:
> Hi Veeraiyan,
> 
> > From: Veeraiyan Chidambaram, Sent: Thursday, September 5, 2019 6:18 PM
> > 
> > In R-Car Gen3 USB 3.0 Function, if host is detached an interrupt
> > will be generated and Suspended state bit is set in interrupt status
> > register. Interrupt handler will call driver->suspend(composite_suspend)
> > if suspended state bit is set. composite_suspend will call
> > ffs_func_suspend which will post FUNCTIONFS_SUSPEND and will be consumed
> > by user space application via /dev/ep0.
> > 
> > To be able to detect the host detach, USB_INT_1_B2_SPND to cover the
> > Suspended bit of the B2_SPND_OUT[9] from the USB Status Register
> > (USB_STA) register and perform appropriate action in the
> > usb3_irq_epc_int_1 function.
> > 
> > Without this commit, disconnection of the phone from R-Car H3 ES2.0
> > Salvator-X CN11 port is not recognized and reverse role switch does
> > not happen. If phone is connected again it does not enumerate.
> > 
> > With this commit, disconnection will be recognized and reverse role
> > switch will happen by a user space application. If phone is connected
> > again it will enumerate properly and will become visible in the
> > output of 'lsusb'.
> > 
> > Signed-off-by: Veeraiyan Chidambaram <veeraiyan.chidambaram@in.bosch.com>
> 
> Thank you for the patch!
> 
> Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> 
> And, I tested this patch on my environment [1] and works correctly. So,
> 
> Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>

I guess there are strong similarities between this patch and [3].
Would you like to pick [1-3], as they still apply cleanly to vanilla?

[1] https://patchwork.kernel.org/patch/10581479/
    ("[1/3] usb: renesas_usbhs: simplify usbhs_status_get_device_state()")
[2] https://patchwork.kernel.org/patch/10581485/
    ("[2/3] usb: renesas_usbhs: enable DVSE interrupt")
[3] https://patchwork.kernel.org/patch/10581489/
    ("usb: renesas_usbhs: add suspend event support in gadget mode")

PS: Apologize for long silence in [3].

-- 
Best Regards,
Eugeniu.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: [PATCH v3] usb: gadget: udc: renesas_usb3: add suspend event support
  2019-09-05 19:07   ` Eugeniu Rosca
@ 2019-09-06  4:41     ` Yoshihiro Shimoda
  2019-09-06  8:50       ` Eugeniu Rosca
  0 siblings, 1 reply; 5+ messages in thread
From: Yoshihiro Shimoda @ 2019-09-06  4:41 UTC (permalink / raw)
  To: REE erosca@DE.ADIT-JV.COM
  Cc: Veeraiyan Chidambaram, Felipe Balbi, Greg Kroah-Hartman,
	Geert Uytterhoeven, Linux-Renesas, linux-usb, Andrew Gabbasov,
	Veeraiyan Chidambaram, REE erosca@DE.ADIT-JV.COM, Eugeniu Rosca

Hello Eugeniu-san,

> From: Eugeniu Rosca, Sent: Friday, September 6, 2019 4:07 AM
<snip>
> 
> I guess there are strong similarities between this patch and [3].
> Would you like to pick [1-3], as they still apply cleanly to vanilla?

Thank you for your comment! I completely forgot that you had submitted
these [1-3] patches though, I'm thinking renesas_usbhs driver also should
have this similar feature. I checked the [3] again and the commit log
and the conditions should be fixed like this patch. Would you submit
v2 patch series for renesas_usbhs driver? Or, May I submit it?
Anything is OK to me.

> [1] https://patchwork.kernel.org/patch/10581479/
>     ("[1/3] usb: renesas_usbhs: simplify usbhs_status_get_device_state()")
> [2] https://patchwork.kernel.org/patch/10581485/
>     ("[2/3] usb: renesas_usbhs: enable DVSE interrupt")
> [3] https://patchwork.kernel.org/patch/10581489/
>     ("usb: renesas_usbhs: add suspend event support in gadget mode")
> 
> PS: Apologize for long silence in [3].

No worries!

Best regards,
Yoshihiro Shimoda


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] usb: gadget: udc: renesas_usb3: add suspend event support
  2019-09-06  4:41     ` Yoshihiro Shimoda
@ 2019-09-06  8:50       ` Eugeniu Rosca
  0 siblings, 0 replies; 5+ messages in thread
From: Eugeniu Rosca @ 2019-09-06  8:50 UTC (permalink / raw)
  To: Yoshihiro Shimoda
  Cc: Eugeniu Rosca, Veeraiyan Chidambaram, Felipe Balbi,
	Greg Kroah-Hartman, Geert Uytterhoeven, Linux-Renesas, linux-usb,
	Andrew Gabbasov, Veeraiyan Chidambaram, Eugeniu Rosca

Hi Shimoda-san,

On Fri, Sep 06, 2019 at 04:41:50AM +0000, Yoshihiro Shimoda wrote:
> Hello Eugeniu-san,
> 
> > From: Eugeniu Rosca, Sent: Friday, September 6, 2019 4:07 AM
> <snip>
> > 
> > I guess there are strong similarities between this patch and [3].
> > Would you like to pick [1-3], as they still apply cleanly to vanilla?
> 
> Thank you for your comment! I completely forgot that you had submitted
> these [1-3] patches though, I'm thinking renesas_usbhs driver also should
> have this similar feature. I checked the [3] again and the commit log
> and the conditions should be fixed like this patch. Would you submit
> v2 patch series for renesas_usbhs driver? Or, May I submit it?
> Anything is OK to me.

Thank your for the prompt reply. It is very appreciated.
We'll make sure to submit the v2 of [1-3], as per your request.

> 
> > [1] https://patchwork.kernel.org/patch/10581479/
> >     ("[1/3] usb: renesas_usbhs: simplify usbhs_status_get_device_state()")
> > [2] https://patchwork.kernel.org/patch/10581485/
> >     ("[2/3] usb: renesas_usbhs: enable DVSE interrupt")
> > [3] https://patchwork.kernel.org/patch/10581489/
> >     ("usb: renesas_usbhs: add suspend event support in gadget mode")

-- 
Best Regards,
Eugeniu.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-09-06  8:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-05  9:17 [PATCH v3] usb: gadget: udc: renesas_usb3: add suspend event support Veeraiyan Chidambaram
2019-09-05 11:07 ` Yoshihiro Shimoda
2019-09-05 19:07   ` Eugeniu Rosca
2019-09-06  4:41     ` Yoshihiro Shimoda
2019-09-06  8:50       ` Eugeniu Rosca

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.