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)
downloadu-boot-imx-fdcfaa1b02268b2899e374b35adf936c911a47eb.zip
u-boot-imx-fdcfaa1b02268b2899e374b35adf936c911a47eb.tar.gz
u-boot-imx-fdcfaa1b02268b2899e374b35adf936c911a47eb.tar.bz2
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 f9c1978..294f0c1 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 56c2166..aec558a 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 504ccc4..4e1539f 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