Revision dc638fad hw/usb-uhci.c

b/hw/usb-uhci.c
1115 1115
    .wakeup = uhci_wakeup,
1116 1116
};
1117 1117

  
1118
static int usb_uhci_common_initfn(UHCIState *s)
1118
static int usb_uhci_common_initfn(PCIDevice *dev)
1119 1119
{
1120
    UHCIState *s = DO_UPCAST(UHCIState, dev, dev);
1120 1121
    uint8_t *pci_conf = s->dev.config;
1121 1122
    int i;
1122 1123

  
1123
    pci_conf[PCI_REVISION_ID] = 0x01; // revision number
1124 1124
    pci_conf[PCI_CLASS_PROG] = 0x00;
1125
    pci_config_set_class(pci_conf, PCI_CLASS_SERIAL_USB);
1126 1125
    /* TODO: reset value should be 0. */
1127 1126
    pci_conf[PCI_INTERRUPT_PIN] = 4; // interrupt pin 3
1128 1127
    pci_conf[0x60] = 0x10; // release number
......
1148 1147
    return 0;
1149 1148
}
1150 1149

  
1151
static int usb_uhci_piix3_initfn(PCIDevice *dev)
1152
{
1153
    UHCIState *s = DO_UPCAST(UHCIState, dev, dev);
1154
    uint8_t *pci_conf = s->dev.config;
1155

  
1156
    pci_config_set_vendor_id(pci_conf, PCI_VENDOR_ID_INTEL);
1157
    pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_INTEL_82371SB_2);
1158
    return usb_uhci_common_initfn(s);
1159
}
1160

  
1161
static int usb_uhci_piix4_initfn(PCIDevice *dev)
1162
{
1163
    UHCIState *s = DO_UPCAST(UHCIState, dev, dev);
1164
    uint8_t *pci_conf = s->dev.config;
1165

  
1166
    pci_config_set_vendor_id(pci_conf, PCI_VENDOR_ID_INTEL);
1167
    pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_INTEL_82371AB_2);
1168
    return usb_uhci_common_initfn(s);
1169
}
1170

  
1171 1150
static int usb_uhci_vt82c686b_initfn(PCIDevice *dev)
1172 1151
{
1173 1152
    UHCIState *s = DO_UPCAST(UHCIState, dev, dev);
1174 1153
    uint8_t *pci_conf = s->dev.config;
1175 1154

  
1176
    pci_config_set_vendor_id(pci_conf, PCI_VENDOR_ID_VIA);
1177
    pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_VIA_UHCI);
1178

  
1179 1155
    /* USB misc control 1/2 */
1180 1156
    pci_set_long(pci_conf + 0x40,0x00001000);
1181 1157
    /* PM capability */
......
1183 1159
    /* USB legacy support  */
1184 1160
    pci_set_long(pci_conf + 0xc0,0x00002000);
1185 1161

  
1186
    return usb_uhci_common_initfn(s);
1162
    return usb_uhci_common_initfn(dev);
1187 1163
}
1188 1164

  
1189 1165
static PCIDeviceInfo uhci_info[] = {
......
1191 1167
        .qdev.name    = "piix3-usb-uhci",
1192 1168
        .qdev.size    = sizeof(UHCIState),
1193 1169
        .qdev.vmsd    = &vmstate_uhci,
1194
        .init         = usb_uhci_piix3_initfn,
1170
        .init         = usb_uhci_common_initfn,
1171
        .vendor_id    = PCI_VENDOR_ID_INTEL,
1172
        .device_id    = PCI_DEVICE_ID_INTEL_82371SB_2,
1173
        .revision     = 0x01,
1174
        .class_id     = PCI_CLASS_SERIAL_USB,
1195 1175
    },{
1196 1176
        .qdev.name    = "piix4-usb-uhci",
1197 1177
        .qdev.size    = sizeof(UHCIState),
1198 1178
        .qdev.vmsd    = &vmstate_uhci,
1199
        .init         = usb_uhci_piix4_initfn,
1179
        .init         = usb_uhci_common_initfn,
1180
        .vendor_id    = PCI_VENDOR_ID_INTEL,
1181
        .device_id    = PCI_DEVICE_ID_INTEL_82371AB_2,
1182
        .revision     = 0x01,
1183
        .class_id     = PCI_CLASS_SERIAL_USB,
1200 1184
    },{
1201 1185
        .qdev.name    = "vt82c686b-usb-uhci",
1202 1186
        .qdev.size    = sizeof(UHCIState),
1203 1187
        .qdev.vmsd    = &vmstate_uhci,
1204 1188
        .init         = usb_uhci_vt82c686b_initfn,
1189
        .vendor_id    = PCI_VENDOR_ID_VIA,
1190
        .device_id    = PCI_DEVICE_ID_VIA_UHCI,
1191
        .revision     = 0x01,
1192
        .class_id     = PCI_CLASS_SERIAL_USB,
1205 1193
    },{
1206 1194
        /* end of list */
1207 1195
    }

Also available in: Unified diff