summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Cody-Little <kcodyjr@gmail.com>2018-05-09 14:25:44 -0400
committerPatrick Georgi <pgeorgi@google.com>2018-05-14 07:39:08 +0000
commitc09840020b55709f6f4e4857f6bad2fb0ff300d2 (patch)
tree9ddccacd8d6705a3b6ee95515095d4a432854ed3
parent06d23234f3ecda3a0be777599f693186c0976db1 (diff)
downloadcoreboot-c09840020b55709f6f4e4857f6bad2fb0ff300d2.tar.gz
coreboot-c09840020b55709f6f4e4857f6bad2fb0ff300d2.tar.bz2
coreboot-c09840020b55709f6f4e4857f6bad2fb0ff300d2.zip
agesa/hudson/southbridge: add acpi name reporting for lpc
Add an lpc_acpi_name function to report its namespace as "LIBR" rather than some fallback value which seems to vary. This repair is required for the LPC TPM device to register its presence without blowing up the table and preventing the payload from seeing the SATA device. Before change (but after other similar change to PCI0), the TPM device reported itself as: \_SB.PCI0.LPC0.TPM After change, the TPM device reports as: \_SB.PCI0.LIBR.TPM which is consistent with the tables AGESA generates. Change-Id: Ifa3a0e386cc00062855331e5f9d1c00d6541c238 Signed-off-by: Kevin Cody-Little <kcodyjr@gmail.com> Reviewed-on: https://review.coreboot.org/26205 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Nico Huber <nico.h@gmx.de>
-rw-r--r--src/southbridge/amd/agesa/hudson/lpc.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/southbridge/amd/agesa/hudson/lpc.c b/src/southbridge/amd/agesa/hudson/lpc.c
index 11660548e380..7ada83233918 100644
--- a/src/southbridge/amd/agesa/hudson/lpc.c
+++ b/src/southbridge/amd/agesa/hudson/lpc.c
@@ -29,6 +29,7 @@
#include <pc80/i8254.h>
#include <pc80/i8259.h>
#include "hudson.h"
+#include "pci_devs.h"
static void lpc_init(device_t dev)
{
@@ -318,6 +319,17 @@ static void hudson_lpc_enable_resources(device_t dev)
hudson_lpc_enable_childrens_resources(dev);
}
+static const char *lpc_acpi_name(const struct device *dev)
+{
+ if (dev->path.type != DEVICE_PATH_PCI)
+ return NULL;
+
+ if (dev->path.pci.devfn == LPC_DEVFN)
+ return "LIBR";
+
+ return NULL;
+}
+
unsigned long acpi_fill_mcfg(unsigned long current)
{
/* Just a dummy */
@@ -338,6 +350,7 @@ static struct device_operations lpc_ops = {
.init = lpc_init,
.scan_bus = scan_lpc_bus,
.ops_pci = &lops_pci,
+ .acpi_name = lpc_acpi_name,
};
static const struct pci_driver lpc_driver __pci_driver = {
.ops = &lpc_ops,