Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 151331
b: refs/heads/master
c: 9f5351b
h: refs/heads/master
i:
  151329: fb30aff
  151327: f772d57
v: v3
  • Loading branch information
Robert Jarzmik authored and Greg Kroah-Hartman committed Jun 16, 2009
1 parent bc5f4c1 commit 7c78603
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f6d529f936672d341fab14ffb0d8eebeee2d8cd3
refs/heads/master: 9f5351b743716c796d13235651699fb4ec7aa64f
2 changes: 1 addition & 1 deletion trunk/drivers/usb/gadget/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ config USB_PXA25X_SMALL

config USB_GADGET_PXA27X
boolean "PXA 27x"
depends on ARCH_PXA && PXA27x
depends on ARCH_PXA && (PXA27x || PXA3xx)
select USB_OTG_UTILS
help
Intel's PXA 27x series XScale ARM v5TE processors include
Expand Down
13 changes: 12 additions & 1 deletion trunk/drivers/usb/gadget/pxa27x_udc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1892,6 +1892,15 @@ static void handle_ep0_ctrl_req(struct pxa_udc *udc,

nuke(ep, -EPROTO);

/*
* In the PXA320 manual, in the section about Back-to-Back setup
* packets, it describes this situation. The solution is to set OPC to
* get rid of the status packet, and then continue with the setup
* packet. Generalize to pxa27x CPUs.
*/
if (epout_has_pkt(ep) && (ep_count_bytes_remain(ep) == 0))
udc_ep_writel(ep, UDCCSR, UDCCSR0_OPC);

/* read SETUP packet */
for (i = 0; i < 2; i++) {
if (unlikely(ep_is_empty(ep)))
Expand Down Expand Up @@ -1965,6 +1974,8 @@ static void handle_ep0_ctrl_req(struct pxa_udc *udc,
* cleared by software.
* - clearing UDCCSR0_OPC always flushes ep0. If in setup stage, never do it
* before reading ep0.
* This is true only for PXA27x. This is not true anymore for PXA3xx family
* (check Back-to-Back setup packet in developers guide).
* - irq can be called on a "packet complete" event (opc_irq=1), while
* UDCCSR0_OPC is not yet raised (delta can be as big as 100ms
* from experimentation).
Expand Down Expand Up @@ -2575,7 +2586,7 @@ static struct platform_driver udc_driver = {

static int __init udc_init(void)
{
if (!cpu_is_pxa27x())
if (!cpu_is_pxa27x() && !cpu_is_pxa3xx())
return -ENODEV;

printk(KERN_INFO "%s: version %s\n", driver_name, DRIVER_VERSION);
Expand Down

0 comments on commit 7c78603

Please sign in to comment.