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>
This commit is contained in:
Kevin Cody-Little 2018-05-09 14:25:44 -04:00 committed by Patrick Georgi
parent 06d23234f3
commit c09840020b
1 changed files with 13 additions and 0 deletions

View File

@ -29,6 +29,7 @@
#include <pc80/i8254.h> #include <pc80/i8254.h>
#include <pc80/i8259.h> #include <pc80/i8259.h>
#include "hudson.h" #include "hudson.h"
#include "pci_devs.h"
static void lpc_init(device_t dev) 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); 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) unsigned long acpi_fill_mcfg(unsigned long current)
{ {
/* Just a dummy */ /* Just a dummy */
@ -338,6 +350,7 @@ static struct device_operations lpc_ops = {
.init = lpc_init, .init = lpc_init,
.scan_bus = scan_lpc_bus, .scan_bus = scan_lpc_bus,
.ops_pci = &lops_pci, .ops_pci = &lops_pci,
.acpi_name = lpc_acpi_name,
}; };
static const struct pci_driver lpc_driver __pci_driver = { static const struct pci_driver lpc_driver __pci_driver = {
.ops = &lpc_ops, .ops = &lpc_ops,