aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/fhci-sched.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/fhci-sched.c')
-rw-r--r--drivers/usb/host/fhci-sched.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/usb/host/fhci-sched.c b/drivers/usb/host/fhci-sched.c
index a42ef380e917..2df851b4bc7c 100644
--- a/drivers/usb/host/fhci-sched.c
+++ b/drivers/usb/host/fhci-sched.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Freescale QUICC Engine USB Host Controller Driver 2 * Freescale QUICC Engine USB Host Controller Driver
3 * 3 *
4 * Copyright (c) Freescale Semicondutor, Inc. 2006. 4 * Copyright (c) Freescale Semicondutor, Inc. 2006, 2011.
5 * Shlomi Gridish <gridish@freescale.com> 5 * Shlomi Gridish <gridish@freescale.com>
6 * Jerry Huang <Chang-Ming.Huang@freescale.com> 6 * Jerry Huang <Chang-Ming.Huang@freescale.com>
7 * Copyright (c) Logic Product Development, Inc. 2007 7 * Copyright (c) Logic Product Development, Inc. 2007
@@ -810,9 +810,11 @@ void fhci_queue_urb(struct fhci_hcd *fhci, struct urb *urb)
810 ed->dev_addr = usb_pipedevice(urb->pipe); 810 ed->dev_addr = usb_pipedevice(urb->pipe);
811 ed->max_pkt_size = usb_maxpacket(urb->dev, urb->pipe, 811 ed->max_pkt_size = usb_maxpacket(urb->dev, urb->pipe,
812 usb_pipeout(urb->pipe)); 812 usb_pipeout(urb->pipe));
813 /* setup stage */
813 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, FHCI_TA_SETUP, 814 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, FHCI_TA_SETUP,
814 USB_TD_TOGGLE_DATA0, urb->setup_packet, 8, 0, 0, true); 815 USB_TD_TOGGLE_DATA0, urb->setup_packet, 8, 0, 0, true);
815 816
817 /* data stage */
816 if (data_len > 0) { 818 if (data_len > 0) {
817 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, 819 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++,
818 usb_pipeout(urb->pipe) ? FHCI_TA_OUT : 820 usb_pipeout(urb->pipe) ? FHCI_TA_OUT :
@@ -820,9 +822,18 @@ void fhci_queue_urb(struct fhci_hcd *fhci, struct urb *urb)
820 USB_TD_TOGGLE_DATA1, data, data_len, 0, 0, 822 USB_TD_TOGGLE_DATA1, data, data_len, 0, 0,
821 true); 823 true);
822 } 824 }
823 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, 825
824 usb_pipeout(urb->pipe) ? FHCI_TA_IN : FHCI_TA_OUT, 826 /* status stage */
825 USB_TD_TOGGLE_DATA1, data, 0, 0, 0, true); 827 if (data_len > 0)
828 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++,
829 (usb_pipeout(urb->pipe) ? FHCI_TA_IN :
830 FHCI_TA_OUT),
831 USB_TD_TOGGLE_DATA1, data, 0, 0, 0, true);
832 else
833 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++,
834 FHCI_TA_IN,
835 USB_TD_TOGGLE_DATA1, data, 0, 0, 0, true);
836
826 urb_state = US_CTRL_SETUP; 837 urb_state = US_CTRL_SETUP;
827 break; 838 break;
828 case FHCI_TF_ISO: 839 case FHCI_TF_ISO: