|
@@ -1008,7 +1008,8 @@ static const MemoryRegionOps ioportF0_io_ops = {
|
|
|
},
|
|
|
};
|
|
|
|
|
|
-static void pc_superio_init(ISABus *isa_bus, bool create_fdctrl, bool no_vmport)
|
|
|
+static void pc_superio_init(ISABus *isa_bus, bool create_fdctrl,
|
|
|
+ bool create_i8042, bool no_vmport)
|
|
|
{
|
|
|
int i;
|
|
|
DriveInfo *fd[MAX_FD];
|
|
@@ -1030,6 +1031,10 @@ static void pc_superio_init(ISABus *isa_bus, bool create_fdctrl, bool no_vmport)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if (!create_i8042) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
i8042 = isa_create_simple(isa_bus, "i8042");
|
|
|
if (!no_vmport) {
|
|
|
isa_create_simple(isa_bus, TYPE_VMPORT);
|
|
@@ -1125,7 +1130,8 @@ void pc_basic_device_init(struct PCMachineState *pcms,
|
|
|
i8257_dma_init(isa_bus, 0);
|
|
|
|
|
|
/* Super I/O */
|
|
|
- pc_superio_init(isa_bus, create_fdctrl, pcms->vmport != ON_OFF_AUTO_ON);
|
|
|
+ pc_superio_init(isa_bus, create_fdctrl, pcms->i8042_enabled,
|
|
|
+ pcms->vmport != ON_OFF_AUTO_ON);
|
|
|
}
|
|
|
|
|
|
void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus)
|
|
@@ -1506,6 +1512,20 @@ static void pc_machine_set_hpet(Object *obj, bool value, Error **errp)
|
|
|
pcms->hpet_enabled = value;
|
|
|
}
|
|
|
|
|
|
+static bool pc_machine_get_i8042(Object *obj, Error **errp)
|
|
|
+{
|
|
|
+ PCMachineState *pcms = PC_MACHINE(obj);
|
|
|
+
|
|
|
+ return pcms->i8042_enabled;
|
|
|
+}
|
|
|
+
|
|
|
+static void pc_machine_set_i8042(Object *obj, bool value, Error **errp)
|
|
|
+{
|
|
|
+ PCMachineState *pcms = PC_MACHINE(obj);
|
|
|
+
|
|
|
+ pcms->i8042_enabled = value;
|
|
|
+}
|
|
|
+
|
|
|
static bool pc_machine_get_default_bus_bypass_iommu(Object *obj, Error **errp)
|
|
|
{
|
|
|
PCMachineState *pcms = PC_MACHINE(obj);
|
|
@@ -1616,6 +1636,7 @@ static void pc_machine_initfn(Object *obj)
|
|
|
pcms->smbus_enabled = true;
|
|
|
pcms->sata_enabled = true;
|
|
|
pcms->pit_enabled = true;
|
|
|
+ pcms->i8042_enabled = true;
|
|
|
pcms->max_fw_size = 8 * MiB;
|
|
|
#ifdef CONFIG_HPET
|
|
|
pcms->hpet_enabled = true;
|
|
@@ -1744,6 +1765,9 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
|
|
|
object_class_property_add_bool(oc, "hpet",
|
|
|
pc_machine_get_hpet, pc_machine_set_hpet);
|
|
|
|
|
|
+ object_class_property_add_bool(oc, PC_MACHINE_I8042,
|
|
|
+ pc_machine_get_i8042, pc_machine_set_i8042);
|
|
|
+
|
|
|
object_class_property_add_bool(oc, "default-bus-bypass-iommu",
|
|
|
pc_machine_get_default_bus_bypass_iommu,
|
|
|
pc_machine_set_default_bus_bypass_iommu);
|