pc: acpi: piix4: move remaining PCI hotplug bits 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
							
								
									196e213783
								
							
						
					
					
						commit
						b616ec4d6f
					
				@ -1637,6 +1637,48 @@ static void build_piix4_isa_bridge(Aml *table)
 | 
			
		||||
    aml_append(table, scope);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void build_piix4_pci_hotplug(Aml *table)
 | 
			
		||||
{
 | 
			
		||||
    Aml *scope;
 | 
			
		||||
    Aml *field;
 | 
			
		||||
    Aml *method;
 | 
			
		||||
 | 
			
		||||
    scope =  aml_scope("_SB.PCI0");
 | 
			
		||||
 | 
			
		||||
    aml_append(scope,
 | 
			
		||||
        aml_operation_region("PCST", AML_SYSTEM_IO, 0xae00, 0x08));
 | 
			
		||||
    field = aml_field("PCST", AML_DWORD_ACC, AML_NOLOCK, AML_WRITE_AS_ZEROS);
 | 
			
		||||
    aml_append(field, aml_named_field("PCIU", 32));
 | 
			
		||||
    aml_append(field, aml_named_field("PCID", 32));
 | 
			
		||||
    aml_append(scope, field);
 | 
			
		||||
 | 
			
		||||
    aml_append(scope,
 | 
			
		||||
        aml_operation_region("SEJ", AML_SYSTEM_IO, 0xae08, 0x04));
 | 
			
		||||
    field = aml_field("SEJ", AML_DWORD_ACC, AML_NOLOCK, AML_WRITE_AS_ZEROS);
 | 
			
		||||
    aml_append(field, aml_named_field("B0EJ", 32));
 | 
			
		||||
    aml_append(scope, field);
 | 
			
		||||
 | 
			
		||||
    aml_append(scope,
 | 
			
		||||
        aml_operation_region("BNMR", AML_SYSTEM_IO, 0xae10, 0x04));
 | 
			
		||||
    field = aml_field("BNMR", AML_DWORD_ACC, AML_NOLOCK, AML_WRITE_AS_ZEROS);
 | 
			
		||||
    aml_append(field, aml_named_field("BNUM", 32));
 | 
			
		||||
    aml_append(scope, field);
 | 
			
		||||
 | 
			
		||||
    aml_append(scope, aml_mutex("BLCK", 0));
 | 
			
		||||
 | 
			
		||||
    method = aml_method("PCEJ", 2, AML_NOTSERIALIZED);
 | 
			
		||||
    aml_append(method, aml_acquire(aml_name("BLCK"), 0xFFFF));
 | 
			
		||||
    aml_append(method, aml_store(aml_arg(0), aml_name("BNUM")));
 | 
			
		||||
    aml_append(method,
 | 
			
		||||
        aml_store(aml_shiftleft(aml_int(1), aml_arg(1)), aml_name("B0EJ")));
 | 
			
		||||
    aml_append(method, aml_release(aml_name("BLCK")));
 | 
			
		||||
    aml_append(method, aml_return(aml_int(0)));
 | 
			
		||||
    aml_append(scope, method);
 | 
			
		||||
 | 
			
		||||
    aml_append(table, scope);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
build_ssdt(GArray *table_data, GArray *linker,
 | 
			
		||||
           AcpiCpuInfo *cpu, AcpiPmInfo *pm, AcpiMiscInfo *misc,
 | 
			
		||||
@ -1663,6 +1705,7 @@ build_ssdt(GArray *table_data, GArray *linker,
 | 
			
		||||
        build_piix4_pm(ssdt);
 | 
			
		||||
        build_piix4_isa_bridge(ssdt);
 | 
			
		||||
        build_isa_devices_aml(ssdt);
 | 
			
		||||
        build_piix4_pci_hotplug(ssdt);
 | 
			
		||||
        build_piix4_pci0_int(ssdt);
 | 
			
		||||
    } else {
 | 
			
		||||
        build_hpet_aml(ssdt);
 | 
			
		||||
 | 
			
		||||
@ -38,44 +38,4 @@ DefinitionBlock (
 | 
			
		||||
//            External(PX13, DeviceObj)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
/****************************************************************
 | 
			
		||||
 * PCI hotplug
 | 
			
		||||
 ****************************************************************/
 | 
			
		||||
 | 
			
		||||
    Scope(\_SB.PCI0) {
 | 
			
		||||
        OperationRegion(PCST, SystemIO, 0xae00, 0x08)
 | 
			
		||||
        Field(PCST, DWordAcc, NoLock, WriteAsZeros) {
 | 
			
		||||
            PCIU, 32,
 | 
			
		||||
            PCID, 32,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        OperationRegion(SEJ, SystemIO, 0xae08, 0x04)
 | 
			
		||||
        Field(SEJ, DWordAcc, NoLock, WriteAsZeros) {
 | 
			
		||||
            B0EJ, 32,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        OperationRegion(BNMR, SystemIO, 0xae10, 0x04)
 | 
			
		||||
        Field(BNMR, DWordAcc, NoLock, WriteAsZeros) {
 | 
			
		||||
            BNUM, 32,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /* Lock to protect access to fields above. */
 | 
			
		||||
        Mutex(BLCK, 0)
 | 
			
		||||
 | 
			
		||||
        /* Methods called by bulk generated PCI devices below */
 | 
			
		||||
 | 
			
		||||
        /* Methods called by hotplug devices */
 | 
			
		||||
        Method(PCEJ, 2, NotSerialized) {
 | 
			
		||||
            // _EJ0 method - eject callback
 | 
			
		||||
            Acquire(BLCK, 0xFFFF)
 | 
			
		||||
            Store(Arg0, BNUM)
 | 
			
		||||
            Store(ShiftLeft(1, Arg1), B0EJ)
 | 
			
		||||
            Release(BLCK)
 | 
			
		||||
            Return (0x0)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /* Hotplug notification method supplied by SSDT */
 | 
			
		||||
        External(\_SB.PCI0.PCNT, MethodObj)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user