usb: Add max_streams attribute to endpoint info
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
5007c940a9
commit
04b300f85f
@ -623,6 +623,7 @@ void usb_ep_reset(USBDevice *dev)
|
|||||||
dev->ep_ctl.type = USB_ENDPOINT_XFER_CONTROL;
|
dev->ep_ctl.type = USB_ENDPOINT_XFER_CONTROL;
|
||||||
dev->ep_ctl.ifnum = 0;
|
dev->ep_ctl.ifnum = 0;
|
||||||
dev->ep_ctl.max_packet_size = 64;
|
dev->ep_ctl.max_packet_size = 64;
|
||||||
|
dev->ep_ctl.max_streams = 0;
|
||||||
dev->ep_ctl.dev = dev;
|
dev->ep_ctl.dev = dev;
|
||||||
dev->ep_ctl.pipeline = false;
|
dev->ep_ctl.pipeline = false;
|
||||||
for (ep = 0; ep < USB_MAX_ENDPOINTS; ep++) {
|
for (ep = 0; ep < USB_MAX_ENDPOINTS; ep++) {
|
||||||
@ -636,6 +637,8 @@ void usb_ep_reset(USBDevice *dev)
|
|||||||
dev->ep_out[ep].ifnum = USB_INTERFACE_INVALID;
|
dev->ep_out[ep].ifnum = USB_INTERFACE_INVALID;
|
||||||
dev->ep_in[ep].max_packet_size = 0;
|
dev->ep_in[ep].max_packet_size = 0;
|
||||||
dev->ep_out[ep].max_packet_size = 0;
|
dev->ep_out[ep].max_packet_size = 0;
|
||||||
|
dev->ep_in[ep].max_streams = 0;
|
||||||
|
dev->ep_out[ep].max_streams = 0;
|
||||||
dev->ep_in[ep].dev = dev;
|
dev->ep_in[ep].dev = dev;
|
||||||
dev->ep_out[ep].dev = dev;
|
dev->ep_out[ep].dev = dev;
|
||||||
dev->ep_in[ep].pipeline = false;
|
dev->ep_in[ep].pipeline = false;
|
||||||
@ -764,6 +767,25 @@ int usb_ep_get_max_packet_size(USBDevice *dev, int pid, int ep)
|
|||||||
return uep->max_packet_size;
|
return uep->max_packet_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void usb_ep_set_max_streams(USBDevice *dev, int pid, int ep, uint8_t raw)
|
||||||
|
{
|
||||||
|
struct USBEndpoint *uep = usb_ep_get(dev, pid, ep);
|
||||||
|
int MaxStreams;
|
||||||
|
|
||||||
|
MaxStreams = raw & 0x1f;
|
||||||
|
if (MaxStreams) {
|
||||||
|
uep->max_streams = 1 << MaxStreams;
|
||||||
|
} else {
|
||||||
|
uep->max_streams = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int usb_ep_get_max_streams(USBDevice *dev, int pid, int ep)
|
||||||
|
{
|
||||||
|
struct USBEndpoint *uep = usb_ep_get(dev, pid, ep);
|
||||||
|
return uep->max_streams;
|
||||||
|
}
|
||||||
|
|
||||||
void usb_ep_set_pipeline(USBDevice *dev, int pid, int ep, bool enabled)
|
void usb_ep_set_pipeline(USBDevice *dev, int pid, int ep, bool enabled)
|
||||||
{
|
{
|
||||||
struct USBEndpoint *uep = usb_ep_get(dev, pid, ep);
|
struct USBEndpoint *uep = usb_ep_get(dev, pid, ep);
|
||||||
|
@ -385,6 +385,8 @@ static void usb_desc_ep_init(USBDevice *dev)
|
|||||||
usb_ep_set_ifnum(dev, pid, ep, iface->bInterfaceNumber);
|
usb_ep_set_ifnum(dev, pid, ep, iface->bInterfaceNumber);
|
||||||
usb_ep_set_max_packet_size(dev, pid, ep,
|
usb_ep_set_max_packet_size(dev, pid, ep,
|
||||||
iface->eps[e].wMaxPacketSize);
|
iface->eps[e].wMaxPacketSize);
|
||||||
|
usb_ep_set_max_streams(dev, pid, ep,
|
||||||
|
iface->eps[e].bmAttributes_super);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,6 +189,7 @@ struct USBEndpoint {
|
|||||||
uint8_t type;
|
uint8_t type;
|
||||||
uint8_t ifnum;
|
uint8_t ifnum;
|
||||||
int max_packet_size;
|
int max_packet_size;
|
||||||
|
int max_streams;
|
||||||
bool pipeline;
|
bool pipeline;
|
||||||
bool halted;
|
bool halted;
|
||||||
USBDevice *dev;
|
USBDevice *dev;
|
||||||
@ -421,6 +422,8 @@ void usb_ep_set_ifnum(USBDevice *dev, int pid, int ep, uint8_t ifnum);
|
|||||||
void usb_ep_set_max_packet_size(USBDevice *dev, int pid, int ep,
|
void usb_ep_set_max_packet_size(USBDevice *dev, int pid, int ep,
|
||||||
uint16_t raw);
|
uint16_t raw);
|
||||||
int usb_ep_get_max_packet_size(USBDevice *dev, int pid, int ep);
|
int usb_ep_get_max_packet_size(USBDevice *dev, int pid, int ep);
|
||||||
|
void usb_ep_set_max_streams(USBDevice *dev, int pid, int ep, uint8_t raw);
|
||||||
|
int usb_ep_get_max_streams(USBDevice *dev, int pid, int ep);
|
||||||
void usb_ep_set_pipeline(USBDevice *dev, int pid, int ep, bool enabled);
|
void usb_ep_set_pipeline(USBDevice *dev, int pid, int ep, bool enabled);
|
||||||
void usb_ep_set_halted(USBDevice *dev, int pid, int ep, bool halted);
|
void usb_ep_set_halted(USBDevice *dev, int pid, int ep, bool halted);
|
||||||
USBPacket *usb_ep_find_packet_by_id(USBDevice *dev, int pid, int ep,
|
USBPacket *usb_ep_find_packet_by_id(USBDevice *dev, int pid, int ep,
|
||||||
|
Loading…
Reference in New Issue
Block a user