// SPDX-License-Identifier: GPL-2.0+
/*
 * Write an ACPI Core System Resource Table (CSRT)
 *
 * Copyright 2021 Google LLC
 */

#define LOG_CATEGORY LOGC_ACPI

#include <mapmem.h>
#include <tables_csum.h>
#include <acpi/acpi_table.h>
#include <dm/acpi.h>
#include <linux/string.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;
	acpi_update_checksum(header);

	acpi_add_table(ctx, csrt);

	return 0;
}
ACPI_WRITER(5csrt, "CSRT", acpi_write_csrt, 0);
