dma: cppi41: handle 0-length packets

When a 0-length packet is received on the bus, desc->pd0 yields 1,
which confuses the driver's users. This information is clearly wrong
and not in accordance to the datasheet, but it's been observed on an
AM335x board, very reproducible.

Fix this by looking at bit 19 in PD2 of the completed packet. This bit
will tell us if a zero-length packet was received on a queue. If it's
set, ignore the value in PD0 and report a total length of 0 instead.

(cherry picked from commit 89ef5b7601f3d3464fd110c7b35e69fb3c21b839)
usb: musb/cppi41: call musb_ep_select() before accessing an endpoint's CSR

Before accessing any of an endpoint's CSR registers, make sure the
correct endpoint is selected. Otherwise, data read from or written to
the registers is likely to affect the wrong endpoint as long as the
connected device has more than one endpoint.

This, of course, leads to all sorts of strange effects such as stream
starvation and driver internal state machine confusion due to spurious
interrupts.

Signed-off-by: Daniel Mack <zonque@xxxxxxxxx>
(cherry picked from commit a0dedeccd9be0fd2c75e844c6866f83c3c738181)
usb: musb: fix bit mask for CSR in musb_h_tx_flush_fifo()

The datasheet says that MUSB_TXCSR_FLUSHFIFO is only valid when
MUSB_TXCSR_TXPKTRDY is set as well.

With this patch applied, the warning in this function does no longer
kick in when an USB soundcard is unplugged while the stream is active.

Signed-off-by: Daniel Mack <zonque@xxxxxxxxx>
(cherry picked from commit 4a7cce20e4aaced0815f0b267b62be23de70c0bd)
usb: musb: introduce dma_channel.rx_packet_done

The musb/cppi41 glue layer is capable of handling transactions that span
over more than one USB packet by reloading the DMA descriptors
partially. An urb is considered completed when either its transfer
buffer has been filled entirely (actual_length ==
transfer_buffer_length) or if a packet in the stream has less bytes than
the endpoint's wMaxPacketSize.

Once one of the above conditions is met, musb_dma_completion() is called
from cppi41_trans_done(). However, the final decision whether or not to
return the urb to its owner is made by the core and its determination of
the variable 'done' in musb_host_rx(). This code has currently no way of
knowing what the size of the last packet was, and whether or not to
give back the urb due to a short read.

Fix this by introducing a new boolean flag in 'struct dma_channel', and
set it from musb_cppi41.c. If set, it will make the core do what the
DMA layer decided and complete the urb.

Signed-off-by: Daniel Mack <zonque@xxxxxxxxx>
Acked-by: George Cherian <george.cherian@xxxxxx>
(cherry picked from commit 53f604ca99f3b88f7f332cbb3fac7f97a2568671)

Conflicts:
	drivers/usb/musb/musb_host.c
arm: mach-omap2: cpuidle33xx: disable C1 state when CPPI41_DMA is enabled.

(cherry picked from commit b99d35a39fbdb23b0237177db22f70684f61bd7c)
Merge branch 'fix/usb-dma' into MA-E3xx/linux-3.15.y