mirror of https://gitee.com/openkylin/qemu.git
pc: acpi: q35: move ISA bridge into SSDT
Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
78e1ad0509
commit
41f95a5200
|
@ -1633,8 +1633,21 @@ static void build_piix4_pci0_int(Aml *table)
|
||||||
|
|
||||||
static void build_q35_pci0_int(Aml *table)
|
static void build_q35_pci0_int(Aml *table)
|
||||||
{
|
{
|
||||||
|
Aml *field;
|
||||||
Aml *sb_scope = aml_scope("_SB");
|
Aml *sb_scope = aml_scope("_SB");
|
||||||
|
|
||||||
|
field = aml_field("PCI0.ISA.PIRQ", AML_BYTE_ACC, AML_NOLOCK, AML_PRESERVE);
|
||||||
|
aml_append(field, aml_named_field("PRQA", 8));
|
||||||
|
aml_append(field, aml_named_field("PRQB", 8));
|
||||||
|
aml_append(field, aml_named_field("PRQC", 8));
|
||||||
|
aml_append(field, aml_named_field("PRQD", 8));
|
||||||
|
aml_append(field, aml_reserved_field(0x20));
|
||||||
|
aml_append(field, aml_named_field("PRQE", 8));
|
||||||
|
aml_append(field, aml_named_field("PRQF", 8));
|
||||||
|
aml_append(field, aml_named_field("PRQG", 8));
|
||||||
|
aml_append(field, aml_named_field("PRQH", 8));
|
||||||
|
aml_append(sb_scope, field);
|
||||||
|
|
||||||
aml_append(sb_scope, build_irq_status_method());
|
aml_append(sb_scope, build_irq_status_method());
|
||||||
aml_append(sb_scope, build_iqcr_method(false));
|
aml_append(sb_scope, build_iqcr_method(false));
|
||||||
|
|
||||||
|
@ -1663,6 +1676,46 @@ static void build_q35_pci0_int(Aml *table)
|
||||||
aml_append(table, sb_scope);
|
aml_append(table, sb_scope);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void build_q35_isa_bridge(Aml *table)
|
||||||
|
{
|
||||||
|
Aml *dev;
|
||||||
|
Aml *scope;
|
||||||
|
Aml *field;
|
||||||
|
|
||||||
|
scope = aml_scope("_SB.PCI0");
|
||||||
|
dev = aml_device("ISA");
|
||||||
|
aml_append(dev, aml_name_decl("_ADR", aml_int(0x001F0000)));
|
||||||
|
|
||||||
|
/* ICH9 PCI to ISA irq remapping */
|
||||||
|
aml_append(dev, aml_operation_region("PIRQ", AML_PCI_CONFIG,
|
||||||
|
0x60, 0x0C));
|
||||||
|
|
||||||
|
aml_append(dev, aml_operation_region("LPCD", AML_PCI_CONFIG,
|
||||||
|
0x80, 0x02));
|
||||||
|
field = aml_field("LPCD", AML_ANY_ACC, AML_NOLOCK, AML_PRESERVE);
|
||||||
|
aml_append(field, aml_named_field("COMA", 3));
|
||||||
|
aml_append(field, aml_reserved_field(1));
|
||||||
|
aml_append(field, aml_named_field("COMB", 3));
|
||||||
|
aml_append(field, aml_reserved_field(1));
|
||||||
|
aml_append(field, aml_named_field("LPTD", 2));
|
||||||
|
aml_append(field, aml_reserved_field(2));
|
||||||
|
aml_append(field, aml_named_field("FDCD", 2));
|
||||||
|
aml_append(dev, field);
|
||||||
|
|
||||||
|
aml_append(dev, aml_operation_region("LPCE", AML_PCI_CONFIG,
|
||||||
|
0x82, 0x02));
|
||||||
|
/* enable bits */
|
||||||
|
field = aml_field("LPCE", AML_ANY_ACC, AML_NOLOCK, AML_PRESERVE);
|
||||||
|
aml_append(field, aml_named_field("CAEN", 1));
|
||||||
|
aml_append(field, aml_named_field("CBEN", 1));
|
||||||
|
aml_append(field, aml_named_field("LPEN", 1));
|
||||||
|
aml_append(field, aml_named_field("FDEN", 1));
|
||||||
|
aml_append(dev, field);
|
||||||
|
|
||||||
|
aml_append(scope, dev);
|
||||||
|
aml_append(table, scope);
|
||||||
|
}
|
||||||
|
|
||||||
static void build_piix4_pm(Aml *table)
|
static void build_piix4_pm(Aml *table)
|
||||||
{
|
{
|
||||||
Aml *dev;
|
Aml *dev;
|
||||||
|
@ -1790,6 +1843,7 @@ build_ssdt(GArray *table_data, GArray *linker,
|
||||||
build_piix4_pci0_int(ssdt);
|
build_piix4_pci0_int(ssdt);
|
||||||
} else {
|
} else {
|
||||||
build_hpet_aml(ssdt);
|
build_hpet_aml(ssdt);
|
||||||
|
build_q35_isa_bridge(ssdt);
|
||||||
build_isa_devices_aml(ssdt);
|
build_isa_devices_aml(ssdt);
|
||||||
build_q35_pci0_int(ssdt);
|
build_q35_pci0_int(ssdt);
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,39 +113,6 @@ DefinitionBlock (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************
|
|
||||||
* LPC ISA bridge
|
|
||||||
****************************************************************/
|
|
||||||
|
|
||||||
Scope(\_SB.PCI0) {
|
|
||||||
/* PCI D31:f0 LPC ISA bridge */
|
|
||||||
Device(ISA) {
|
|
||||||
Name (_ADR, 0x001F0000) // _ADR: Address
|
|
||||||
|
|
||||||
/* ICH9 PCI to ISA irq remapping */
|
|
||||||
OperationRegion(PIRQ, PCI_Config, 0x60, 0x0C)
|
|
||||||
|
|
||||||
OperationRegion(LPCD, PCI_Config, 0x80, 0x2)
|
|
||||||
Field(LPCD, AnyAcc, NoLock, Preserve) {
|
|
||||||
COMA, 3,
|
|
||||||
, 1,
|
|
||||||
COMB, 3,
|
|
||||||
|
|
||||||
Offset(0x01),
|
|
||||||
LPTD, 2,
|
|
||||||
, 2,
|
|
||||||
FDCD, 2
|
|
||||||
}
|
|
||||||
OperationRegion(LPCE, PCI_Config, 0x82, 0x2)
|
|
||||||
Field(LPCE, AnyAcc, NoLock, Preserve) {
|
|
||||||
CAEN, 1,
|
|
||||||
CBEN, 1,
|
|
||||||
LPEN, 1,
|
|
||||||
FDEN, 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************
|
/****************************************************************
|
||||||
* PCI IRQs
|
* PCI IRQs
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
@ -285,19 +252,6 @@ DefinitionBlock (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Field(PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) {
|
|
||||||
PRQA, 8,
|
|
||||||
PRQB, 8,
|
|
||||||
PRQC, 8,
|
|
||||||
PRQD, 8,
|
|
||||||
|
|
||||||
Offset(0x08),
|
|
||||||
PRQE, 8,
|
|
||||||
PRQF, 8,
|
|
||||||
PRQG, 8,
|
|
||||||
PRQH, 8
|
|
||||||
}
|
|
||||||
|
|
||||||
External(LNKA, DeviceObj)
|
External(LNKA, DeviceObj)
|
||||||
External(LNKB, DeviceObj)
|
External(LNKB, DeviceObj)
|
||||||
External(LNKC, DeviceObj)
|
External(LNKC, DeviceObj)
|
||||||
|
|
Loading…
Reference in New Issue