mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 16:53:55 -06:00
usb: tag standalone ehci as hotpluggable
Add a flag to EHCIPCIInfo saying whenever the controller supports companions or not. Make sure we only allow registering companions for ehci versions supporting that. Enable pci hotplug for the ehci variants not supporting companions. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
638ca939d8
commit
ec56214f6f
3 changed files with 18 additions and 3 deletions
|
@ -23,6 +23,7 @@ typedef struct EHCIPCIInfo {
|
|||
uint16_t vendor_id;
|
||||
uint16_t device_id;
|
||||
uint8_t revision;
|
||||
bool companion;
|
||||
} EHCIPCIInfo;
|
||||
|
||||
static int usb_ehci_pci_initfn(PCIDevice *dev)
|
||||
|
@ -71,6 +72,7 @@ static int usb_ehci_pci_initfn(PCIDevice *dev)
|
|||
|
||||
static void usb_ehci_pci_init(Object *obj)
|
||||
{
|
||||
DeviceClass *dc = OBJECT_GET_CLASS(DeviceClass, obj, TYPE_DEVICE);
|
||||
EHCIPCIState *i = PCI_EHCI(obj);
|
||||
EHCIState *s = &i->ehci;
|
||||
|
||||
|
@ -81,6 +83,10 @@ static void usb_ehci_pci_init(Object *obj)
|
|||
s->portscbase = 0x44;
|
||||
s->portnr = NB_PORTS;
|
||||
|
||||
if (!dc->hotpluggable) {
|
||||
s->companion_enable = true;
|
||||
}
|
||||
|
||||
usb_ehci_init(s, DEVICE(obj));
|
||||
}
|
||||
|
||||
|
@ -137,7 +143,6 @@ static void ehci_class_init(ObjectClass *klass, void *data)
|
|||
k->exit = usb_ehci_pci_exit;
|
||||
k->class_id = PCI_CLASS_SERIAL_USB;
|
||||
k->config_write = usb_ehci_pci_write_config;
|
||||
dc->hotpluggable = false;
|
||||
dc->vmsd = &vmstate_ehci_pci;
|
||||
dc->props = ehci_pci_properties;
|
||||
}
|
||||
|
@ -161,6 +166,9 @@ static void ehci_data_class_init(ObjectClass *klass, void *data)
|
|||
k->device_id = i->device_id;
|
||||
k->revision = i->revision;
|
||||
set_bit(DEVICE_CATEGORY_USB, dc->categories);
|
||||
if (i->companion) {
|
||||
dc->hotpluggable = false;
|
||||
}
|
||||
}
|
||||
|
||||
static struct EHCIPCIInfo ehci_pci_info[] = {
|
||||
|
@ -174,11 +182,13 @@ static struct EHCIPCIInfo ehci_pci_info[] = {
|
|||
.vendor_id = PCI_VENDOR_ID_INTEL,
|
||||
.device_id = PCI_DEVICE_ID_INTEL_82801I_EHCI1,
|
||||
.revision = 0x03,
|
||||
.companion = true,
|
||||
},{
|
||||
.name = "ich9-usb-ehci2", /* 00:1a.7 */
|
||||
.vendor_id = PCI_VENDOR_ID_INTEL,
|
||||
.device_id = PCI_DEVICE_ID_INTEL_82801I_EHCI2,
|
||||
.revision = 0x03,
|
||||
.companion = true,
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue