xref: /qemu/hw/usb/vt82c686-uhci-pci.c (revision 6f2bcd5fc84700b5eabfd58c08cbc61f1d7b5b6e)
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