]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
Reland "x86: Move FACP table into separate functions""
authorSimon Glass <sjg@chromium.org>
Fri, 1 Sep 2023 17:27:09 +0000 (11:27 -0600)
committerBin Meng <bmeng@tinylab.org>
Thu, 21 Sep 2023 22:03:46 +0000 (06:03 +0800)
Each board has its own way of creating this table. Rather than calling the
acpi_create_fadt() function for each one from a common acpi_write_fadt()
function, just move the writer into the board-specific code.

Co-developed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
arch/x86/cpu/apollolake/acpi.c
arch/x86/cpu/baytrail/acpi.c
arch/x86/cpu/quark/acpi.c
arch/x86/cpu/tangier/acpi.c
arch/x86/include/asm/acpi_table.h
arch/x86/lib/acpi_table.c

index fd21c0b49684ebb156117f0965b221bc0f900320..16aaed7238ab289c0106fc2d0d9b0d13a2d45786 100644 (file)
@@ -146,16 +146,25 @@ void fill_fadt(struct acpi_fadt *fadt)
        fadt->x_pm_tmr_blk.addrl = IOMAP_ACPI_BASE + PM1_TMR;
 }
 
-void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
-                     void *dsdt)
+static int apl_write_fadt(struct acpi_ctx *ctx, const struct acpi_writer *entry)
 {
-       struct acpi_table_header *header = &fadt->header;
+       struct acpi_table_header *header;
+       struct acpi_fadt *fadt;
 
-       acpi_fadt_common(fadt, facs, dsdt);
+       fadt = ctx->current;
+       acpi_fadt_common(fadt, ctx->facs, ctx->dsdt);
        intel_acpi_fill_fadt(fadt);
        fill_fadt(fadt);
+       header = &fadt->header;
        header->checksum = table_compute_checksum(fadt, header->length);
+
+       acpi_add_table(ctx, fadt);
+
+       acpi_inc(ctx, sizeof(struct acpi_fadt));
+
+       return 0;
 }
+ACPI_WRITER(5fadt, "FADT", apl_write_fadt, 0);
 
 int apl_acpi_fill_dmar(struct acpi_ctx *ctx)
 {
index 07757b88a305461aa1dc9346d20f061d2019dbb3..4c526ff27310fd44a48b58e25e840431109e000c 100644 (file)
 #include <asm/arch/iomap.h>
 #include <dm/uclass-internal.h>
 
-void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
-                     void *dsdt)
+static int baytrail_write_fadt(struct acpi_ctx *ctx,
+                              const struct acpi_writer *entry)
 {
-       struct acpi_table_header *header = &(fadt->header);
+       struct acpi_table_header *header;
+       struct acpi_fadt *fadt;
+
+       fadt = ctx->current;
+       header = &fadt->header;
        u16 pmbase = ACPI_BASE_ADDRESS;
 
-       memset((void *)fadt, 0, sizeof(struct acpi_fadt));
+       memset(fadt, '\0', sizeof(struct acpi_fadt));
 
        acpi_fill_header(header, "FACP");
        header->length = sizeof(struct acpi_fadt);
        header->revision = 4;
 
-       fadt->firmware_ctrl = (u32)facs;
-       fadt->dsdt = (u32)dsdt;
+       fadt->firmware_ctrl = (u32)ctx->facs;
+       fadt->dsdt = (u32)ctx->dsdt;
        fadt->preferred_pm_profile = ACPI_PM_MOBILE;
        fadt->sci_int = 9;
        fadt->smi_cmd = 0;
@@ -75,9 +79,9 @@ void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
        fadt->reset_reg.addrh = 0;
        fadt->reset_value = SYS_RST | RST_CPU | FULL_RST;
 
-       fadt->x_firmware_ctl_l = (u32)facs;
+       fadt->x_firmware_ctl_l = (u32)ctx->facs;
        fadt->x_firmware_ctl_h = 0;
-       fadt->x_dsdt_l = (u32)dsdt;
+       fadt->x_dsdt_l = (u32)ctx->dsdt;
        fadt->x_dsdt_h = 0;
 
        fadt->x_pm1a_evt_blk.space_id = ACPI_ADDRESS_SPACE_IO;
@@ -137,7 +141,14 @@ void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
        fadt->x_gpe1_blk.addrh = 0x0;
 
        header->checksum = table_compute_checksum(fadt, header->length);
+
+       acpi_add_table(ctx, fadt);
+
+       acpi_inc(ctx, sizeof(struct acpi_fadt));
+
+       return 0;
 }
+ACPI_WRITER(5fadt, "FADT", baytrail_write_fadt, 0);
 
 int acpi_create_gnvs(struct acpi_global_nvs *gnvs)
 {
index 82b776ff65f69e3e775c574c065af8b56e84f744..92fa5bc30c36e3d9a2b34c855207143b74d3d8ac 100644 (file)
 #include <asm/arch/global_nvs.h>
 #include <asm/arch/iomap.h>
 
-void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
-                     void *dsdt)
+static int quark_write_fadt(struct acpi_ctx *ctx,
+                           const struct acpi_writer *entry)
 {
-       struct acpi_table_header *header = &(fadt->header);
        u16 pmbase = ACPI_PM1_BASE_ADDRESS;
+       struct acpi_table_header *header;
+       struct acpi_fadt *fadt;
 
-       memset((void *)fadt, 0, sizeof(struct acpi_fadt));
+       fadt = ctx->current;
+       header = &fadt->header;
+
+       memset(fadt, '\0', sizeof(struct acpi_fadt));
 
        acpi_fill_header(header, "FACP");
        header->length = sizeof(struct acpi_fadt);
        header->revision = 4;
 
-       fadt->firmware_ctrl = (u32)facs;
-       fadt->dsdt = (u32)dsdt;
+       fadt->firmware_ctrl = (u32)ctx->facs;
+       fadt->dsdt = (u32)ctx->dsdt;
        fadt->preferred_pm_profile = ACPI_PM_UNSPECIFIED;
        fadt->sci_int = 9;
        fadt->smi_cmd = 0;
@@ -70,9 +74,9 @@ void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
        fadt->reset_reg.addrh = 0;
        fadt->reset_value = SYS_RST | RST_CPU | FULL_RST;
 
-       fadt->x_firmware_ctl_l = (u32)facs;
+       fadt->x_firmware_ctl_l = (u32)ctx->facs;
        fadt->x_firmware_ctl_h = 0;
-       fadt->x_dsdt_l = (u32)dsdt;
+       fadt->x_dsdt_l = (u32)ctx->dsdt;
        fadt->x_dsdt_h = 0;
 
        fadt->x_pm1a_evt_blk.space_id = ACPI_ADDRESS_SPACE_IO;
@@ -132,7 +136,14 @@ void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
        fadt->x_gpe1_blk.addrh = 0x0;
 
        header->checksum = table_compute_checksum(fadt, header->length);
+
+       acpi_add_table(ctx, fadt);
+
+       acpi_inc(ctx, sizeof(struct acpi_fadt));
+
+       return 0;
 }
+ACPI_WRITER(5fadt, "FADT", quark_write_fadt, 0);
 
 int acpi_create_gnvs(struct acpi_global_nvs *gnvs)
 {
index 3ffba3897aad880dafb86a4082088b84c0baba78..ffaa56ab6f87c72f36e942c16e32c7c011bce642 100644 (file)
 #include <asm/arch/iomap.h>
 #include <dm/uclass-internal.h>
 
-void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
-                     void *dsdt)
+static int tangier_write_fadt(struct acpi_ctx *ctx,
+                             const struct acpi_writer *entry)
 {
-       struct acpi_table_header *header = &(fadt->header);
+       struct acpi_table_header *header;
+       struct acpi_fadt *fadt;
 
-       memset((void *)fadt, 0, sizeof(struct acpi_fadt));
+       fadt = ctx->current;
+       header = &fadt->header;
+
+       memset(fadt, '\0', sizeof(struct acpi_fadt));
 
        acpi_fill_header(header, "FACP");
        header->length = sizeof(struct acpi_fadt);
        header->revision = 6;
 
-       fadt->firmware_ctrl = (u32)facs;
-       fadt->dsdt = (u32)dsdt;
+       fadt->firmware_ctrl = (u32)ctx->facs;
+       fadt->dsdt = (u32)ctx->dsdt;
        fadt->preferred_pm_profile = ACPI_PM_UNSPECIFIED;
 
        fadt->iapc_boot_arch = ACPI_FADT_VGA_NOT_PRESENT |
@@ -41,13 +45,20 @@ void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
 
        fadt->minor_revision = 2;
 
-       fadt->x_firmware_ctl_l = (u32)facs;
+       fadt->x_firmware_ctl_l = (u32)ctx->facs;
        fadt->x_firmware_ctl_h = 0;
-       fadt->x_dsdt_l = (u32)dsdt;
+       fadt->x_dsdt_l = (u32)ctx->dsdt;
        fadt->x_dsdt_h = 0;
 
        header->checksum = table_compute_checksum(fadt, header->length);
+
+       acpi_add_table(ctx, fadt);
+
+       acpi_inc(ctx, sizeof(struct acpi_fadt));
+
+       return 0;
 }
+ACPI_WRITER(5fadt, "FADT", tangier_write_fadt, 0);
 
 u32 acpi_fill_madt(u32 current)
 {
index 72e1873d15dc26e648ea343d840eaad029266c07..226753b65d6a2fbbedcf078e9746b735943b00fc 100644 (file)
@@ -24,8 +24,6 @@ struct acpi_table_header;
 
 /* These can be used by the target port */
 
-void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
-                     void *dsdt);
 int acpi_create_madt_lapics(u32 current);
 int acpi_create_madt_ioapic(struct acpi_madt_ioapic *ioapic, u8 id,
                            u32 addr, u32 gsi_base);
index e3b7e9a4bbe810f4cd881ae3b6b564347df20b54..c5b33dc65de4d6e5fca97081021232c80ad31ad4 100644 (file)
@@ -458,21 +458,6 @@ int acpi_write_gnvs(struct acpi_ctx *ctx, const struct acpi_writer *entry)
 }
 ACPI_WRITER(4gnvs, "GNVS", acpi_write_gnvs, 0);
 
-static int acpi_write_fadt(struct acpi_ctx *ctx,
-                          const struct acpi_writer *entry)
-{
-       struct acpi_fadt *fadt;
-
-       fadt = ctx->current;
-       acpi_create_fadt(fadt, ctx->facs, ctx->dsdt);
-       acpi_add_table(ctx, fadt);
-
-       acpi_inc(ctx, sizeof(struct acpi_fadt));
-
-       return 0;
-}
-ACPI_WRITER(5fact, "FADT", acpi_write_fadt, 0);
-
 /**
  * acpi_write_hpet() - Write out a HPET table
  *