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/drivers/usb/usbhub.c | |
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/drivers/usb/usbhub.c')
-rw-r--r-- | payloads/libpayload/drivers/usb/usbhub.c | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/payloads/libpayload/drivers/usb/usbhub.c b/payloads/libpayload/drivers/usb/usbhub.c index ce1523302d..4625246e22 100644 --- a/payloads/libpayload/drivers/usb/usbhub.c +++ b/payloads/libpayload/drivers/usb/usbhub.c @@ -53,9 +53,7 @@ usb_hub_destroy (usbdev_t *dev) static void usb_hub_scanport (usbdev_t *dev, int port) { - int newdev; unsigned short buf[2]; - usbdev_t *newdev_t; get_status (dev, port, DR_PORT, 4, buf); int portstatus = ((buf[0] & 1) == 0); @@ -67,9 +65,7 @@ usb_hub_scanport (usbdev_t *dev, int port) int devno = HUB_INST (dev)->ports[port]; if (devno == -1) fatal ("FATAL: illegal devno!\n"); - dev->controller->devices[devno].destroy (&dev->controller-> - devices[devno]); - init_device_entry (dev->controller, devno); + usb_detach_device(dev->controller, devno); HUB_INST (dev)->ports[port] = -1; return; } @@ -80,17 +76,7 @@ usb_hub_scanport (usbdev_t *dev, int port) get_status (dev, port, DR_PORT, 4, buf); int lowspeed = (buf[0] >> 9) & 1; - newdev = set_address (dev->controller, lowspeed); - if (newdev == -1) - return; - newdev_t = &dev->controller->devices[newdev]; - - HUB_INST (dev)->ports[port] = newdev; - newdev_t->address = newdev; - newdev_t->hub = dev->address; - newdev_t->port = port; - // determine responsible driver - newdev_t->init (newdev_t); + HUB_INST (dev)->ports[port] = usb_attach_device(dev->controller, dev->address, port, lowspeed); } static int |