78031ad431
Update this function to the newer style, so we can avoid passing and returning an address through this function. Also move this function out of the x86 code so it can be used by other archs. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
50 lines
1.0 KiB
C
50 lines
1.0 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Write an ACPI Core System Resource Table (CSRT)
|
|
*
|
|
* Copyright 2021 Google LLC
|
|
*/
|
|
|
|
#define LOG_CATEGORY LOGC_ACPI
|
|
|
|
#include <common.h>
|
|
#include <mapmem.h>
|
|
#include <tables_csum.h>
|
|
#include <acpi/acpi_table.h>
|
|
#include <dm/acpi.h>
|
|
|
|
__weak int acpi_fill_csrt(struct acpi_ctx *ctx)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int acpi_write_csrt(struct acpi_ctx *ctx, const struct acpi_writer *entry)
|
|
{
|
|
struct acpi_table_header *header;
|
|
struct acpi_csrt *csrt;
|
|
int ret;
|
|
|
|
csrt = ctx->current;
|
|
header = &csrt->header;
|
|
|
|
memset(csrt, '\0', sizeof(struct acpi_csrt));
|
|
|
|
/* Fill out header fields */
|
|
acpi_fill_header(header, "CSRT");
|
|
header->revision = 0;
|
|
acpi_inc(ctx, sizeof(*header));
|
|
|
|
ret = acpi_fill_csrt(ctx);
|
|
if (ret)
|
|
return log_msg_ret("fill", ret);
|
|
|
|
/* (Re)calculate length and checksum */
|
|
header->length = (ulong)ctx->current - (ulong)csrt;
|
|
header->checksum = table_compute_checksum(csrt, header->length);
|
|
|
|
acpi_add_table(ctx, csrt);
|
|
|
|
return 0;
|
|
}
|
|
ACPI_WRITER(5csrt, "CSRT", acpi_write_csrt, 0);
|