summaryrefslogtreecommitdiff
path: root/packages/linux/linux-omap-2.6.27/musb-dma-iso-in.eml
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/linux/linux-omap-2.6.27/musb-dma-iso-in.eml
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'packages/linux/linux-omap-2.6.27/musb-dma-iso-in.eml')
-rw-r--r--packages/linux/linux-omap-2.6.27/musb-dma-iso-in.eml138
1 files changed, 0 insertions, 138 deletions
diff --git a/packages/linux/linux-omap-2.6.27/musb-dma-iso-in.eml b/packages/linux/linux-omap-2.6.27/musb-dma-iso-in.eml
deleted file mode 100644
index 56fc827a5d..0000000000
--- a/packages/linux/linux-omap-2.6.27/musb-dma-iso-in.eml
+++ /dev/null
@@ -1,138 +0,0 @@
-Fixes blurred capture images in dma mode. Isochronous error field in
-urb and source data buffer pointer were not updated properly in dma
-mode.
-
-Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
----
-diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
-index 08e421f..a481d54 100644
---- a/drivers/usb/musb/musb_host.c
-+++ b/drivers/usb/musb/musb_host.c
-@@ -1505,10 +1505,29 @@ void musb_host_rx(struct musb *musb, u8 epnum)
- musb_writew(hw_ep->regs, MUSB_RXCSR, val);
-
- #ifdef CONFIG_USB_INVENTRA_DMA
-+ if (usb_pipeisoc(pipe)) {
-+ struct usb_iso_packet_descriptor *d;
-+
-+ d = urb->iso_frame_desc + qh->iso_idx;
-+ d->actual_length = xfer_len;
-+
-+ /* even if there was an error, we did the dma
-+ * for iso_frame_desc->length
-+ */
-+ if (d->status != EILSEQ && d->status != -EOVERFLOW)
-+ d->status = 0;
-+
-+ if (++qh->iso_idx >= urb->number_of_packets)
-+ done = true;
-+ else
-+ done = false;
-+
-+ } else {
- /* done if urb buffer is full or short packet is recd */
- done = (urb->actual_length + xfer_len >=
- urb->transfer_buffer_length
- || dma->actual_len < qh->maxpacket);
-+ }
-
- /* send IN token for next packet, without AUTOREQ */
- if (!done) {
-@@ -1545,7 +1564,8 @@ void musb_host_rx(struct musb *musb, u8 epnum)
- if (dma) {
- struct dma_controller *c;
- u16 rx_count;
-- int ret;
-+ int ret, length;
-+ dma_addr_t buf;
-
- rx_count = musb_readw(epio, MUSB_RXCOUNT);
-
-@@ -1558,6 +1578,35 @@ void musb_host_rx(struct musb *musb, u8 epnum)
-
- c = musb->dma_controller;
-
-+ if (usb_pipeisoc(pipe)) {
-+ int status = 0;
-+ struct usb_iso_packet_descriptor *d;
-+
-+ d = urb->iso_frame_desc + qh->iso_idx;
-+
-+ if (iso_err) {
-+ status = -EILSEQ;
-+ urb->error_count++;
-+ }
-+ if (rx_count > d->length) {
-+ if (status == 0) {
-+ status = -EOVERFLOW;
-+ urb->error_count++;
-+ }
-+ DBG(2, "** OVERFLOW %d into %d\n",\
-+ rx_count, d->length);
-+
-+ length = d->length;
-+ } else
-+ length = rx_count;
-+ d->status = status;
-+ buf = urb->transfer_dma + d->offset;
-+ } else {
-+ length = rx_count;
-+ buf = urb->transfer_dma +
-+ urb->actual_length;
-+ }
-+
- dma->desired_mode = 0;
- #ifdef USE_MODE1
- /* because of the issue below, mode 1 will
-@@ -1569,6 +1618,12 @@ void musb_host_rx(struct musb *musb, u8 epnum)
- urb->actual_length)
- > qh->maxpacket)
- dma->desired_mode = 1;
-+ if (rx_count < hw_ep->max_packet_sz_rx) {
-+ length = rx_count;
-+ dma->bDesiredMode = 0;
-+ } else {
-+ length = urb->transfer_buffer_length;
-+ }
- #endif
-
- /* Disadvantage of using mode 1:
-@@ -1606,12 +1661,7 @@ void musb_host_rx(struct musb *musb, u8 epnum)
- */
- ret = c->channel_program(
- dma, qh->maxpacket,
-- dma->desired_mode,
-- urb->transfer_dma
-- + urb->actual_length,
-- (dma->desired_mode == 0)
-- ? rx_count
-- : urb->transfer_buffer_length);
-+ dma->desired_mode, buf, length);
-
- if (!ret) {
- c->channel_release(dma);
-@@ -1628,19 +1678,6 @@ void musb_host_rx(struct musb *musb, u8 epnum)
- }
- }
-
-- if (dma && usb_pipeisoc(pipe)) {
-- struct usb_iso_packet_descriptor *d;
-- int iso_stat = status;
--
-- d = urb->iso_frame_desc + qh->iso_idx;
-- d->actual_length += xfer_len;
-- if (iso_err) {
-- iso_stat = -EILSEQ;
-- urb->error_count++;
-- }
-- d->status = iso_stat;
-- }
--
- finish:
- urb->actual_length += xfer_len;
- qh->offset += xfer_len;
---
-To unsubscribe from this list: send the line "unsubscribe linux-omap" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-