blob: 2434d1afc16d98fc66935712e0ae1c6c56bea7a3 [file] [log] [blame]
Aaron Durbinc625d092013-10-04 16:00:07 -05001/*
2 * This file is part of the coreboot project.
3 *
4 * Copyright (C) 2007-2009 coresystems GmbH
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
Aaron Durbinc625d092013-10-04 16:00:07 -050014 */
15
16#include <string.h>
Julius Werner18ea2d32014-10-07 16:42:17 -070017#include <soc/acpi.h>
Aaron Durbinc625d092013-10-04 16:00:07 -050018
19void acpi_create_fadt(acpi_fadt_t * fadt, acpi_facs_t * facs, void *dsdt)
20{
21 acpi_header_t *header = &(fadt->header);
Aaron Durbinc625d092013-10-04 16:00:07 -050022
23 memset((void *) fadt, 0, sizeof(acpi_fadt_t));
24 memcpy(header->signature, "FACP", 4);
25 header->length = sizeof(acpi_fadt_t);
26 header->revision = 3;
27 memcpy(header->oem_id, OEM_ID, 6);
28 memcpy(header->oem_table_id, ACPI_TABLE_CREATOR, 8);
29 memcpy(header->asl_compiler_id, ASLC, 4);
30 header->asl_compiler_revision = 1;
31
32 fadt->firmware_ctrl = (unsigned long) facs;
33 fadt->dsdt = (unsigned long) dsdt;
34 fadt->model = 1;
35 fadt->preferred_pm_profile = PM_MOBILE;
36
Aaron Durbinc625d092013-10-04 16:00:07 -050037 fadt->x_firmware_ctl_l = (unsigned long)facs;
38 fadt->x_firmware_ctl_h = 0;
39 fadt->x_dsdt_l = (unsigned long)dsdt;
40 fadt->x_dsdt_h = 0;
41
Aaron Durbin303525b2013-11-05 11:42:32 -060042 acpi_fill_in_fadt(fadt);
Aaron Durbinc625d092013-10-04 16:00:07 -050043
44 header->checksum =
45 acpi_checksum((void *) fadt, header->length);
46}