blob: 34d67b408d1f60ce483bca55cf770ff7a8df810c [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
Julius Wernercd49cce2019-03-05 16:53:33 -080014#if CONFIG(HUDSON_LEGACY_FREE)
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030015 #define FADT_BOOT_ARCH ACPI_FADT_LEGACY_FREE
16#else
17 #define FADT_BOOT_ARCH (ACPI_FADT_LEGACY_DEVICES | ACPI_FADT_8042)
18#endif
19
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030020/*
21 * Reference section 5.2.9 Fixed ACPI Description Table (FADT)
22 * in the ACPI 3.0b specification.
23 */
Kyösti Mälkkiab516292020-05-30 19:38:04 +030024void acpi_fill_fadt(acpi_fadt_t *fadt)
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030025{
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030026 printk(BIOS_DEBUG, "pm_base: 0x%04x\n", HUDSON_ACPI_IO_BASE);
27
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030028
29 fadt->pm1a_evt_blk = ACPI_PM_EVT_BLK;
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030030 fadt->pm1a_cnt_blk = ACPI_PM1_CNT_BLK;
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030031 fadt->pm_tmr_blk = ACPI_PM_TMR_BLK;
32 fadt->gpe0_blk = ACPI_GPE0_BLK;
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030033
34 fadt->pm1_evt_len = 4; /* 32 bits */
35 fadt->pm1_cnt_len = 2; /* 16 bits */
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030036 fadt->pm_tmr_len = 4; /* 32 bits */
37 fadt->gpe0_blk_len = 8; /* 64 bits */
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030038
Kyösti Mälkki88decca2023-04-28 07:04:34 +030039 fill_fadt_extended_pm_io(fadt);
40
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030041 fadt->duty_offset = 1; /* CLK_VAL bits 3:1 */
42 fadt->duty_width = 3; /* CLK_VAL bits 3:1 */
Kyösti Mälkkie8b4da22014-10-21 18:22:32 +030043 fadt->iapc_boot_arch = FADT_BOOT_ARCH; /* See table 5-10 */
44 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}