Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1965608/?format=api
{ "id": 1965608, "url": "http://patchwork.ozlabs.org/api/patches/1965608/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20240727071742.1735703-3-patrick.rudolph@9elements.com/", "project": { "id": 18, "url": "http://patchwork.ozlabs.org/api/projects/18/?format=api", "name": "U-Boot", "link_name": "uboot", "list_id": "u-boot.lists.denx.de", "list_email": "u-boot@lists.denx.de", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20240727071742.1735703-3-patrick.rudolph@9elements.com>", "list_archive_url": null, "date": "2024-07-27T07:17:03", "name": "[02/17] acpi: x86: Write FADT in common code", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "ce985b4391466625f73872d7269c4aee5eafb2ea", "submitter": { "id": 83069, "url": "http://patchwork.ozlabs.org/api/people/83069/?format=api", "name": "Patrick Rudolph", "email": "patrick.rudolph@9elements.com" }, "delegate": { "id": 3184, "url": "http://patchwork.ozlabs.org/api/users/3184/?format=api", "username": "sjg", "first_name": "Simon", "last_name": "Glass", "email": "sjg@chromium.org" }, "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20240727071742.1735703-3-patrick.rudolph@9elements.com/mbox/", "series": [ { "id": 416851, "url": "http://patchwork.ozlabs.org/api/series/416851/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=416851", "date": "2024-07-27T07:17:01", "name": "Implement ACPI on aarch64", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/416851/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1965608/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/1965608/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<u-boot-bounces@lists.denx.de>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=9elements.com header.i=@9elements.com header.a=rsa-sha256\n header.s=google header.b=eW7V1E8y;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)", "phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=9elements.com", "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de", "phobos.denx.de;\n\tdkim=pass (2048-bit key;\n secure) header.d=9elements.com header.i=@9elements.com header.b=\"eW7V1E8y\";\n\tdkim-atps=neutral", "phobos.denx.de; dmarc=pass (p=quarantine dis=none)\n header.from=9elements.com", "phobos.denx.de;\n spf=pass smtp.mailfrom=patrick.rudolph@9elements.com" ], "Received": [ "from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature ECDSA (secp384r1))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4WWGHS0t6dz1yY3\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 27 Jul 2024 17:20:36 +1000 (AEST)", "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 3E55C88648;\n\tSat, 27 Jul 2024 09:20:13 +0200 (CEST)", "by phobos.denx.de (Postfix, from userid 109)\n id 6925788636; Sat, 27 Jul 2024 09:20:11 +0200 (CEST)", "from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com\n [IPv6:2a00:1450:4864:20::62e])\n (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 40AB087873\n for <u-boot@lists.denx.de>; Sat, 27 Jul 2024 09:20:09 +0200 (CEST)", "by mail-ej1-x62e.google.com with SMTP id\n a640c23a62f3a-a7aa4bf4d1eso287734066b.0\n for <u-boot@lists.denx.de>; Sat, 27 Jul 2024 00:20:09 -0700 (PDT)", "from fedora.sec.9e.network\n (ip-037-049-067-221.um09.pools.vodafone-ip.de. [37.49.67.221])\n by smtp.gmail.com with ESMTPSA id\n a640c23a62f3a-a7acab231f2sm253102866b.7.2024.07.27.00.20.07\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Sat, 27 Jul 2024 00:20:08 -0700 (PDT)" ], "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de", "X-Spam-Level": "", "X-Spam-Status": "No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS\n autolearn=ham autolearn_force=no version=3.4.2", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=9elements.com; s=google; t=1722064809; x=1722669609; darn=lists.denx.de;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=73HQ/BaL65dh2urkkq9IaWx9BIlH+ajZ9ajFR4TUWXA=;\n b=eW7V1E8yW/Yu5SV2zfS54BKnqDFQtcG6AYpOoYvG02NwylorH3+4APw/uaVav2uR/N\n 9xgYDYOyPG/Qi9H3x2iy+oQwCb+SG+iiZVc/zyvQ2+uIhwHqCXVcLcuJd/7NhvN1k5y8\n 2Meb3QLrPRxpUXUm09nAnY9gcQjYAKXWfpbIH5udefl7SUJBqF39Pqq0f7wdExlkyaT5\n DIyEXAu11Q1putPs/98yG26WbtpuQu1faI9V9zjksjssSxY6mQvubbhbuv+87mYEITPF\n tZL+OV25/IewTVoYJ6eSMBf5aLnchnWmdsfue7jMoA5ewo6po+I8FPyRg/YlpPfJ8H4Q\n ODEQ==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1722064809; x=1722669609;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc\n :subject:date:message-id:reply-to;\n bh=73HQ/BaL65dh2urkkq9IaWx9BIlH+ajZ9ajFR4TUWXA=;\n b=aKyUFqrCsQyzD5tn7jUccgyuFE88mwfDLu+LDlTwJKM25Iqsp4JkGAL7az2djUY+Gz\n wEtt65WSdUsMlCRnrDQ5rdB3a1mM2oZrd7Bdc4AHemAuz79wZO3eMpAW/03rubIRTVn0\n IgKqWxFO/pPUHgpooJGO2TA04GFW84WSgk8qnjRsfjHZW2UsrK3ltqj8dFOTMP4uNQmC\n +Ellh+dMuSUQ4P7RQGR9G05SVE5dxbprcPzVH+KbmlwxWmgi/hRv6x9o17d3LnZbwipF\n 2J+ZuMt16843sryJKL7zCPJk5yE/QonjERt3muLhapO7jc4M0A9DNV+4Vnc2wWUj5uay\n GfEg==", "X-Gm-Message-State": "AOJu0Yx2LAPZf4py6WaGG73Vg3MfO2BhwVku4rlJQTJJ1/M0epH/Bqam\n RUt0Wwl0h3BeT8cAbafF4GETsmsESp4SRNI1h3wrfit2SMy1Hu2rM4spiMBan3IPYKKj7YD9bhd\n 8jcA=", "X-Google-Smtp-Source": "\n AGHT+IE8pe+DhazGGyUS0J8vAoudCGqHDJHpK3M6ZsccHNYpfmb+I+dkJJJeRj0mCbd3rzDGEi0fww==", "X-Received": "by 2002:a17:907:3e1a:b0:a7a:c256:3cf with SMTP id\n a640c23a62f3a-a7d3ff58cc5mr119726066b.24.1722064808701;\n Sat, 27 Jul 2024 00:20:08 -0700 (PDT)", "From": "Patrick Rudolph <patrick.rudolph@9elements.com>", "To": "u-boot@lists.denx.de,\n\tSimon Glass <sjg@chromium.org>", "Cc": "mbrugger@suse.com, pbrobinson@gmail.com, trini@konsulko.com,\n bmeng.cn@gmail.com, Maximilian Brune <maximilian.brune@9elements.com>,\n Patrick Rudolph <patrick.rudolph@9elements.com>", "Subject": "[PATCH 02/17] acpi: x86: Write FADT in common code", "Date": "Sat, 27 Jul 2024 09:17:03 +0200", "Message-ID": "<20240727071742.1735703-3-patrick.rudolph@9elements.com>", "X-Mailer": "git-send-email 2.45.2", "In-Reply-To": "<20240727071742.1735703-1-patrick.rudolph@9elements.com>", "References": "<20240727071742.1735703-1-patrick.rudolph@9elements.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "u-boot@lists.denx.de", "X-Mailman-Version": "2.1.39", "Precedence": "list", "List-Id": "U-Boot discussion <u-boot.lists.denx.de>", "List-Unsubscribe": "<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>", "List-Archive": "<https://lists.denx.de/pipermail/u-boot/>", "List-Post": "<mailto:u-boot@lists.denx.de>", "List-Help": "<mailto:u-boot-request@lists.denx.de?subject=help>", "List-Subscribe": "<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>", "Errors-To": "u-boot-bounces@lists.denx.de", "Sender": "\"U-Boot\" <u-boot-bounces@lists.denx.de>", "X-Virus-Scanned": "clamav-milter 0.103.8 at phobos.denx.de", "X-Virus-Status": "Clean" }, "content": "From: Maximilian Brune <maximilian.brune@9elements.com>\n\nWrite the FADT in common code since it's used on all architectures.\nLet the cpu code fill out the FADT body by introducing a new weak\nfunction acpi_fill_fadt().\n\nSigned-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>\nCc: Simon Glass <sjg@chromium.org>\nCc: Bin Meng <bmeng.cn@gmail.com>\n---\n arch/x86/cpu/apollolake/acpi.c | 20 +++------------\n arch/x86/cpu/baytrail/acpi.c | 17 +------------\n arch/x86/cpu/quark/acpi.c | 19 +-------------\n arch/x86/cpu/tangier/acpi.c | 25 ++----------------\n arch/x86/include/asm/acpi_table.h | 12 ---------\n arch/x86/lib/acpi_table.c | 23 -----------------\n include/acpi/acpi_table.h | 9 +++++++\n lib/acpi/acpi_table.c | 42 +++++++++++++++++++++++++++++++\n 8 files changed, 59 insertions(+), 108 deletions(-)", "diff": "diff --git a/arch/x86/cpu/apollolake/acpi.c b/arch/x86/cpu/apollolake/acpi.c\nindex 76230aea83..93040e7bb3 100644\n--- a/arch/x86/cpu/apollolake/acpi.c\n+++ b/arch/x86/cpu/apollolake/acpi.c\n@@ -128,8 +128,10 @@ int arch_madt_sci_irq_polarity(int sci)\n \treturn MP_IRQ_POLARITY_LOW;\n }\n \n-void fill_fadt(struct acpi_fadt *fadt)\n+void acpi_fill_fadt(struct acpi_fadt *fadt)\n {\n+\tintel_acpi_fill_fadt(fadt);\n+\n \tfadt->pm_tmr_blk = IOMAP_ACPI_BASE + PM1_TMR;\n \n \tfadt->p_lvl2_lat = ACPI_FADT_C2_NOT_SUPPORTED;\n@@ -143,23 +145,9 @@ void fill_fadt(struct acpi_fadt *fadt)\n \tfadt->x_pm_tmr_blk.space_id = 1;\n \tfadt->x_pm_tmr_blk.bit_width = fadt->pm_tmr_len * 8;\n \tfadt->x_pm_tmr_blk.addrl = IOMAP_ACPI_BASE + PM1_TMR;\n-}\n-\n-static int apl_write_fadt(struct acpi_ctx *ctx, const struct acpi_writer *entry)\n-{\n-\tstruct acpi_table_header *header;\n-\tstruct acpi_fadt *fadt;\n-\n-\tfadt = ctx->current;\n-\tacpi_fadt_common(fadt, ctx->facs, ctx->dsdt);\n-\tintel_acpi_fill_fadt(fadt);\n-\tfill_fadt(fadt);\n-\theader = &fadt->header;\n-\theader->checksum = table_compute_checksum(fadt, header->length);\n \n-\treturn acpi_add_fadt(ctx, fadt);\n+\tfadt->preferred_pm_profile = ACPI_PM_MOBILE;\n }\n-ACPI_WRITER(5fadt, \"FADT\", apl_write_fadt, 0);\n \n int apl_acpi_fill_dmar(struct acpi_ctx *ctx)\n {\ndiff --git a/arch/x86/cpu/baytrail/acpi.c b/arch/x86/cpu/baytrail/acpi.c\nindex 7821964f1f..7e1c2de3d3 100644\n--- a/arch/x86/cpu/baytrail/acpi.c\n+++ b/arch/x86/cpu/baytrail/acpi.c\n@@ -15,20 +15,13 @@\n #include <asm/arch/iomap.h>\n #include <dm/uclass-internal.h>\n \n-static int baytrail_write_fadt(struct acpi_ctx *ctx,\n-\t\t\t const struct acpi_writer *entry)\n+void acpi_fill_fadt(struct acpi_fadt *fadt)\n {\n \tstruct acpi_table_header *header;\n-\tstruct acpi_fadt *fadt;\n \n-\tfadt = ctx->current;\n \theader = &fadt->header;\n \tu16 pmbase = ACPI_BASE_ADDRESS;\n \n-\tmemset(fadt, '\\0', sizeof(struct acpi_fadt));\n-\n-\tacpi_fill_header(header, \"FACP\");\n-\theader->length = sizeof(struct acpi_fadt);\n \theader->revision = 4;\n \n \tfadt->preferred_pm_profile = ACPI_PM_MOBILE;\n@@ -77,9 +70,6 @@ static int baytrail_write_fadt(struct acpi_ctx *ctx,\n \tfadt->reset_reg.addrh = 0;\n \tfadt->reset_value = SYS_RST | RST_CPU | FULL_RST;\n \n-\tfadt->x_firmware_ctrl = map_to_sysmem(ctx->facs);\n-\tfadt->x_dsdt = map_to_sysmem(ctx->dsdt);\n-\n \tfadt->x_pm1a_evt_blk.space_id = ACPI_ADDRESS_SPACE_IO;\n \tfadt->x_pm1a_evt_blk.bit_width = fadt->pm1_evt_len * 8;\n \tfadt->x_pm1a_evt_blk.bit_offset = 0;\n@@ -135,12 +125,7 @@ static int baytrail_write_fadt(struct acpi_ctx *ctx,\n \tfadt->x_gpe1_blk.access_size = 0;\n \tfadt->x_gpe1_blk.addrl = 0x0;\n \tfadt->x_gpe1_blk.addrh = 0x0;\n-\n-\theader->checksum = table_compute_checksum(fadt, header->length);\n-\n-\treturn acpi_add_fadt(ctx, fadt);\n }\n-ACPI_WRITER(5fadt, \"FADT\", baytrail_write_fadt, 0);\n \n int acpi_create_gnvs(struct acpi_global_nvs *gnvs)\n {\ndiff --git a/arch/x86/cpu/quark/acpi.c b/arch/x86/cpu/quark/acpi.c\nindex 80e94600fc..0fe5f2bafb 100644\n--- a/arch/x86/cpu/quark/acpi.c\n+++ b/arch/x86/cpu/quark/acpi.c\n@@ -11,23 +11,14 @@\n #include <asm/arch/iomap.h>\n #include <linux/string.h>\n \n-static int quark_write_fadt(struct acpi_ctx *ctx,\n-\t\t\t const struct acpi_writer *entry)\n+void acpi_fill_fadt(struct acpi_fadt *fadt)\n {\n \tu16 pmbase = ACPI_PM1_BASE_ADDRESS;\n \tstruct acpi_table_header *header;\n-\tstruct acpi_fadt *fadt;\n \n-\tfadt = ctx->current;\n \theader = &fadt->header;\n-\n-\tmemset(fadt, '\\0', sizeof(struct acpi_fadt));\n-\n-\tacpi_fill_header(header, \"FACP\");\n-\theader->length = sizeof(struct acpi_fadt);\n \theader->revision = 4;\n \n-\tfadt->preferred_pm_profile = ACPI_PM_UNSPECIFIED;\n \tfadt->sci_int = 9;\n \tfadt->smi_cmd = 0;\n \tfadt->acpi_enable = 0;\n@@ -73,9 +64,6 @@ static int quark_write_fadt(struct acpi_ctx *ctx,\n \tfadt->reset_reg.addrh = 0;\n \tfadt->reset_value = SYS_RST | RST_CPU | FULL_RST;\n \n-\tfadt->x_firmware_ctrl = map_to_sysmem(ctx->facs);\n-\tfadt->x_dsdt = map_to_sysmem(ctx->dsdt);\n-\n \tfadt->x_pm1a_evt_blk.space_id = ACPI_ADDRESS_SPACE_IO;\n \tfadt->x_pm1a_evt_blk.bit_width = fadt->pm1_evt_len * 8;\n \tfadt->x_pm1a_evt_blk.bit_offset = 0;\n@@ -131,12 +119,7 @@ static int quark_write_fadt(struct acpi_ctx *ctx,\n \tfadt->x_gpe1_blk.access_size = 0;\n \tfadt->x_gpe1_blk.addrl = 0x0;\n \tfadt->x_gpe1_blk.addrh = 0x0;\n-\n-\theader->checksum = table_compute_checksum(fadt, header->length);\n-\n-\treturn acpi_add_fadt(ctx, fadt);\n }\n-ACPI_WRITER(5fadt, \"FADT\", quark_write_fadt, 0);\n \n int acpi_create_gnvs(struct acpi_global_nvs *gnvs)\n {\ndiff --git a/arch/x86/cpu/tangier/acpi.c b/arch/x86/cpu/tangier/acpi.c\nindex d4d0ef6f85..1c73a9dbfe 100644\n--- a/arch/x86/cpu/tangier/acpi.c\n+++ b/arch/x86/cpu/tangier/acpi.c\n@@ -16,21 +16,8 @@\n #include <asm/arch/iomap.h>\n #include <dm/uclass-internal.h>\n \n-static int tangier_write_fadt(struct acpi_ctx *ctx,\n-\t\t\t const struct acpi_writer *entry)\n+void acpi_fill_fadt(struct acpi_fadt *fadt)\n {\n-\tstruct acpi_table_header *header;\n-\tstruct acpi_fadt *fadt;\n-\n-\tfadt = ctx->current;\n-\theader = &fadt->header;\n-\n-\tmemset(fadt, '\\0', sizeof(struct acpi_fadt));\n-\n-\tacpi_fill_header(header, \"FACP\");\n-\theader->length = sizeof(struct acpi_fadt);\n-\theader->revision = 6;\n-\n \tfadt->preferred_pm_profile = ACPI_PM_UNSPECIFIED;\n \n \tfadt->iapc_boot_arch = ACPI_FADT_VGA_NOT_PRESENT |\n@@ -40,17 +27,9 @@ static int tangier_write_fadt(struct acpi_ctx *ctx,\n \t\tACPI_FADT_POWER_BUTTON | ACPI_FADT_SLEEP_BUTTON |\n \t\tACPI_FADT_SEALED_CASE | ACPI_FADT_HEADLESS |\n \t\tACPI_FADT_HW_REDUCED_ACPI;\n-\n+\tfadt->header.revision = 6;\n \tfadt->minor_revision = 2;\n-\n-\tfadt->x_firmware_ctrl = map_to_sysmem(ctx->facs);\n-\tfadt->x_dsdt = map_to_sysmem(ctx->dsdt);\n-\n-\theader->checksum = table_compute_checksum(fadt, header->length);\n-\n-\treturn acpi_add_fadt(ctx, fadt);\n }\n-ACPI_WRITER(5fadt, \"FADT\", tangier_write_fadt, 0);\n \n u32 acpi_fill_madt(u32 current)\n {\ndiff --git a/arch/x86/include/asm/acpi_table.h b/arch/x86/include/asm/acpi_table.h\nindex e617524617..3988898f66 100644\n--- a/arch/x86/include/asm/acpi_table.h\n+++ b/arch/x86/include/asm/acpi_table.h\n@@ -168,18 +168,6 @@ int acpi_create_dmar_ds_ioapic(struct acpi_ctx *ctx, uint enumeration_id,\n int acpi_create_dmar_ds_msi_hpet(struct acpi_ctx *ctx, uint enumeration_id,\n \t\t\t\t pci_dev_t bdf);\n \n-/**\n- * acpi_fadt_common() - Handle common parts of filling out an FADT\n- *\n- * This sets up the Fixed ACPI Description Table\n- *\n- * @fadt: Pointer to place to put FADT\n- * @facs: Pointer to the FACS\n- * @dsdt: Pointer to the DSDT\n- */\n-void acpi_fadt_common(struct acpi_fadt *fadt, struct acpi_facs *facs,\n-\t\t void *dsdt);\n-\n /**\n * intel_acpi_fill_fadt() - Set up the contents of the FADT\n *\ndiff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c\nindex 08fd1e54ce..ff02ce80d1 100644\n--- a/arch/x86/lib/acpi_table.c\n+++ b/arch/x86/lib/acpi_table.c\n@@ -381,29 +381,6 @@ int acpi_write_hpet(struct acpi_ctx *ctx)\n \treturn 0;\n }\n \n-void acpi_fadt_common(struct acpi_fadt *fadt, struct acpi_facs *facs,\n-\t\t void *dsdt)\n-{\n-\tstruct acpi_table_header *header = &fadt->header;\n-\n-\tmemset((void *)fadt, '\\0', sizeof(struct acpi_fadt));\n-\n-\tacpi_fill_header(header, \"FACP\");\n-\theader->length = sizeof(struct acpi_fadt);\n-\theader->revision = 4;\n-\tmemcpy(header->oem_id, OEM_ID, 6);\n-\tmemcpy(header->oem_table_id, OEM_TABLE_ID, 8);\n-\tmemcpy(header->creator_id, ASLC_ID, 4);\n-\n-\tfadt->x_firmware_ctrl = map_to_sysmem(facs);\n-\tfadt->x_dsdt = map_to_sysmem(dsdt);\n-\n-\tfadt->preferred_pm_profile = ACPI_PM_MOBILE;\n-\n-\t/* Use ACPI 3.0 revision */\n-\tfadt->header.revision = 4;\n-}\n-\n void acpi_create_dmar_drhd(struct acpi_ctx *ctx, uint flags, uint segment,\n \t\t\t u64 bar)\n {\ndiff --git a/include/acpi/acpi_table.h b/include/acpi/acpi_table.h\nindex fa19ea84df..03b69854bf 100644\n--- a/include/acpi/acpi_table.h\n+++ b/include/acpi/acpi_table.h\n@@ -926,6 +926,15 @@ void acpi_fill_header(struct acpi_table_header *header, char *signature);\n */\n int acpi_fill_csrt(struct acpi_ctx *ctx);\n \n+/**\n+ * acpi_fill_fadt() - Fill out the body of the FADT\n+ *\n+ * Should be implemented in SoC specific code.\n+ *\n+ * @fadt: Pointer to FADT to update\n+ */\n+void acpi_fill_fadt(struct acpi_fadt *fadt);\n+\n /**\n * acpi_write_dbg2_pci_uart() - Write out a DBG2 table\n *\ndiff --git a/lib/acpi/acpi_table.c b/lib/acpi/acpi_table.c\nindex e7e074d25e..56c1bcd691 100644\n--- a/lib/acpi/acpi_table.c\n+++ b/lib/acpi/acpi_table.c\n@@ -202,6 +202,48 @@ int acpi_add_table(struct acpi_ctx *ctx, void *table)\n \treturn 0;\n }\n \n+__weak void acpi_fill_fadt(struct acpi_fadt *fadt)\n+{\n+}\n+\n+int acpi_write_fadt(struct acpi_ctx *ctx, const struct acpi_writer *entry)\n+{\n+\tstruct acpi_table_header *header;\n+\tstruct acpi_fadt *fadt;\n+\n+\tfadt = ctx->current;\n+\theader = &fadt->header;\n+\n+\tmemset((void *)fadt, '\\0', sizeof(struct acpi_fadt));\n+\n+\tacpi_fill_header(header, \"FACP\");\n+\theader->length = sizeof(struct acpi_fadt);\n+\theader->revision = acpi_get_table_revision(ACPITAB_FADT);\n+\tmemcpy(header->oem_id, OEM_ID, 6);\n+\tmemcpy(header->oem_table_id, OEM_TABLE_ID, 8);\n+\tmemcpy(header->creator_id, ASLC_ID, 4);\n+\theader->creator_revision = 1;\n+\n+\tfadt->x_firmware_ctrl = map_to_sysmem(ctx->facs);\n+\tfadt->x_dsdt = map_to_sysmem(ctx->dsdt);\n+\n+\tif (fadt->x_firmware_ctrl < 0x100000000ULL)\n+\t\tfadt->firmware_ctrl = fadt->x_firmware_ctrl;\n+\n+\tif (fadt->x_dsdt < 0x100000000ULL)\n+\t\tfadt->dsdt = fadt->x_dsdt;\n+\n+\tfadt->preferred_pm_profile = ACPI_PM_UNSPECIFIED;\n+\n+\tacpi_fill_fadt(fadt);\n+\n+\theader->checksum = table_compute_checksum(fadt, header->length);\n+\n+\treturn acpi_add_fadt(ctx, fadt);\n+}\n+\n+ACPI_WRITER(5fadt, \"FADT\", acpi_write_fadt, 0);\n+\n static void acpi_create_dbg2(struct acpi_dbg2_header *dbg2,\n \t\t\t int port_type, int port_subtype,\n \t\t\t struct acpi_gen_regaddr *address, u32 address_size,\n", "prefixes": [ "02/17" ] }