| Age | Commit message (Collapse) | Author |
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
find class
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
or deinit
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
dev_dep_msg_out.transferSize
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: MDLZCOOL <[email protected]>
|
|
Signed-off-by: MDLZCOOL <[email protected]>
|
|
Signed-off-by: MDLZCOOL <[email protected]>
|
|
usbh_kill_urb() derived both the channel to mask and the channel to flush from
the endpoint number ((urb->ep->bEndpointAddress & 0x0f) and bEndpointAddress
itself), which only holds when the channel number equals the endpoint number.
When MUSB_SIFLI_EP_MAP is in use the channel is assigned by
sifli_ep_map_alloc(): the SiFli 52/56 host channels are pooled per direction
(IN ch1..ch4, OUT ch5..ch7), so e.g. EP1 OUT lives on ch5 and EP2 OUT on ch6.
Masking by endpoint number therefore clears the interrupt enable of an
unrelated channel and leaves the aborted channel's interrupt armed, and
musb_fifo_flush() is asked to clean the FIFO of a different endpoint than the
one the URB was using.
Take the channel from pipe->chidx, which is the channel the URB was submitted
on, and rebuild the byte musb_fifo_flush() expects (direction in bit7, channel
in bits 6:0). Non-mapped MUSB ports keep their previous behaviour.
EP0 is unaffected either way: with chidx 0 and bEndpointAddress 0 both forms
resolve to bit 0 and byte 0.
|
|
The data channels re-arm their interrupt enable in their own
musb_bulk_urb_init()/musb_intr_urb_init()/musb_iso_urb_init(), but the EP0
path never did: TXIE.EP0 was only ever set once, in usb_hc_init().
usbh_kill_urb() masks the interrupt of the channel that owns the abandoned
URB, and EP0 always lives on channel 0, so aborting a single control transfer
clears TXIE.EP0 for good. Every later control transfer then completes in the
hardware but never raises an EP0 interrupt, so usbh_submit_urb() runs into
errout_timeout (-USB_ERR_TIMEOUT) and enumeration can never succeed again
until the next usb_hc_init().
Seen on a host that lost its peer in the middle of enumeration (phone reboot
or re-plug): one control transfer timed out during the port reset and every
following one repeated "Failed to get device descriptor, errorcode:-14"
forever, until the board was rebooted.
Arming TXIE.EP0 here keeps EP0 symmetric with the data channels, so a single
timed-out control transfer no longer disables EP0 for the rest of the session.
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
first then can disable ep, refs: #462
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
this
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
On the SiFli 52/56 series the MUSB host channels are direction-limited (ch2-ch4 are IN-only, ch5-ch7 are OUT-only, ch1 can do both; ch0 is EP0), but the first-free channel allocation is direction-blind and can assign a channel that cannot carry the transfer.
Allocate channels through a per-direction endpoint map instead: each (direction, endpoint number) pair keeps a dedicated channel from the correct pool while its URBs are in flight, and the slot is freed when the pipe is released. Busy and map-failure collisions are logged.
Fixes USB tethering transfer failures with phones whose RNDIS data endpoints are EP1 IN + EP1 OUT (e.g. OPPO) or numbered above 7 (e.g. EP14/EP15; numbers 1-15 all work since they only live in the 4-bit TEP field). The generic musb_pipe_alloc() path is kept for other MUSB ports.
|
|
(0xEF/0x04/0x01)
Android phones expose USB tethering with the RNDIS interface class code 0xEF / subclass 0x04 / protocol 0x01 instead of the standard wireless class 0xE0 / 0x01 / 0x03. Add a matching class info so these devices are probed by the RNDIS class driver and work out of the box.
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
|
|
packet feature
|
|
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
|
|
Signed-off-by: sakumisu <[email protected]>
|
|
Signed-off-by: sakumisu <[email protected]>
|