[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:
		@@ -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,6 +294,7 @@ 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)
 | 
				
			||||||
 | 
						.acpi_name = lpc_acpi_name,
 | 
				
			||||||
	.write_acpi_tables = acpi_write_hpet,
 | 
						.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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user