diff options
author | Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> | 2013-09-24 15:09:29 +0530 |
---|---|---|
committer | Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> | 2013-10-04 12:01:21 +0530 |
commit | 5962dbf56dbf8028eeb60dbae0d0b5b96a3b28cc (patch) | |
tree | 9261ccc902d51282a3a89fe61b40ed129c4e3e3d /lib | |
parent | 80ba6519d89df92174d02c21f2f19d1f11282637 (diff) | |
download | SLOF-5962dbf56dbf8028eeb60dbae0d0b5b96a3b28cc.zip SLOF-5962dbf56dbf8028eeb60dbae0d0b5b96a3b28cc.tar.gz SLOF-5962dbf56dbf8028eeb60dbae0d0b5b96a3b28cc.tar.bz2 |
usb-ohci: preserve the toggleCarry bit in ED
Endpoint descriptors toggleCarry bit needs to be preserved when using
DataToggle bit in transfer descriptor is set to 0.
Also zero the bulk_curr_ed
Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libusb/usb-ohci.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/libusb/usb-ohci.c b/lib/libusb/usb-ohci.c index b959cd3..1a7e60c 100644 --- a/lib/libusb/usb-ohci.c +++ b/lib/libusb/usb-ohci.c @@ -381,7 +381,7 @@ static void ohci_fill_ed(struct ohci_ed *ed, long headp, long tailp, unsigned int attr, long next_ed) { ed->attr = cpu_to_le32(attr); - ed->headp = cpu_to_le32(headp); + ed->headp = cpu_to_le32(headp) | (ed->headp & ~EDA_HEADP_MASK_LE); ed->tailp = cpu_to_le32(tailp); ed->next_ed = cpu_to_le32(next_ed); dpprintf("%s: headp %08X tailp %08X next_td %08X attr %08X\n", __func__, @@ -693,6 +693,7 @@ static int ohci_transfer_bulk(struct usb_pipe *pipe, void *td_ptr, ed->attr |= cpu_to_le32(EDA_SKIP); mb(); write_reg32(®s->bulk_head_ed, 0); + write_reg32(®s->bulk_curr_ed, 0); if (le32_to_cpu(ed->headp) & EDA_HEADP_HALTED) { printf("ED Halted\n"); |