mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-28 01:51:33 +00:00
usb: Add an interval parameter to create_int_queue
Currently create_int_queue is only implemented by the ehci code, and that does not honor interrupt intervals, but other drivers which might also want to implement create_int_queue may honor intervals, so add an interval param. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
a1d31077d0
commit
8bb6c1d1e0
3 changed files with 7 additions and 5 deletions
|
@ -332,7 +332,8 @@ static inline void usb_kbd_poll_for_event(struct usb_device *dev)
|
||||||
/* We've consumed all queued int packets, create new */
|
/* We've consumed all queued int packets, create new */
|
||||||
destroy_int_queue(dev, data->intq);
|
destroy_int_queue(dev, data->intq);
|
||||||
data->intq = create_int_queue(dev, data->intpipe, 1,
|
data->intq = create_int_queue(dev, data->intpipe, 1,
|
||||||
USB_KBD_BOOT_REPORT_SIZE, data->new);
|
USB_KBD_BOOT_REPORT_SIZE, data->new,
|
||||||
|
data->intinterval);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -453,7 +454,8 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
|
||||||
debug("USB KBD: enable interrupt pipe...\n");
|
debug("USB KBD: enable interrupt pipe...\n");
|
||||||
#ifdef CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE
|
#ifdef CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE
|
||||||
data->intq = create_int_queue(dev, data->intpipe, 1,
|
data->intq = create_int_queue(dev, data->intpipe, 1,
|
||||||
USB_KBD_BOOT_REPORT_SIZE, data->new);
|
USB_KBD_BOOT_REPORT_SIZE, data->new,
|
||||||
|
data->intinterval);
|
||||||
if (!data->intq) {
|
if (!data->intq) {
|
||||||
#else
|
#else
|
||||||
if (usb_submit_int_msg(dev, data->intpipe, data->new, data->intpktsize,
|
if (usb_submit_int_msg(dev, data->intpipe, data->new, data->intpktsize,
|
||||||
|
|
|
@ -1148,7 +1148,7 @@ disable_periodic(struct ehci_ctrl *ctrl)
|
||||||
|
|
||||||
struct int_queue *
|
struct int_queue *
|
||||||
create_int_queue(struct usb_device *dev, unsigned long pipe, int queuesize,
|
create_int_queue(struct usb_device *dev, unsigned long pipe, int queuesize,
|
||||||
int elementsize, void *buffer)
|
int elementsize, void *buffer, int interval)
|
||||||
{
|
{
|
||||||
struct ehci_ctrl *ctrl = dev->controller;
|
struct ehci_ctrl *ctrl = dev->controller;
|
||||||
struct int_queue *result = NULL;
|
struct int_queue *result = NULL;
|
||||||
|
@ -1398,7 +1398,7 @@ submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
|
||||||
debug("dev=%p, pipe=%lu, buffer=%p, length=%d, interval=%d",
|
debug("dev=%p, pipe=%lu, buffer=%p, length=%d, interval=%d",
|
||||||
dev, pipe, buffer, length, interval);
|
dev, pipe, buffer, length, interval);
|
||||||
|
|
||||||
queue = create_int_queue(dev, pipe, 1, length, buffer);
|
queue = create_int_queue(dev, pipe, 1, length, buffer, interval);
|
||||||
if (!queue)
|
if (!queue)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
|
|
@ -169,7 +169,7 @@ int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
|
||||||
|
|
||||||
#ifdef CONFIG_USB_EHCI /* Only the ehci code has pollable int support */
|
#ifdef CONFIG_USB_EHCI /* Only the ehci code has pollable int support */
|
||||||
struct int_queue *create_int_queue(struct usb_device *dev, unsigned long pipe,
|
struct int_queue *create_int_queue(struct usb_device *dev, unsigned long pipe,
|
||||||
int queuesize, int elementsize, void *buffer);
|
int queuesize, int elementsize, void *buffer, int interval);
|
||||||
int destroy_int_queue(struct usb_device *dev, struct int_queue *queue);
|
int destroy_int_queue(struct usb_device *dev, struct int_queue *queue);
|
||||||
void *poll_int_queue(struct usb_device *dev, struct int_queue *queue);
|
void *poll_int_queue(struct usb_device *dev, struct int_queue *queue);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue