blob: f76a0549a1da1935df69c644fe7e92ac2b0096fb [file] [log] [blame]
Angel Pons182dbde2020-04-02 23:49:05 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +03002
3/*
4 * ACPI - create the Fixed ACPI Description Tables (FADT)
5 */
6
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +03007#include <console/console.h>
Furquan Shaikh76cedd22020-05-02 10:24:23 -07008#include <acpi/acpi.h>
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +03009#include <device/device.h>
Elyes HAOUAS26071aa2019-02-15 08:21:33 +010010
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030011#include "hudson.h"
12#include "smi.h"
13
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030014/*
15 * Reference section 5.2.9 Fixed ACPI Description Table (FADT)
16 * in the ACPI 3.0b specification.
17 */
Kyösti Mälkkiab516292020-05-30 19:38:04 +030018void acpi_fill_fadt(acpi_fadt_t *fadt)
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030019{
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030020 printk(BIOS_DEBUG, "pm_base: 0x%04x\n", HUDSON_ACPI_IO_BASE);
21
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030022
23 fadt->pm1a_evt_blk = ACPI_PM_EVT_BLK;
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030024 fadt->pm1a_cnt_blk = ACPI_PM1_CNT_BLK;
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030025 fadt->pm_tmr_blk = ACPI_PM_TMR_BLK;
26 fadt->gpe0_blk = ACPI_GPE0_BLK;
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030027
28 fadt->pm1_evt_len = 4; /* 32 bits */
29 fadt->pm1_cnt_len = 2; /* 16 bits */
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030030 fadt->pm_tmr_len = 4; /* 32 bits */
31 fadt->gpe0_blk_len = 8; /* 64 bits */
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030032
Kyösti Mälkki88decca2023-04-28 07:04:34 +030033 fill_fadt_extended_pm_io(fadt);
34
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030035 fadt->duty_offset = 1; /* CLK_VAL bits 3:1 */
36 fadt->duty_width = 3; /* CLK_VAL bits 3:1 */
Felix Held02d24122024-01-10 21:54:22 +010037
38 fadt->iapc_boot_arch = ACPI_FADT_LEGACY_FREE; /* See table 5-10 */
39 if (CONFIG(HUDSON_FADT_LEGACY_DEVICES))
40 fadt->iapc_boot_arch |= ACPI_FADT_LEGACY_DEVICES;
41 if (CONFIG(HUDSON_FADT_8042))
42 fadt->iapc_boot_arch |= ACPI_FADT_8042;
43
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030044 fadt->res2 = 0; /* reserved, MUST be 0 ACPI 3.0 */
Angel Ponsa208c6c2020-07-13 00:02:34 +020045 fadt->flags |= ACPI_FADT_WBINVD | /* See table 5-10 ACPI 3.0a spec */
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030046 ACPI_FADT_C1_SUPPORTED |
47 ACPI_FADT_SLEEP_BUTTON |
48 ACPI_FADT_S4_RTC_WAKE |
49 ACPI_FADT_32BIT_TIMER |
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030050 ACPI_FADT_PCI_EXPRESS_WAKE |
51 ACPI_FADT_PLATFORM_CLOCK |
52 ACPI_FADT_S4_RTC_VALID |
53 ACPI_FADT_REMOTE_POWER_ON;
54
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030055 fadt->x_firmware_ctl_l = 0; /* set to 0 if firmware_ctrl is used */
56 fadt->x_firmware_ctl_h = 0;
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030057}