mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-18 06:58:54 +00:00
x86: acpi: Deduplicate acpi_fill_madt() implementation
In Baytrail and Quark support code acpi_fill_madt() is identical. Deduplicate its implementation by moving to lib/acpi_tables.c. At the same time mark acpi_fill_madt() with __weak attribute to keep a possibility to override it in platform code Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
2dcbef6f6c
commit
b156da91fb
3 changed files with 29 additions and 58 deletions
|
@ -11,8 +11,6 @@
|
||||||
#include <asm/acpi_s3.h>
|
#include <asm/acpi_s3.h>
|
||||||
#include <asm/acpi_table.h>
|
#include <asm/acpi_table.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/ioapic.h>
|
|
||||||
#include <asm/mpspec.h>
|
|
||||||
#include <asm/tables.h>
|
#include <asm/tables.h>
|
||||||
#include <asm/arch/global_nvs.h>
|
#include <asm/arch/global_nvs.h>
|
||||||
#include <asm/arch/iomap.h>
|
#include <asm/arch/iomap.h>
|
||||||
|
@ -141,33 +139,6 @@ void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
|
||||||
header->checksum = table_compute_checksum(fadt, header->length);
|
header->checksum = table_compute_checksum(fadt, header->length);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int acpi_create_madt_irq_overrides(u32 current)
|
|
||||||
{
|
|
||||||
struct acpi_madt_irqoverride *irqovr;
|
|
||||||
u16 sci_flags = MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_HIGH;
|
|
||||||
int length = 0;
|
|
||||||
|
|
||||||
irqovr = (void *)current;
|
|
||||||
length += acpi_create_madt_irqoverride(irqovr, 0, 0, 2, 0);
|
|
||||||
|
|
||||||
irqovr = (void *)(current + length);
|
|
||||||
length += acpi_create_madt_irqoverride(irqovr, 0, 9, 9, sci_flags);
|
|
||||||
|
|
||||||
return length;
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 acpi_fill_madt(u32 current)
|
|
||||||
{
|
|
||||||
current += acpi_create_madt_lapics(current);
|
|
||||||
|
|
||||||
current += acpi_create_madt_ioapic((struct acpi_madt_ioapic *)current,
|
|
||||||
io_apic_read(IO_APIC_ID) >> 24, IO_APIC_ADDR, 0);
|
|
||||||
|
|
||||||
current += acpi_create_madt_irq_overrides(current);
|
|
||||||
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
|
|
||||||
void acpi_create_gnvs(struct acpi_global_nvs *gnvs)
|
void acpi_create_gnvs(struct acpi_global_nvs *gnvs)
|
||||||
{
|
{
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
|
|
|
@ -6,8 +6,6 @@
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <asm/acpi_table.h>
|
#include <asm/acpi_table.h>
|
||||||
#include <asm/ioapic.h>
|
|
||||||
#include <asm/mpspec.h>
|
|
||||||
#include <asm/tables.h>
|
#include <asm/tables.h>
|
||||||
#include <asm/arch/global_nvs.h>
|
#include <asm/arch/global_nvs.h>
|
||||||
#include <asm/arch/iomap.h>
|
#include <asm/arch/iomap.h>
|
||||||
|
@ -136,33 +134,6 @@ void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
|
||||||
header->checksum = table_compute_checksum(fadt, header->length);
|
header->checksum = table_compute_checksum(fadt, header->length);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int acpi_create_madt_irq_overrides(u32 current)
|
|
||||||
{
|
|
||||||
struct acpi_madt_irqoverride *irqovr;
|
|
||||||
u16 sci_flags = MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_HIGH;
|
|
||||||
int length = 0;
|
|
||||||
|
|
||||||
irqovr = (void *)current;
|
|
||||||
length += acpi_create_madt_irqoverride(irqovr, 0, 0, 2, 0);
|
|
||||||
|
|
||||||
irqovr = (void *)(current + length);
|
|
||||||
length += acpi_create_madt_irqoverride(irqovr, 0, 9, 9, sci_flags);
|
|
||||||
|
|
||||||
return length;
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 acpi_fill_madt(u32 current)
|
|
||||||
{
|
|
||||||
current += acpi_create_madt_lapics(current);
|
|
||||||
|
|
||||||
current += acpi_create_madt_ioapic((struct acpi_madt_ioapic *)current,
|
|
||||||
io_apic_read(IO_APIC_ID) >> 24, IO_APIC_ADDR, 0);
|
|
||||||
|
|
||||||
current += acpi_create_madt_irq_overrides(current);
|
|
||||||
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
|
|
||||||
void acpi_create_gnvs(struct acpi_global_nvs *gnvs)
|
void acpi_create_gnvs(struct acpi_global_nvs *gnvs)
|
||||||
{
|
{
|
||||||
/* quark is a uni-processor */
|
/* quark is a uni-processor */
|
||||||
|
|
|
@ -15,7 +15,9 @@
|
||||||
#include <asm/acpi/global_nvs.h>
|
#include <asm/acpi/global_nvs.h>
|
||||||
#include <asm/acpi_table.h>
|
#include <asm/acpi_table.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
#include <asm/ioapic.h>
|
||||||
#include <asm/lapic.h>
|
#include <asm/lapic.h>
|
||||||
|
#include <asm/mpspec.h>
|
||||||
#include <asm/tables.h>
|
#include <asm/tables.h>
|
||||||
#include <asm/arch/global_nvs.h>
|
#include <asm/arch/global_nvs.h>
|
||||||
|
|
||||||
|
@ -241,6 +243,33 @@ int acpi_create_madt_lapic_nmi(struct acpi_madt_lapic_nmi *lapic_nmi,
|
||||||
return lapic_nmi->length;
|
return lapic_nmi->length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int acpi_create_madt_irq_overrides(u32 current)
|
||||||
|
{
|
||||||
|
struct acpi_madt_irqoverride *irqovr;
|
||||||
|
u16 sci_flags = MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_HIGH;
|
||||||
|
int length = 0;
|
||||||
|
|
||||||
|
irqovr = (void *)current;
|
||||||
|
length += acpi_create_madt_irqoverride(irqovr, 0, 0, 2, 0);
|
||||||
|
|
||||||
|
irqovr = (void *)(current + length);
|
||||||
|
length += acpi_create_madt_irqoverride(irqovr, 0, 9, 9, sci_flags);
|
||||||
|
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
|
__weak u32 acpi_fill_madt(u32 current)
|
||||||
|
{
|
||||||
|
current += acpi_create_madt_lapics(current);
|
||||||
|
|
||||||
|
current += acpi_create_madt_ioapic((struct acpi_madt_ioapic *)current,
|
||||||
|
io_apic_read(IO_APIC_ID) >> 24, IO_APIC_ADDR, 0);
|
||||||
|
|
||||||
|
current += acpi_create_madt_irq_overrides(current);
|
||||||
|
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
|
||||||
static void acpi_create_madt(struct acpi_madt *madt)
|
static void acpi_create_madt(struct acpi_madt *madt)
|
||||||
{
|
{
|
||||||
struct acpi_table_header *header = &(madt->header);
|
struct acpi_table_header *header = &(madt->header);
|
||||||
|
|
Loading…
Add table
Reference in a new issue