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);
 | 
					    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
 | 
					static void
 | 
				
			||||||
build_ssdt(GArray *table_data, GArray *linker,
 | 
					build_ssdt(GArray *table_data, GArray *linker,
 | 
				
			||||||
           AcpiCpuInfo *cpu, AcpiPmInfo *pm, AcpiMiscInfo *misc,
 | 
					           AcpiCpuInfo *cpu, AcpiPmInfo *pm, AcpiMiscInfo *misc,
 | 
				
			||||||
@ -1663,6 +1705,7 @@ build_ssdt(GArray *table_data, GArray *linker,
 | 
				
			|||||||
        build_piix4_pm(ssdt);
 | 
					        build_piix4_pm(ssdt);
 | 
				
			||||||
        build_piix4_isa_bridge(ssdt);
 | 
					        build_piix4_isa_bridge(ssdt);
 | 
				
			||||||
        build_isa_devices_aml(ssdt);
 | 
					        build_isa_devices_aml(ssdt);
 | 
				
			||||||
 | 
					        build_piix4_pci_hotplug(ssdt);
 | 
				
			||||||
        build_piix4_pci0_int(ssdt);
 | 
					        build_piix4_pci0_int(ssdt);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        build_hpet_aml(ssdt);
 | 
					        build_hpet_aml(ssdt);
 | 
				
			||||||
 | 
				
			|||||||
@ -38,44 +38,4 @@ DefinitionBlock (
 | 
				
			|||||||
//            External(PX13, DeviceObj)
 | 
					//            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