Skip to contentSkip to conversation

"usb: gadget: pch_udc: Detecting VBUS through GPIO with interrupt" breaks sparc

PATCH Superseded Paul Gortmaker 4 participants 9 messages Mar 2, 2012 – Mar 7, 2012

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

This commit:

---------------
commit 637b78eb31e0b167ed913f1750bb645dfeda38f0

Author: Tomoya MORINAGA <[email protected]>
Date:   Fri Feb 3 16:14:18 2012 +0900

usb: gadget: pch_udc: Detecting VBUS through GPIO with interrupt

Problem:
pch_udc continues operation even if VBUS becomes Low. pch_udc performs D+ pulling up before VBUS becomes High. USB device should be controlled according to VBUS state.

Root cause:
The current pch_udc is not always monitoring VBUS.

Solution:
The change of VBUS is detected using an interrupt of GPIO. If VBUS became Low, pch_udc handles 'disconnect'. After VBUS became High, a pull improves D+, and pch_udc handles 'connect'.

[ [email protected] : make it actually compile ]

---------------

breaks the sparc builds in next:

http://kisskb.ellerman.id.au/kisskb/buildresult/5771890/
http://kisskb.ellerman.id.au/kisskb/buildresult/5771905/

Thanks,
Paul.

#1 lore raw

[Just cc'ing Greg as this commit is in the usb tree]

Quoted 37 lines · On Fri, 2 Mar 2012 17:01:16 -0500 Paul Gortmaker…

This commit:

---------------
commit 637b78eb31e0b167ed913f1750bb645dfeda38f0

Author: Tomoya MORINAGA <[email protected]>
Date:   Fri Feb 3 16:14:18 2012 +0900

usb: gadget: pch_udc: Detecting VBUS through GPIO with interrupt

Problem:
pch_udc continues operation even if VBUS becomes Low. pch_udc performs D+ pulling up before VBUS becomes High. USB device should be controlled according to VBUS state.

Root cause:
The current pch_udc is not always monitoring VBUS.

Solution:
The change of VBUS is detected using an interrupt of GPIO. If VBUS became Low, pch_udc handles 'disconnect'. After VBUS became High, a pull improves D+, and pch_udc handles 'connect'.

[ [email protected] : make it actually compile ]

---------------

breaks the sparc builds in next:

http://kisskb.ellerman.id.au/kisskb/buildresult/5771890/
http://kisskb.ellerman.id.au/kisskb/buildresult/5771905/

Thanks,
Paul.

Signature · 2 lines
Cheers,
Stephen Rothwell                    [email protected]
maintainer
#2 lore raw
Quoted 37 lines · Stephen Rothwell

[Just cc'ing Greg as this commit is in the usb tree]

Quoted 34 lines · On Fri, 2 Mar 2012 17:01:16 -0500 Paul Gortmaker…

This commit:

---------------
commit 637b78eb31e0b167ed913f1750bb645dfeda38f0

Author: Tomoya MORINAGA <[email protected]>
Date:   Fri Feb 3 16:14:18 2012 +0900

usb: gadget: pch_udc: Detecting VBUS through GPIO with interrupt

Problem:
pch_udc continues operation even if VBUS becomes Low. pch_udc performs D+ pulling up before VBUS becomes High. USB device should be controlled according to VBUS state.

Root cause:
The current pch_udc is not always monitoring VBUS.

Solution:
The change of VBUS is detected using an interrupt of GPIO. If VBUS became Low, pch_udc handles 'disconnect'. After VBUS became High, a pull improves D+, and pch_udc handles 'connect'.

[ [email protected] : make it actually compile ]

---------------

breaks the sparc builds in next:

http://kisskb.ellerman.id.au/kisskb/buildresult/5771890/
http://kisskb.ellerman.id.au/kisskb/buildresult/5771905/

Ick, not good.

Tomoya, can you please send me a patch to fix this? Felipe is off-line for a few days and can't do this himself.

greg k-h

#3 lore raw

Hi Greg

Sorry, for inconvenience.
I'll re-submit ASAP.

thanks

Signature · 4 lines
ROHM Co., Ltd.
tomoya

2012年3月6日1:43 Greg KH <[email protected]>:
Quoted 46 lines · Stephen Rothwell
Quoted 37 lines

[Just cc'ing Greg as this commit is in the usb tree]

Quoted 34 lines · On Fri, 2 Mar 2012 17:01:16 -0500 Paul Gortmaker…

This commit:

---------------
commit 637b78eb31e0b167ed913f1750bb645dfeda38f0

Author: Tomoya MORINAGA <[email protected]>
Date:   Fri Feb 3 16:14:18 2012 +0900

usb: gadget: pch_udc: Detecting VBUS through GPIO with interrupt

Problem:
pch_udc continues operation even if VBUS becomes Low. pch_udc performs D+ pulling up before VBUS becomes High. USB device should be controlled according to VBUS state.

Root cause:
The current pch_udc is not always monitoring VBUS.

Solution:
The change of VBUS is detected using an interrupt of GPIO. If VBUS became Low, pch_udc handles 'disconnect'. After VBUS became High, a pull improves D+, and pch_udc handles 'connect'.

[ [email protected] : make it actually compile ]

---------------

breaks the sparc builds in next:

http://kisskb.ellerman.id.au/kisskb/buildresult/5771890/
http://kisskb.ellerman.id.au/kisskb/buildresult/5771905/

Ick, not good.

Tomoya, can you please send me a patch to fix this? Felipe is off-line for a few days and can't do this himself.

greg k-h

#4 lore raw

PATCH 1/1 usb/gadget/pch_udc: Fix compile error

Though I've tested this patch,
http://marc.info/?l=linux-usb&m=132825305710285&w=2,
I've received the following reports.
http://kisskb.ellerman.id.au/kisskb/buildresult/5771890/
http://kisskb.ellerman.id.au/kisskb/buildresult/5771905/

So, I added header file for these symbols.
Using this patch, this compile error must be disappeared.

---
 drivers/usb/gadget/pch_udc.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/usb/gadget/pch_udc.c +1 -0
index 350dbcd..6530706 100644
@@ -16,6 +16,7 @@
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 #include <linux/gpio.h>
+#include <linux/irq.h>
 
 /* GPIO port for VBUS detecting */
 static int vbus_gpio_port = -1;		/* GPIO port number (-1:Not used) */
Signature · 1 line
1.7.7.6
#5 lore raw

PATCH RESEND 1/1 usb/gadget/pch_udc: Fix compile error

In reply to Greg KH

Greg's e-mail address was old. So, I resend it.

Though I've tested this patch,
http://marc.info/?l=linux-usb&m=132825305710285&w=2,
I've received the following reports.
http://kisskb.ellerman.id.au/kisskb/buildresult/5771890/
http://kisskb.ellerman.id.au/kisskb/buildresult/5771905/

So, I added header file for these symbols.
Using this patch, this compile error must be disappeared.

---
 drivers/usb/gadget/pch_udc.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/usb/gadget/pch_udc.c +1 -0
index 350dbcd..6530706 100644
@@ -16,6 +16,7 @@
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 #include <linux/gpio.h>
+#include <linux/irq.h>
 
 /* GPIO port for VBUS detecting */
 static int vbus_gpio_port = -1;		/* GPIO port number (-1:Not used) */
Signature · 1 line
1.7.7.6
#6 lore raw

Re: [PATCH][linux-next][RESEND] usb/gadget/pch_udc: Fix compile error

Hi

Add information.

My develop environment is on x86.

According to following report,
http://kisskb.ellerman.id.au/kisskb/buildresult/5771890/
http://kisskb.ellerman.id.au/kisskb/buildresult/5771905/

This occurred on sparc64.

I suspect this issue ins GPIO implementation for sparc64. Does sparc64 support GPIO interrupt ?
(Even x86, before 2.6.39, GPIO interrupt is not implemented !)

Additionally, this driver is for companion chip of Intel Atom E6xx series. So, this driver is never used for except x86, e.g. sparc.

thanks

Signature · 2 lines
ROHM Co., Ltd.
tomoya
#7 lore raw

Re: [PATCH][linux-next][RESEND] usb/gadget/pch_udc: Fix compile error

Quoted 10 lines · Tomoya MORINAGA

Hi

Add information.

My develop environment is on x86.

According to following report,
http://kisskb.ellerman.id.au/kisskb/buildresult/5771890/
http://kisskb.ellerman.id.au/kisskb/buildresult/5771905/

Quoted 8 lines

This occurred on sparc64.

I suspect this issue ins GPIO implementation for sparc64. Does sparc64 support GPIO interrupt ?
(Even x86, before 2.6.39, GPIO interrupt is not implemented !)

Additionally, this driver is for companion chip of Intel Atom E6xx series. So, this driver is never used for except x86, e.g. sparc.

Then the Kconfig file should probably only enable it on x86 to prevent these kinds of things :)

thanks,

greg k-h

#8 lore raw

Re: [PATCH][linux-next][RESEND] usb/gadget/pch_udc: Fix compile error

Quoted 5 lines · Greg Kroah-Hartman
Quoted 2 lines

Additionally, this driver is for companion chip of Intel Atom E6xx series. So, this driver is never used for except x86, e.g. sparc.

Then the Kconfig file should probably only enable it on x86 to prevent these kinds of things :)

Yes, you are right.
I should have added "x86" to Kconfig.

thanks,

Signature · 2 lines
ROHM Co., Ltd.
tomoya