acpi: make fill_slit and fill_srat into arguments.

SLIT and SRAT are created this way only on amdk8 and amdfam10.
This saves the need of having a lot of dummies.

Change-Id: I76d042702209cd6d11ee78ac22cf9fe9d30d0ca5
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
Reviewed-on: http://review.coreboot.org/7052
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Vladimir Serbinenko 2014-10-11 23:45:40 +02:00
parent b4ae5fd107
commit 5e597572ef
57 changed files with 44 additions and 647 deletions

View File

@ -325,7 +325,8 @@ int acpi_create_srat_mem(acpi_srat_mem_t *mem, u8 node, u32 basek, u32 sizek,
} }
/* http://www.microsoft.com/whdc/system/sysinternals/sratdwn.mspx */ /* http://www.microsoft.com/whdc/system/sysinternals/sratdwn.mspx */
void acpi_create_srat(acpi_srat_t *srat) void acpi_create_srat(acpi_srat_t *srat,
unsigned long (*acpi_fill_srat)(unsigned long current))
{ {
acpi_header_t *header = &(srat->header); acpi_header_t *header = &(srat->header);
unsigned long current = (unsigned long)srat + sizeof(acpi_srat_t); unsigned long current = (unsigned long)srat + sizeof(acpi_srat_t);
@ -412,7 +413,8 @@ unsigned long acpi_create_dmar_drhd_ds_pci(unsigned long current, u8 segment,
} }
/* http://h21007.www2.hp.com/portal/download/files/unprot/Itanium/slit.pdf */ /* http://h21007.www2.hp.com/portal/download/files/unprot/Itanium/slit.pdf */
void acpi_create_slit(acpi_slit_t *slit) void acpi_create_slit(acpi_slit_t *slit,
unsigned long (*acpi_fill_slit)(unsigned long current))
{ {
acpi_header_t *header = &(slit->header); acpi_header_t *header = &(slit->header);
unsigned long current = (unsigned long)slit + sizeof(acpi_slit_t); unsigned long current = (unsigned long)slit + sizeof(acpi_slit_t);

View File

@ -489,8 +489,6 @@ unsigned long fw_cfg_acpi_tables(unsigned long start);
unsigned long write_acpi_tables(unsigned long addr); unsigned long write_acpi_tables(unsigned long addr);
unsigned long acpi_fill_madt(unsigned long current); unsigned long acpi_fill_madt(unsigned long current);
unsigned long acpi_fill_mcfg(unsigned long current); unsigned long acpi_fill_mcfg(unsigned long current);
unsigned long acpi_fill_srat(unsigned long current);
unsigned long acpi_fill_slit(unsigned long current);
#if !IS_ENABLED(CONFIG_PER_DEVICE_ACPI_TABLES) #if !IS_ENABLED(CONFIG_PER_DEVICE_ACPI_TABLES)
unsigned long acpi_fill_ssdt_generator(unsigned long current, unsigned long acpi_fill_ssdt_generator(unsigned long current,
const char *oem_table_id); const char *oem_table_id);
@ -527,9 +525,11 @@ int acpi_create_srat_mem(acpi_srat_mem_t *mem, u8 node, u32 basek,u32 sizek,
int acpi_create_mcfg_mmconfig(acpi_mcfg_mmconfig_t *mmconfig, u32 base, int acpi_create_mcfg_mmconfig(acpi_mcfg_mmconfig_t *mmconfig, u32 base,
u16 seg_nr, u8 start, u8 end); u16 seg_nr, u8 start, u8 end);
unsigned long acpi_create_srat_lapics(unsigned long current); unsigned long acpi_create_srat_lapics(unsigned long current);
void acpi_create_srat(acpi_srat_t *srat); void acpi_create_srat(acpi_srat_t *srat,
unsigned long (*acpi_fill_srat)(unsigned long current));
void acpi_create_slit(acpi_slit_t *slit); void acpi_create_slit(acpi_slit_t *slit,
unsigned long (*acpi_fill_slit)(unsigned long current));
#if ENV_RAMSTAGE #if ENV_RAMSTAGE
void acpi_create_hpet(acpi_hpet_t *hpet); void acpi_create_hpet(acpi_hpet_t *hpet);

View File

@ -30,18 +30,6 @@
#include <assert.h> #include <assert.h>
#include "bus.h" #include "bus.h"
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_madt(unsigned long current) unsigned long acpi_fill_madt(unsigned long current)
{ {
unsigned int irq_start = 0; unsigned int irq_start = 0;

View File

@ -73,15 +73,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -49,15 +49,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -198,12 +198,6 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_mcfg(unsigned long current) unsigned long acpi_fill_mcfg(unsigned long current)
{ {
device_t dev; device_t dev;
@ -221,9 +215,3 @@ unsigned long acpi_fill_mcfg(unsigned long current)
reg & 0xf0000000, 0x0, 0x0, 255); reg & 0xf0000000, 0x0, 0x0, 255);
return current; return current;
} }
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -118,18 +118,6 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}
#define ALIGN_CURRENT current = (ALIGN(current, 16)) #define ALIGN_CURRENT current = (ALIGN(current, 16))
unsigned long mainboard_write_acpi_tables(unsigned long start, acpi_rsdp_t *rsdp) unsigned long mainboard_write_acpi_tables(unsigned long start, acpi_rsdp_t *rsdp)
{ {

View File

@ -69,15 +69,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
acpi_update_thermal_table(gnvs); acpi_update_thermal_table(gnvs);
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -69,15 +69,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
acpi_update_thermal_table(gnvs); acpi_update_thermal_table(gnvs);
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -99,15 +99,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -74,15 +74,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
acpi_update_thermal_table(gnvs); acpi_update_thermal_table(gnvs);
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -93,15 +93,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -83,14 +83,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
gnvs->lids = 1; gnvs->lids = 1;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -110,15 +110,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -74,14 +74,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
gnvs->lids = 1; gnvs->lids = 1;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -102,15 +102,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -99,15 +99,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -80,14 +80,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
gnvs->xhci = XHCI_MODE; gnvs->xhci = XHCI_MODE;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -62,16 +62,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -112,15 +112,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -91,15 +91,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -52,15 +52,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -67,16 +67,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -92,14 +92,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
gnvs->chromeos.vbt2 = ACTIVE_ECFW_RO; gnvs->chromeos.vbt2 = ACTIVE_ECFW_RO;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -69,15 +69,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
/* Not implemented. */
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -62,15 +62,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -63,14 +63,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
acpi_update_thermal_table(gnvs); acpi_update_thermal_table(gnvs);
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -65,14 +65,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
acpi_update_thermal_table(gnvs); acpi_update_thermal_table(gnvs);
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -65,14 +65,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
acpi_update_thermal_table(gnvs); acpi_update_thermal_table(gnvs);
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -73,15 +73,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -77,15 +77,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -42,15 +42,3 @@ void acpi_create_gnvs(global_nvs_t * gnvs)
gnvs->did[3] = 0x80000410; gnvs->did[3] = 0x80000410;
gnvs->did[4] = 0x00000005; gnvs->did[4] = 0x00000005;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
/* Not implemented */
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -65,14 +65,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
acpi_update_thermal_table(gnvs); acpi_update_thermal_table(gnvs);
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -65,14 +65,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
acpi_update_thermal_table(gnvs); acpi_update_thermal_table(gnvs);
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -73,15 +73,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -43,14 +43,3 @@ void acpi_create_gnvs(global_nvs_t * gnvs)
gnvs->did[4] = 0x00000005; gnvs->did[4] = 0x00000005;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
/* Not implemented */
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -73,15 +73,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -77,15 +77,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -92,15 +92,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
gnvs->chromeos.vbt2 = ec_read(0xcb) ? ACTIVE_ECFW_RW : ACTIVE_ECFW_RO; gnvs->chromeos.vbt2 = ec_read(0xcb) ? ACTIVE_ECFW_RW : ACTIVE_ECFW_RO;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -93,14 +93,3 @@ void acpi_create_gnvs(global_nvs_t *gnvs)
gnvs->chromeos.vbt2 = ACTIVE_ECFW_RO; gnvs->chromeos.vbt2 = ACTIVE_ECFW_RO;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -98,15 +98,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
/* Not implemented. */
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT. */
return current;
}

View File

@ -44,15 +44,3 @@ unsigned long acpi_fill_madt(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}

View File

@ -811,18 +811,6 @@ unsigned long acpi_fill_hest(acpi_hest_t *hest)
return (unsigned long)current; return (unsigned long)current;
} }
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_slit(unsigned long current)
{
return current;
}
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_srat(unsigned long current)
{
return current;
}
static void northbridge_fill_ssdt_generator(void) static void northbridge_fill_ssdt_generator(void)
{ {
msr_t msr; msr_t msr;

View File

@ -907,19 +907,6 @@ static unsigned long agesa_write_acpi_tables(unsigned long current,
return current; return current;
} }
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_slit(unsigned long current)
{
return current;
}
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_srat(unsigned long current)
{
return current;
}
static struct device_operations northbridge_operations = { static struct device_operations northbridge_operations = {
.read_resources = nb_read_resources, .read_resources = nb_read_resources,
.set_resources = nb_set_resources, .set_resources = nb_set_resources,

View File

@ -501,18 +501,6 @@ unsigned long acpi_fill_hest(acpi_hest_t *hest)
return (unsigned long)current; return (unsigned long)current;
} }
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_slit(unsigned long current)
{
return current;
}
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_srat(unsigned long current)
{
return current;
}
static void northbridge_fill_ssdt_generator(void) static void northbridge_fill_ssdt_generator(void)
{ {
msr_t msr; msr_t msr;

View File

@ -477,18 +477,6 @@ unsigned long acpi_fill_hest(acpi_hest_t *hest)
return (unsigned long)current; return (unsigned long)current;
} }
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_slit(unsigned long current)
{
return current;
}
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_srat(unsigned long current)
{
return current;
}
static void northbridge_fill_ssdt_generator(void) static void northbridge_fill_ssdt_generator(void)
{ {
msr_t msr; msr_t msr;

View File

@ -476,18 +476,6 @@ unsigned long acpi_fill_hest(acpi_hest_t *hest)
return (unsigned long)current; return (unsigned long)current;
} }
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_slit(unsigned long current)
{
return current;
}
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_srat(unsigned long current)
{
return current;
}
static void northbridge_fill_ssdt_generator(void) static void northbridge_fill_ssdt_generator(void)
{ {
msr_t msr; msr_t msr;

View File

@ -477,18 +477,6 @@ unsigned long acpi_fill_hest(acpi_hest_t *hest)
return (unsigned long)current; return (unsigned long)current;
} }
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_slit(unsigned long current)
{
return current;
}
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_srat(unsigned long current)
{
return current;
}
static void northbridge_fill_ssdt_generator(void) static void northbridge_fill_ssdt_generator(void)
{ {
msr_t msr; msr_t msr;

View File

@ -109,7 +109,7 @@ static void set_srat_mem(void *gp, struct device *dev, struct resource *res)
state->current += acpi_create_srat_mem((acpi_srat_mem_t *)state->current, (res->index & 0xf), basek, sizek, 1); state->current += acpi_create_srat_mem((acpi_srat_mem_t *)state->current, (res->index & 0xf), basek, sizek, 1);
} }
unsigned long acpi_fill_srat(unsigned long current) static unsigned long acpi_fill_srat(unsigned long current)
{ {
struct acpi_srat_mem_state srat_mem_state; struct acpi_srat_mem_state srat_mem_state;
@ -130,7 +130,7 @@ unsigned long acpi_fill_srat(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current) static unsigned long acpi_fill_slit(unsigned long current)
{ {
/* Implement SLIT algorithm in BKDG Rev. 3.62 § 2.3.6.1 /* Implement SLIT algorithm in BKDG Rev. 3.62 § 2.3.6.1
* Fill the first 8 bytes with the node number, * Fill the first 8 bytes with the node number,
@ -342,7 +342,7 @@ unsigned long northbridge_write_acpi_tables(unsigned long current,
current = ALIGN(current, 8); current = ALIGN(current, 8);
printk(BIOS_DEBUG, "ACPI: * SRAT at %lx\n", current); printk(BIOS_DEBUG, "ACPI: * SRAT at %lx\n", current);
srat = (acpi_srat_t *) current; srat = (acpi_srat_t *) current;
acpi_create_srat(srat); acpi_create_srat(srat, acpi_fill_srat);
current += srat->header.length; current += srat->header.length;
acpi_add_table(rsdp, srat); acpi_add_table(rsdp, srat);
@ -350,7 +350,7 @@ unsigned long northbridge_write_acpi_tables(unsigned long current,
current = ALIGN(current, 8); current = ALIGN(current, 8);
printk(BIOS_DEBUG, "ACPI: * SLIT at %lx\n", current); printk(BIOS_DEBUG, "ACPI: * SLIT at %lx\n", current);
slit = (acpi_slit_t *) current; slit = (acpi_slit_t *) current;
acpi_create_slit(slit); acpi_create_slit(slit, acpi_fill_slit);
current += slit->header.length; current += slit->header.length;
acpi_add_table(rsdp, slit); acpi_add_table(rsdp, slit);

View File

@ -114,7 +114,7 @@ static void set_srat_mem(void *gp, struct device *dev, struct resource *res)
state->current += acpi_create_srat_mem((acpi_srat_mem_t *)state->current, (res->index & 0xf), basek, sizek, 1); state->current += acpi_create_srat_mem((acpi_srat_mem_t *)state->current, (res->index & 0xf), basek, sizek, 1);
} }
unsigned long acpi_fill_srat(unsigned long current) static unsigned long acpi_fill_srat(unsigned long current)
{ {
struct acpi_srat_mem_state srat_mem_state; struct acpi_srat_mem_state srat_mem_state;
@ -135,7 +135,7 @@ unsigned long acpi_fill_srat(unsigned long current)
return current; return current;
} }
unsigned long acpi_fill_slit(unsigned long current) static unsigned long acpi_fill_slit(unsigned long current)
{ {
/* need to find out the node num at first */ /* need to find out the node num at first */
/* fill the first 8 byte with that num */ /* fill the first 8 byte with that num */
@ -204,6 +204,35 @@ unsigned long acpi_fill_slit(unsigned long current)
return current; return current;
} }
unsigned long northbridge_write_acpi_tables(unsigned long start, acpi_rsdp_t *rsdp)
{
unsigned long current;
acpi_srat_t *srat;
acpi_slit_t *slit;
current = start;
/* Fills sysconf structure needed for SRAT and SLIT. */
get_bus_conf();
current = ALIGN(current, 16);
srat = (acpi_srat_t *) current;
printk(BIOS_DEBUG, "ACPI: * SRAT @ %p\n", srat);
acpi_create_srat(srat, acpi_fill_srat);
current += srat->header.length;
acpi_add_table(rsdp, srat);
/* SLIT */
current = ALIGN(current, 16);
slit = (acpi_slit_t *) current;
printk(BIOS_DEBUG, "ACPI: * SLIT @ %p\n", slit);
acpi_create_slit(slit, acpi_fill_slit);
current+=slit->header.length;
acpi_add_table(rsdp,slit);
return current;
}
static void k8acpi_write_HT(void) { static void k8acpi_write_HT(void) {
int i; int i;

View File

@ -22,5 +22,6 @@
#include <arch/acpigen.h> #include <arch/acpigen.h>
void k8acpi_write_vars(void); void k8acpi_write_vars(void);
unsigned long northbridge_write_acpi_tables(unsigned long start, acpi_rsdp_t *rsdp);
#endif #endif

View File

@ -579,37 +579,6 @@ static void mcf0_control_init(struct device *dev)
#endif #endif
} }
#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)
static unsigned long northbridge_write_acpi_tables(unsigned long start, acpi_rsdp_t *rsdp)
{
unsigned long current;
acpi_srat_t *srat;
acpi_slit_t *slit;
current = start;
/* Fills sysconf structure needed for SRAT and SLIT. */
get_bus_conf();
current = ALIGN(current, 16);
srat = (acpi_srat_t *) current;
printk(BIOS_DEBUG, "ACPI: * SRAT @ %p\n", srat);
acpi_create_srat(srat);
current += srat->header.length;
acpi_add_table(rsdp, srat);
/* SLIT */
current = ALIGN(current, 16);
slit = (acpi_slit_t *) current;
printk(BIOS_DEBUG, "ACPI: * SLIT @ %p\n", slit);
acpi_create_slit(slit);
current+=slit->header.length;
acpi_add_table(rsdp,slit);
return current;
}
#endif
static struct device_operations northbridge_operations = { static struct device_operations northbridge_operations = {
.read_resources = amdk8_read_resources, .read_resources = amdk8_read_resources,
.set_resources = amdk8_set_resources, .set_resources = amdk8_set_resources,

View File

@ -471,18 +471,6 @@ unsigned long acpi_fill_hest(acpi_hest_t *hest)
return (unsigned long)current; return (unsigned long)current;
} }
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_slit(unsigned long current)
{
return current;
}
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_srat(unsigned long current)
{
return current;
}
static void northbridge_fill_ssdt_generator(void) static void northbridge_fill_ssdt_generator(void)
{ {
msr_t msr; msr_t msr;

View File

@ -465,18 +465,6 @@ unsigned long acpi_fill_hest(acpi_hest_t *hest)
return (unsigned long)current; return (unsigned long)current;
} }
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_slit(unsigned long current)
{
return current;
}
/* Implemented with AGESA-specific code. Dummy to keep linker happy. */
unsigned long acpi_fill_srat(unsigned long current)
{
return current;
}
static void northbridge_fill_ssdt_generator(void) static void northbridge_fill_ssdt_generator(void)
{ {
msr_t msr; msr_t msr;

View File

@ -201,18 +201,6 @@ static void northbridge_enable(device_t dev)
{ {
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}
static struct pci_operations intel_pci_ops = { static struct pci_operations intel_pci_ops = {
.set_subsystem = intel_set_subsystem, .set_subsystem = intel_set_subsystem,
}; };

View File

@ -416,18 +416,6 @@ static void systemagent_init(struct device *dev)
set_power_limits(28); set_power_limits(28);
} }
unsigned long acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_srat(unsigned long current)
{
/* No NUMA, no SRAT */
return current;
}
static struct device_operations systemagent_ops = { static struct device_operations systemagent_ops = {
.read_resources = &systemagent_read_resources, .read_resources = &systemagent_read_resources,
.acpi_fill_ssdt_generator = &generate_cpu_entries, .acpi_fill_ssdt_generator = &generate_cpu_entries,

View File

@ -61,18 +61,6 @@ void generate_cpu_entries(void)
acpigen_pop_len(); acpigen_pop_len();
} }
unsigned long __attribute__((weak)) acpi_fill_slit(unsigned long current)
{
// Not implemented
return current;
}
unsigned long __attribute__((weak)) acpi_fill_srat(unsigned long current)
{
// Not implemented
return current;
}
unsigned long acpi_fill_mcfg(unsigned long current) unsigned long acpi_fill_mcfg(unsigned long current)
{ {
/* chipset doesn't have mmconfig */ /* chipset doesn't have mmconfig */