Lines 1563-1574
Link Here
|
1563 |
hcchar = td->hcchar; |
1563 |
hcchar = td->hcchar; |
1564 |
hcchar |= HCCHAR_EPDIR_IN; |
1564 |
hcchar |= HCCHAR_EPDIR_IN; |
1565 |
|
1565 |
|
1566 |
/* receive complete split ASAP */ |
1566 |
if (td->ep_type == UE_ISOCHRONOUS) { |
1567 |
if ((sc->sc_last_frame_num & 1) != 0 && |
1567 |
if (td->hcsplt != 0) { |
1568 |
td->ep_type == UE_ISOCHRONOUS) |
1568 |
/* double buffer */ |
1569 |
hcchar |= HCCHAR_ODDFRM; |
1569 |
if ((sc->sc_last_frame_num ^ x) & 1) |
1570 |
else |
1570 |
hcchar |= HCCHAR_ODDFRM; |
|
|
1571 |
else |
1572 |
hcchar &= ~HCCHAR_ODDFRM; |
1573 |
} else { |
1574 |
/* multi buffer, if any */ |
1575 |
if (sc->sc_last_frame_num & 1) |
1576 |
hcchar |= HCCHAR_ODDFRM; |
1577 |
else |
1578 |
hcchar &= ~HCCHAR_ODDFRM; |
1579 |
} |
1580 |
} else { |
1571 |
hcchar &= ~HCCHAR_ODDFRM; |
1581 |
hcchar &= ~HCCHAR_ODDFRM; |
|
|
1582 |
} |
1572 |
|
1583 |
|
1573 |
/* must enable channel before data can be received */ |
1584 |
/* must enable channel before data can be received */ |
1574 |
DWC_OTG_WRITE_4(sc, DOTG_HCCHAR(channel), hcchar); |
1585 |
DWC_OTG_WRITE_4(sc, DOTG_HCCHAR(channel), hcchar); |
Lines 4875-4887
Link Here
|
4875 |
td->tt_index = parm->udev->device_index; |
4886 |
td->tt_index = parm->udev->device_index; |
4876 |
else |
4887 |
else |
4877 |
td->tt_index = parm->udev->parent_hs_hub->device_index; |
4888 |
td->tt_index = parm->udev->parent_hs_hub->device_index; |
|
|
4889 |
|
4890 |
if ((xfer->endpointno & UE_DIR_IN) != 0 && ep_type == UE_ISOCHRONOUS) |
4891 |
td->max_packet_count = 2; /* double buffering */ |
4892 |
else |
4893 |
td->max_packet_count = xfer->max_packet_count; |
4878 |
} else { |
4894 |
} else { |
4879 |
td->tt_index = parm->udev->device_index; |
4895 |
td->tt_index = parm->udev->device_index; |
|
|
4896 |
td->max_packet_count = xfer->max_packet_count; |
4880 |
} |
4897 |
} |
4881 |
|
4898 |
|
4882 |
/* init TD */ |
4899 |
/* init TD */ |
4883 |
td->max_packet_size = xfer->max_packet_size; |
4900 |
td->max_packet_size = xfer->max_packet_size; |
4884 |
td->max_packet_count = xfer->max_packet_count; |
|
|
4885 |
/* range check */ |
4901 |
/* range check */ |
4886 |
if (td->max_packet_count == 0 || td->max_packet_count > 3) |
4902 |
if (td->max_packet_count == 0 || td->max_packet_count > 3) |
4887 |
td->max_packet_count = 1; |
4903 |
td->max_packet_count = 1; |
Lines 4930-4935
Link Here
|
4930 |
DPRINTFN(-1, "Non-isochronous high bandwidth " |
4946 |
DPRINTFN(-1, "Non-isochronous high bandwidth " |
4931 |
"endpoint not supported\n"); |
4947 |
"endpoint not supported\n"); |
4932 |
return; |
4948 |
return; |
|
|
4949 |
} else if (dwc_otg_uses_split(udev) && |
4950 |
(edesc->bEndpointAddress & UE_DIR_IN) != 0 && |
4951 |
UGETW(edesc->wMaxPacketSize) >= (171 * 2) && |
4952 |
(edesc->bmAttributes & UE_XFERTYPE) == UE_ISOCHRONOUS) { |
4953 |
/* not supported */ |
4954 |
DPRINTFN(-1, "Isochronous full speed " |
4955 |
"endpoint not supported\n"); |
4956 |
return; |
4933 |
} |
4957 |
} |
4934 |
} |
4958 |
} |
4935 |
if ((edesc->bmAttributes & UE_XFERTYPE) == UE_ISOCHRONOUS) |
4959 |
if ((edesc->bmAttributes & UE_XFERTYPE) == UE_ISOCHRONOUS) |