[nb|sb]/amd/[amdfam10|sb700]: Add LPC bridge ACPI names for NB/SB
Adds the necessary plumbing for acpi_device_path() to find the LPC
bridge on the AMD Family10h/15h northbridges and SB700 southbridge.
This is necessary for TPM support since the acpi path to the LPC bridge
doesn't match the built-in default in tpm.c
This is a port of GIT hash d8a2c1fb
by Tobias Diedrich.
BUG=https://ticket.coreboot.org/issues/102
Change-Id: I1c514e335e194b2864599e5419cfaee830b94e38
Signed-off-by: Timothy Pearson <tpearson@raptorengineering.com>
Reviewed-on: https://review.coreboot.org/19282
Tested-by: build bot (Jenkins)
Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
79a27ac8b8
commit
0f3a18ad28
|
@ -2,7 +2,7 @@
|
||||||
* This file is part of the coreboot project.
|
* This file is part of the coreboot project.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2016 Damien Zammit <damien@zamaudio.com>
|
* Copyright (C) 2016 Damien Zammit <damien@zamaudio.com>
|
||||||
* Copyright (C) 2015 Timothy Pearson <tpearson@raptorengineeringinc.com>, Raptor Engineering
|
* Copyright (C) 2015 - 2017 Timothy Pearson <tpearson@raptorengineering.com>, Raptor Engineering
|
||||||
* Copyright (C) 2007 Advanced Micro Devices, Inc.
|
* Copyright (C) 2007 Advanced Micro Devices, Inc.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -644,6 +644,13 @@ static void mcf0_control_init(struct device *dev)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)
|
||||||
|
static const char *amdfam10_northbridge_acpi_name(struct device *dev)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct device_operations northbridge_operations = {
|
static struct device_operations northbridge_operations = {
|
||||||
.read_resources = amdfam10_read_resources,
|
.read_resources = amdfam10_read_resources,
|
||||||
.set_resources = amdfam10_set_resources,
|
.set_resources = amdfam10_set_resources,
|
||||||
|
@ -653,6 +660,7 @@ static struct device_operations northbridge_operations = {
|
||||||
#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)
|
#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)
|
||||||
.write_acpi_tables = northbridge_write_acpi_tables,
|
.write_acpi_tables = northbridge_write_acpi_tables,
|
||||||
.acpi_fill_ssdt_generator = northbridge_acpi_write_vars,
|
.acpi_fill_ssdt_generator = northbridge_acpi_write_vars,
|
||||||
|
.acpi_name = amdfam10_northbridge_acpi_name,
|
||||||
#endif
|
#endif
|
||||||
.enable = 0,
|
.enable = 0,
|
||||||
.ops_pci = 0,
|
.ops_pci = 0,
|
||||||
|
@ -1302,6 +1310,16 @@ static int amdfam10_get_smbios_data(device_t dev, int *handle, unsigned long *cu
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)
|
||||||
|
static const char *amdfam10_domain_acpi_name(struct device *dev)
|
||||||
|
{
|
||||||
|
if (dev->path.type == DEVICE_PATH_DOMAIN)
|
||||||
|
return "PCI0";
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct device_operations pci_domain_ops = {
|
static struct device_operations pci_domain_ops = {
|
||||||
.read_resources = amdfam10_domain_read_resources,
|
.read_resources = amdfam10_domain_read_resources,
|
||||||
.set_resources = amdfam10_domain_set_resources,
|
.set_resources = amdfam10_domain_set_resources,
|
||||||
|
@ -1309,6 +1327,9 @@ static struct device_operations pci_domain_ops = {
|
||||||
.init = NULL,
|
.init = NULL,
|
||||||
.scan_bus = amdfam10_domain_scan_bus,
|
.scan_bus = amdfam10_domain_scan_bus,
|
||||||
.ops_pci_bus = pci_bus_default_ops,
|
.ops_pci_bus = pci_bus_default_ops,
|
||||||
|
#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)
|
||||||
|
.acpi_name = amdfam10_domain_acpi_name,
|
||||||
|
#endif
|
||||||
#if CONFIG_GENERATE_SMBIOS_TABLES
|
#if CONFIG_GENERATE_SMBIOS_TABLES
|
||||||
.get_smbios_data = amdfam10_get_smbios_data,
|
.get_smbios_data = amdfam10_get_smbios_data,
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -271,6 +271,17 @@ static void southbridge_acpi_fill_ssdt_generator(device_t device) {
|
||||||
amd_generate_powernow(ACPI_CPU_CONTROL, 6, 1);
|
amd_generate_powernow(ACPI_CPU_CONTROL, 6, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *lpc_acpi_name(struct device *dev) {
|
||||||
|
if (dev->path.type != DEVICE_PATH_PCI)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
switch (dev->path.pci.devfn) {
|
||||||
|
case PCI_DEVFN(0x14, 3):
|
||||||
|
return "LPC";
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -283,7 +294,8 @@ static struct device_operations lpc_ops = {
|
||||||
.set_resources = sb700_lpc_set_resources,
|
.set_resources = sb700_lpc_set_resources,
|
||||||
.enable_resources = sb700_lpc_enable_resources,
|
.enable_resources = sb700_lpc_enable_resources,
|
||||||
#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)
|
#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)
|
||||||
.write_acpi_tables = acpi_write_hpet,
|
.acpi_name = lpc_acpi_name,
|
||||||
|
.write_acpi_tables = acpi_write_hpet,
|
||||||
.acpi_fill_ssdt_generator = southbridge_acpi_fill_ssdt_generator,
|
.acpi_fill_ssdt_generator = southbridge_acpi_fill_ssdt_generator,
|
||||||
#endif
|
#endif
|
||||||
.init = lpc_init,
|
.init = lpc_init,
|
||||||
|
|
Loading…
Reference in New Issue