summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhang Wei <wei.zhang@freescale.com>2007-06-06 10:08:13 +0200
committerMarkus Klotzbuecher <mk@pollux.denx.de>2007-06-06 10:08:13 +0200
commitfdcfaa1b02268b2899e374b35adf936c911a47eb (patch)
tree7d0f9122da78789b93f1c2758c6e5e8c14867c76
parent9a1d00fa47c1e05e3fdb60b33213af4e18d4c18e (diff)
USB event poll support
This patch adds USB event poll support, which could be used in usbkbd and other usb devices driver when the asynchronous interrupt processing is supported. Signed-off-by: Zhang Wei <wei.zhang@freescale.com
-rw-r--r--README3
-rw-r--r--common/usb_kbd.c6
-rw-r--r--include/usb.h1
3 files changed, 9 insertions, 1 deletions
diff --git a/README b/README
index f9c1978c3b..294f0c1dce 100644
--- a/README
+++ b/README
@@ -901,6 +901,9 @@ The following options need to be configured:
CONFIG_USB_CONFIG
for differential drivers: 0x00001000
for single ended drivers: 0x00005000
+ CFG_USB_EVENT_POLL
+ May be defined to allow interrupt polling
+ instead of using asynchronous interrupts
- USB Device:
Define the below if you wish to use the USB console.
diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index 56c21660fa..aec558ad20 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -129,7 +129,11 @@ static int usb_kbd_testc(void)
static int usb_kbd_getc(void)
{
char c;
- while(usb_in_pointer==usb_out_pointer);
+ while(usb_in_pointer==usb_out_pointer) {
+#ifdef CFG_USB_EVENT_POLL
+ usb_event_poll();
+#endif
+ }
if((usb_out_pointer+1)==USB_KBD_BUFFER_LEN)
usb_out_pointer=0;
else
diff --git a/include/usb.h b/include/usb.h
index 504ccc40fc..4e1539fa88 100644
--- a/include/usb.h
+++ b/include/usb.h
@@ -180,6 +180,7 @@ int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
int transfer_len,struct devrequest *setup);
int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
int transfer_len, int interval);
+void usb_event_poll(void);
/* Defines */
#define USB_UHCI_VEND_ID 0x8086