1*6f2bcd5fSPhilippe Mathieu-Daudé #include "qemu/osdep.h" 2*6f2bcd5fSPhilippe Mathieu-Daudé #include "hcd-uhci.h" 3*6f2bcd5fSPhilippe Mathieu-Daudé 4*6f2bcd5fSPhilippe Mathieu-Daudé static void usb_uhci_vt82c686b_realize(PCIDevice *dev, Error **errp) 5*6f2bcd5fSPhilippe Mathieu-Daudé { 6*6f2bcd5fSPhilippe Mathieu-Daudé UHCIState *s = UHCI(dev); 7*6f2bcd5fSPhilippe Mathieu-Daudé uint8_t *pci_conf = s->dev.config; 8*6f2bcd5fSPhilippe Mathieu-Daudé 9*6f2bcd5fSPhilippe Mathieu-Daudé /* USB misc control 1/2 */ 10*6f2bcd5fSPhilippe Mathieu-Daudé pci_set_long(pci_conf + 0x40, 0x00001000); 11*6f2bcd5fSPhilippe Mathieu-Daudé /* PM capability */ 12*6f2bcd5fSPhilippe Mathieu-Daudé pci_set_long(pci_conf + 0x80, 0x00020001); 13*6f2bcd5fSPhilippe Mathieu-Daudé /* USB legacy support */ 14*6f2bcd5fSPhilippe Mathieu-Daudé pci_set_long(pci_conf + 0xc0, 0x00002000); 15*6f2bcd5fSPhilippe Mathieu-Daudé 16*6f2bcd5fSPhilippe Mathieu-Daudé usb_uhci_common_realize(dev, errp); 17*6f2bcd5fSPhilippe Mathieu-Daudé } 18*6f2bcd5fSPhilippe Mathieu-Daudé 19*6f2bcd5fSPhilippe Mathieu-Daudé static UHCIInfo uhci_info[] = { 20*6f2bcd5fSPhilippe Mathieu-Daudé { 21*6f2bcd5fSPhilippe Mathieu-Daudé .name = "vt82c686b-usb-uhci", 22*6f2bcd5fSPhilippe Mathieu-Daudé .vendor_id = PCI_VENDOR_ID_VIA, 23*6f2bcd5fSPhilippe Mathieu-Daudé .device_id = PCI_DEVICE_ID_VIA_UHCI, 24*6f2bcd5fSPhilippe Mathieu-Daudé .revision = 0x01, 25*6f2bcd5fSPhilippe Mathieu-Daudé .irq_pin = 3, 26*6f2bcd5fSPhilippe Mathieu-Daudé .realize = usb_uhci_vt82c686b_realize, 27*6f2bcd5fSPhilippe Mathieu-Daudé .unplug = true, 28*6f2bcd5fSPhilippe Mathieu-Daudé } 29*6f2bcd5fSPhilippe Mathieu-Daudé }; 30*6f2bcd5fSPhilippe Mathieu-Daudé 31*6f2bcd5fSPhilippe Mathieu-Daudé static const TypeInfo vt82c686b_usb_uhci_type_info = { 32*6f2bcd5fSPhilippe Mathieu-Daudé .parent = TYPE_UHCI, 33*6f2bcd5fSPhilippe Mathieu-Daudé .name = "vt82c686b-usb-uhci", 34*6f2bcd5fSPhilippe Mathieu-Daudé .class_init = uhci_data_class_init, 35*6f2bcd5fSPhilippe Mathieu-Daudé .class_data = uhci_info, 36*6f2bcd5fSPhilippe Mathieu-Daudé }; 37*6f2bcd5fSPhilippe Mathieu-Daudé 38*6f2bcd5fSPhilippe Mathieu-Daudé static void vt82c686b_usb_uhci_register_types(void) 39*6f2bcd5fSPhilippe Mathieu-Daudé { 40*6f2bcd5fSPhilippe Mathieu-Daudé type_register_static(&vt82c686b_usb_uhci_type_info); 41*6f2bcd5fSPhilippe Mathieu-Daudé } 42*6f2bcd5fSPhilippe Mathieu-Daudé 43*6f2bcd5fSPhilippe Mathieu-Daudé type_init(vt82c686b_usb_uhci_register_types) 44