Commit 6b41272d authored by David Brownell's avatar David Brownell Committed by Greg Kroah-Hartman

[PATCH] USB gadget: net2280 controller updates

A variety of fixes:

    - Resolves some problems with DMA chaining.  It should stream
      a lot better now; but not all the funky cases are handled yet.

    - Now "use_dma_chaining" is a module parameter not a #define.
      It also defaults to false.  Some gadget drivers will work fine
      with this enabled, getting some IRQ reduction and increased
      I/O parallelism (given deep I/O queues); others won't.

    - Handle isochronous transfers (from Mark Huang at Broadcom)

    - Some of the chiprev 0100 workarounds weren't quite right.
      Neither were buffer allocations on dma-incoherent systems.

    - Handle bulk endpoint halts better, for file_storage gadget driver.

    - Handle the hardware device status bits better:
        * selfpowered by default, clearable with the API;
        * remote wakeup disabled by default, host must enable it.

    - Fix a shutdown problem seen in some statically linked configs.

Needed to use the new file_storage gadget without disabling DMA.
parent 75c732d9
This diff is collapsed.
...@@ -520,6 +520,7 @@ struct net2280_ep { ...@@ -520,6 +520,7 @@ struct net2280_ep {
unsigned num : 8, unsigned num : 8,
fifo_size : 12, fifo_size : 12,
in_fifo_validate : 1, in_fifo_validate : 1,
out_overflow : 1,
stopped : 1, stopped : 1,
is_in : 1, is_in : 1,
is_iso : 1; is_iso : 1;
...@@ -529,6 +530,7 @@ static inline void allow_status (struct net2280_ep *ep) ...@@ -529,6 +530,7 @@ static inline void allow_status (struct net2280_ep *ep)
{ {
/* ep0 only */ /* ep0 only */
writel ( (1 << CLEAR_CONTROL_STATUS_PHASE_HANDSHAKE) writel ( (1 << CLEAR_CONTROL_STATUS_PHASE_HANDSHAKE)
| (1 << CLEAR_NAK_OUT_PACKETS)
| (1 << CLEAR_NAK_OUT_PACKETS_MODE) | (1 << CLEAR_NAK_OUT_PACKETS_MODE)
, &ep->regs->ep_rsp); , &ep->regs->ep_rsp);
ep->stopped = 1; ep->stopped = 1;
...@@ -546,7 +548,6 @@ struct net2280_request { ...@@ -546,7 +548,6 @@ struct net2280_request {
dma_addr_t td_dma; dma_addr_t td_dma;
struct list_head queue; struct list_head queue;
unsigned mapped : 1, unsigned mapped : 1,
dma_done : 1,
valid : 1; valid : 1;
}; };
...@@ -559,8 +560,7 @@ struct net2280 { ...@@ -559,8 +560,7 @@ struct net2280 {
unsigned enabled : 1, unsigned enabled : 1,
protocol_stall : 1, protocol_stall : 1,
got_irq : 1, got_irq : 1,
region : 1, region : 1;
selfpowered : 1;
u16 chiprev; u16 chiprev;
/* pci state used to access those endpoints */ /* pci state used to access those endpoints */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment