diff options
author | Blue Swirl <blauwirbel@gmail.com> | 2009-09-12 06:19:16 +0000 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2009-09-12 06:19:16 +0000 |
commit | 620150dc9c1827cdddfa64a0fada7af5f7ee405b (patch) | |
tree | 4cadb970db1bb49894dcc3540a03f0bcbab0f2c2 /usb-bsd.c | |
parent | 15cc9235840a22c289edbe064a9b3c19c5f49896 (diff) |
Try to fix BSD breakage by 806b60248218bd5f74a8b070f5a99a864e8e51c6
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'usb-bsd.c')
-rw-r--r-- | usb-bsd.c | 42 |
1 files changed, 32 insertions, 10 deletions
@@ -63,6 +63,7 @@ typedef struct USBHostDevice { } USBHostDevice; +#if 0 static int ensure_ep_open(USBHostDevice *dev, int ep, int mode) { char buf[32]; @@ -110,6 +111,7 @@ static void ensure_eps_closed(USBHostDevice *dev) epnum++; } } +#endif static void usb_host_handle_reset(USBDevice *dev) { @@ -118,6 +120,7 @@ static void usb_host_handle_reset(USBDevice *dev) #endif } +#if 0 /* XXX: * -check device states against transfer requests * and return appropriate response @@ -275,6 +278,7 @@ static int usb_host_handle_data(USBDevice *dev, USBPacket *p) return ret; } } +#endif static void usb_host_handle_destroy(USBDevice *opaque) { @@ -293,9 +297,15 @@ static void usb_host_handle_destroy(USBDevice *opaque) qemu_free(s); } +static int usb_host_initfn(USBDevice *dev) +{ + return 0; +} + USBDevice *usb_host_device_open(const char *devname) { struct usb_device_info bus_info, dev_info; + USBDevice *d = NULL; USBHostDevice *dev; char ctlpath[PATH_MAX + 1]; char buspath[PATH_MAX + 1]; @@ -343,9 +353,6 @@ USBDevice *usb_host_device_open(const char *devname) } if (dfd >= 0) { - dev = qemu_mallocz(sizeof(USBHostDevice)); - dev->devfd = dfd; - if (ioctl(dfd, USB_GET_DEVICEINFO, &dev_info) < 0) { #ifdef DEBUG printf("usb_host_device_open: failed to grab device info - %s\n", @@ -354,18 +361,14 @@ USBDevice *usb_host_device_open(const char *devname) goto fail; } + d = usb_create(NULL /* FIXME */, "USB Host Device"); + dev = DO_UPCAST(USBHostDevice, dev, d); + if (dev_info.udi_speed == 1) dev->dev.speed = USB_SPEED_LOW - 1; else dev->dev.speed = USB_SPEED_FULL - 1; - dev->dev.handle_packet = usb_generic_handle_packet; - - dev->dev.handle_reset = usb_host_handle_reset; - dev->dev.handle_control = usb_host_handle_control; - dev->dev.handle_data = usb_host_handle_data; - dev->dev.handle_destroy = usb_host_handle_destroy; - if (strncmp(dev_info.udi_product, "product", 7) != 0) pstrcpy(dev->dev.devname, sizeof(dev->dev.devname), dev_info.udi_product); @@ -389,6 +392,25 @@ fail: return NULL; } +static struct USBDeviceInfo usb_host_dev_info = { + .qdev.name = "USB Host Device", + .qdev.size = sizeof(USBHostDevice), + .init = usb_host_initfn, + .handle_packet = usb_generic_handle_packet, + .handle_reset = usb_host_handle_reset, +#if 0 + .handle_control = usb_host_handle_control, + .handle_data = usb_host_handle_data, +#endif + .handle_destroy = usb_host_handle_destroy, +}; + +static void usb_host_register_devices(void) +{ + usb_qdev_register(&usb_host_dev_info); +} +device_init(usb_host_register_devices) + static int usb_host_scan(void *opaque, USBScanFunc *func) { struct usb_device_info bus_info; |