mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-26 15:31:35 +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: "
|
#define LOG_TAG "USBPM: "
|
||||||
|
|
||||||
static struct usb_dev_sys_ctx_info g_ctx;
|
static struct usb_dev_sys_ctx_info g_ctx;
|
||||||
static inline uint8_t usb_dev_get_ep_type(struct usb_dev *udev, int pid,
|
static uint8_t usb_dev_get_ep_type(struct usb_dev *udev, int pid, int epnum);
|
||||||
int epnum);
|
static uint16_t usb_dev_get_ep_maxp(struct usb_dev *udev, int pid, int epnum);
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
usb_get_native_devinfo(struct libusb_device *ldev,
|
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;
|
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
|
static void
|
||||||
usb_dev_reset_ep(struct usb_dev *udev)
|
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_PID(desc),
|
||||||
USB_EP_NR(desc),
|
USB_EP_NR(desc),
|
||||||
USB_EP_TYPE(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);
|
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_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_TYPE(d) (USB_EP_ATTR(d) & 0x3)
|
||||||
#define USB_EP_NR(d) (USB_EP_ADDR(d) & 0xF)
|
#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_ERR_TYPE 0xFF
|
||||||
|
|
||||||
|
#define USB_EP_MAXP_SZ(m) ((m) & 0x7ff)
|
||||||
|
#define USB_EP_MAXP_MT(m) (((m) >> 11) & 0x3)
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
USB_INFO_VERSION,
|
USB_INFO_VERSION,
|
||||||
USB_INFO_SPEED,
|
USB_INFO_SPEED,
|
||||||
@ -32,6 +36,7 @@ enum {
|
|||||||
struct usb_dev_ep {
|
struct usb_dev_ep {
|
||||||
uint8_t pid;
|
uint8_t pid;
|
||||||
uint8_t type;
|
uint8_t type;
|
||||||
|
uint16_t maxp;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct usb_dev {
|
struct usb_dev {
|
||||||
|
Loading…
Reference in New Issue
Block a user