diff options
Diffstat (limited to 'hw/usb.h')
-rw-r--r-- | hw/usb.h | 28 |
1 files changed, 13 insertions, 15 deletions
@@ -24,6 +24,7 @@ #include "block.h" #include "qdev.h" +#include "sys-queue.h" #define USB_TOKEN_SETUP 0x2d #define USB_TOKEN_IN 0x69 /* device -> host */ @@ -132,6 +133,7 @@ struct USBDevice { int speed; uint8_t addr; char devname[32]; + int attached; int state; uint8_t setup_buf[8]; @@ -191,7 +193,7 @@ struct USBPort { usb_attachfn attach; void *opaque; int index; /* internal port index, may be used with the opaque */ - struct USBPort *next; /* Used internally by qemu. */ + TAILQ_ENTRY(USBPort) next; }; typedef void USBCallback(USBPacket * packet, void *opaque); @@ -236,25 +238,17 @@ static inline void usb_cancel_packet(USBPacket * p) p->cancel_cb(p, p->cancel_opaque); } -int usb_device_add_dev(USBDevice *dev); -int usb_device_del_addr(int bus_num, int addr); void usb_attach(USBPort *port, USBDevice *dev); int usb_generic_handle_packet(USBDevice *s, USBPacket *p); int set_usb_string(uint8_t *buf, const char *str); void usb_send_msg(USBDevice *dev, int msg); -/* usb hub */ -USBDevice *usb_hub_init(int nb_ports); - /* usb-linux.c */ USBDevice *usb_host_device_open(const char *devname); int usb_host_device_close(const char *devname); void usb_host_info(Monitor *mon); /* usb-hid.c */ -USBDevice *usb_mouse_init(void); -USBDevice *usb_tablet_init(void); -USBDevice *usb_keyboard_init(void); void usb_hid_datain_cb(USBDevice *dev, void *opaque, void (*datain)(void *)); /* usb-msd.c */ @@ -267,17 +261,11 @@ USBDevice *usb_net_init(NICInfo *nd); /* usb-bt.c */ USBDevice *usb_bt_init(HCIInfo *hci); -/* usb-wacom.c */ -USBDevice *usb_wacom_init(void); - /* usb-serial.c */ USBDevice *usb_serial_init(const char *filename); /* usb ports of the VM */ -void qemu_register_usb_port(USBPort *port, void *opaque, int index, - usb_attachfn attach); - #define VM_USB_HUB_SIZE 8 /* usb-musb.c */ @@ -319,4 +307,14 @@ USBBus *usb_bus_new(DeviceState *host); USBBus *usb_bus_find(int busnr); void usb_qdev_register(USBDeviceInfo *info); void usb_qdev_register_many(USBDeviceInfo *info); +USBDevice *usb_create(USBBus *bus, const char *name); USBDevice *usb_create_simple(USBBus *bus, const char *name); +void usb_register_port(USBBus *bus, USBPort *port, void *opaque, int index, + usb_attachfn attach); +int usb_device_attach(USBDevice *dev); +int usb_device_delete_addr(int busnr, int addr); + +static inline USBBus *usb_bus_from_device(USBDevice *d) +{ + return DO_UPCAST(USBBus, qbus, d->qdev.parent_bus); +} |