diff options
Diffstat (limited to 'src/soc')
-rw-r--r-- | src/soc/intel/common/block/acpi/pep.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/soc/intel/common/block/acpi/pep.c b/src/soc/intel/common/block/acpi/pep.c index b83b71491f..139943865f 100644 --- a/src/soc/intel/common/block/acpi/pep.c +++ b/src/soc/intel/common/block/acpi/pep.c @@ -14,6 +14,7 @@ #define SYSTEM_POWER_MANAGEMENT_CID "PNP0D80" #define EC_S0IX_HOOK "\\_SB.PCI0.LPCB.EC0.S0IX" #define MAINBOARD_HOOK "\\_SB.MS0X" +#define MAINBOARD_DISPLAY_HOOK "\\_SB.MDSX" #define ENABLE_PM_BITS_HOOK "\\_SB.PCI0.EGPM" #define RESTORE_PM_BITS_HOOK "\\_SB.PCI0.RGPM" #define LPI_STATES_ALL 0xff @@ -150,12 +151,30 @@ static void lpi_s0ix_exit(void *unused) acpigen_write_if_end(); } +static void lpi_display_on(void *unused) +{ + /* Provide a board level S0ix hook */ + acpigen_write_if_cond_ref_of(MAINBOARD_DISPLAY_HOOK); + acpigen_emit_namestring(MAINBOARD_DISPLAY_HOOK); + acpigen_write_integer(1); + acpigen_write_if_end(); +} + +static void lpi_display_off(void *unused) +{ + /* Provide a board level S0ix hook */ + acpigen_write_if_cond_ref_of(MAINBOARD_DISPLAY_HOOK); + acpigen_emit_namestring(MAINBOARD_DISPLAY_HOOK); + acpigen_write_integer(0); + acpigen_write_if_end(); +} + static void (*lpi_s0_helpers[])(void *) = { NULL, /* enumerate functions (autogenerated) */ lpi_get_constraints, /* get device constraints */ NULL, /* get crash dump device */ - NULL, /* display off notify */ - NULL, /* display on notify */ + lpi_display_off, /* display off notify */ + lpi_display_on, /* display on notify */ lpi_s0ix_entry, /* s0ix entry */ lpi_s0ix_exit, /* s0ix exit */ }; |