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.ifnum = 0; | ||||
|     dev->ep_ctl.max_packet_size = 64; | ||||
|     dev->ep_ctl.max_streams = 0; | ||||
|     dev->ep_ctl.dev = dev; | ||||
|     dev->ep_ctl.pipeline = false; | ||||
|     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_in[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_out[ep].dev = dev; | ||||
|         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; | ||||
| } | ||||
| 
 | ||||
| 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) | ||||
| { | ||||
|     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_max_packet_size(dev, pid, ep, | ||||
|                                        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 ifnum; | ||||
|     int max_packet_size; | ||||
|     int max_streams; | ||||
|     bool pipeline; | ||||
|     bool halted; | ||||
|     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, | ||||
|                                 uint16_t raw); | ||||
| 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_halted(USBDevice *dev, int pid, int ep, bool halted); | ||||
| USBPacket *usb_ep_find_packet_by_id(USBDevice *dev, int pid, int ep, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Hans de Goede
						Hans de Goede