diff options
author | Patrick Georgi <patrick.georgi@coresystems.de> | 2008-10-16 19:20:51 +0000 |
---|---|---|
committer | Patrick Georgi <patrick.georgi@coresystems.de> | 2008-10-16 19:20:51 +0000 |
commit | 4727c0744615d7b49c843197433937721ce9acd1 (patch) | |
tree | 72d31d16bb06950a574b11759d61e620c3be9f46 /payloads/libpayload/include/usb | |
parent | b1b071fe17dd472192de201e463ce3d5811a2957 (diff) |
- reduced memory requirements a lot (from >100kb/controller to
560bytes/controller)
- no need for the client of libpayload to implement
usbdisk_{create,remove}, just because USB was compiled in.
- usb hub support compiles, and works for some trivial cases (no device
detach, trivial power management)
- usb keyboard support works in qemu, though there are reports that it
doesn't work on real hardware yet.
- usb keyboard is integrated in both libc-getchar() and curses, if
CONFIG_USB_HID is enabled
Signed-off-by: Patrick Georgi <patrick.georgi@coresystems.de>
Acked-by: Jordan Crouse <jordan.crouse@amd.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3662 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'payloads/libpayload/include/usb')
-rw-r--r-- | payloads/libpayload/include/usb/usb.h | 7 | ||||
-rw-r--r-- | payloads/libpayload/include/usb/usbdisk.h | 4 |
2 files changed, 8 insertions, 3 deletions
diff --git a/payloads/libpayload/include/usb/usb.h b/payloads/libpayload/include/usb/usb.h index 1500b75a1e..d06e8077db 100644 --- a/payloads/libpayload/include/usb/usb.h +++ b/payloads/libpayload/include/usb/usb.h @@ -114,7 +114,7 @@ struct usbdev_hc { struct usbdev_hc *next; pcidev_t bus_address; u32 reg_base; - usbdev_t devices[128]; // dev 0 is root hub, 127 is last addressable + usbdev_t *devices[128]; // dev 0 is root hub, 127 is last addressable void (*start) (hci_t *controller); void (*stop) (hci_t *controller); void (*reset) (hci_t *controller); @@ -124,6 +124,9 @@ struct usbdev_hc { int (*bulk) (endpoint_t *ep, int size, u8 *data, int finalize); int (*control) (usbdev_t *dev, pid_t pid, int dr_length, void *devreq, int data_length, u8 *data); + void* (*create_intr_queue) (endpoint_t *ep, int reqsize, int reqcount, int reqtiming); + void (*destroy_intr_queue) (endpoint_t *ep, void *queue); + u8* (*poll_intr_queue) (void *queue); void *instance; }; @@ -221,4 +224,6 @@ gen_bmRequestType (dev_req_dir dir, dev_req_type type, dev_req_recp recp) return (dir << 7) | (type << 5) | recp; } +void usb_detach_device(hci_t *controller, int devno); +int usb_attach_device(hci_t *controller, int hubaddress, int port, int lowspeed); #endif diff --git a/payloads/libpayload/include/usb/usbdisk.h b/payloads/libpayload/include/usb/usbdisk.h index 3ac24631ac..3eb2f627a8 100644 --- a/payloads/libpayload/include/usb/usbdisk.h +++ b/payloads/libpayload/include/usb/usbdisk.h @@ -38,7 +38,7 @@ * * @param dev descriptor for the USB storage device */ -void usbdisk_create (usbdev_t *dev); +void __attribute__((weak)) usbdisk_create (usbdev_t *dev); /** * To be implemented by libpayload-client. It's called by the USB stack @@ -46,6 +46,6 @@ void usbdisk_create (usbdev_t *dev); * * @param dev descriptor for the USB storage device */ -void usbdisk_remove (usbdev_t *dev); +void __attribute__((weak)) usbdisk_remove (usbdev_t *dev); #endif |