mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-26 07:21:37 +00:00
DM USB: save MaxPacketSize value in endpoint descriptor
Save the MaxPacketSize value for every endpoint of virtual USB device. Tracked-On: #3054 Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com> Acked-by: Yu Wang <yu1.wang@intel.com>
This commit is contained in:
parent
296b649ae9
commit
f2e35ab701
@ -19,8 +19,8 @@
|
||||
#define LOG_TAG "USBPM: "
|
||||
|
||||
static struct usb_dev_sys_ctx_info g_ctx;
|
||||
static inline uint8_t usb_dev_get_ep_type(struct usb_dev *udev, int pid,
|
||||
int epnum);
|
||||
static uint8_t usb_dev_get_ep_type(struct usb_dev *udev, int pid, int epnum);
|
||||
static uint16_t usb_dev_get_ep_maxp(struct usb_dev *udev, int pid, int epnum);
|
||||
|
||||
static bool
|
||||
usb_get_native_devinfo(struct libusb_device *ldev,
|
||||
@ -480,6 +480,28 @@ usb_dev_get_ep_type(struct usb_dev *udev, int pid, int epnum)
|
||||
return ep->type;
|
||||
}
|
||||
|
||||
static inline void
|
||||
usb_dev_set_ep_maxp(struct usb_dev *udev, int pid, int epnum, uint16_t maxp)
|
||||
{
|
||||
struct usb_dev_ep *ep;
|
||||
|
||||
ep = usb_dev_get_ep(udev, pid, epnum);
|
||||
if (ep)
|
||||
ep->maxp = maxp;
|
||||
}
|
||||
|
||||
static inline uint16_t
|
||||
usb_dev_get_ep_maxp(struct usb_dev *udev, int pid, int epnum)
|
||||
{
|
||||
struct usb_dev_ep *ep;
|
||||
|
||||
ep = usb_dev_get_ep(udev, pid, epnum);
|
||||
if (!ep)
|
||||
return 0;
|
||||
else
|
||||
return ep->maxp;
|
||||
}
|
||||
|
||||
static void
|
||||
usb_dev_reset_ep(struct usb_dev *udev)
|
||||
{
|
||||
@ -515,6 +537,10 @@ usb_dev_update_ep(struct usb_dev *udev)
|
||||
USB_EP_PID(desc),
|
||||
USB_EP_NR(desc),
|
||||
USB_EP_TYPE(desc));
|
||||
usb_dev_set_ep_maxp(udev,
|
||||
USB_EP_PID(desc),
|
||||
USB_EP_NR(desc),
|
||||
USB_EP_MAXP(desc));
|
||||
}
|
||||
}
|
||||
libusb_free_config_descriptor(cfg);
|
||||
|
@ -18,8 +18,12 @@
|
||||
#define USB_EP_PID(d) (USB_EP_ADDR(d) & USB_DIR_IN ? TOKEN_IN : TOKEN_OUT)
|
||||
#define USB_EP_TYPE(d) (USB_EP_ATTR(d) & 0x3)
|
||||
#define USB_EP_NR(d) (USB_EP_ADDR(d) & 0xF)
|
||||
#define USB_EP_MAXP(d) ((d)->wMaxPacketSize)
|
||||
#define USB_EP_ERR_TYPE 0xFF
|
||||
|
||||
#define USB_EP_MAXP_SZ(m) ((m) & 0x7ff)
|
||||
#define USB_EP_MAXP_MT(m) (((m) >> 11) & 0x3)
|
||||
|
||||
enum {
|
||||
USB_INFO_VERSION,
|
||||
USB_INFO_SPEED,
|
||||
@ -32,6 +36,7 @@ enum {
|
||||
struct usb_dev_ep {
|
||||
uint8_t pid;
|
||||
uint8_t type;
|
||||
uint16_t maxp;
|
||||
};
|
||||
|
||||
struct usb_dev {
|
||||
|
Loading…
Reference in New Issue
Block a user