diff --git a/src/southbridge/intel/lynxpoint/pch.h b/src/southbridge/intel/lynxpoint/pch.h index 3535b987ce..659ddb65b3 100644 --- a/src/southbridge/intel/lynxpoint/pch.h +++ b/src/southbridge/intel/lynxpoint/pch.h @@ -139,7 +139,7 @@ void enable_pm1_control(u32 mask); void disable_pm1_control(u32 mask); /* PM1 */ u16 clear_pm1_status(void); -void enable_pm1(u32 mask); +void enable_pm1(u16 events); u32 clear_smi_status(void); /* SMI */ void enable_smi(u32 mask); diff --git a/src/southbridge/intel/lynxpoint/pmutil.c b/src/southbridge/intel/lynxpoint/pmutil.c index 3a0b70b0b3..386705f00a 100644 --- a/src/southbridge/intel/lynxpoint/pmutil.c +++ b/src/southbridge/intel/lynxpoint/pmutil.c @@ -29,6 +29,7 @@ #include #include #include +#include #include "pch.h" #if CONFIG_INTEL_LYNXPOINT_LP @@ -104,6 +105,7 @@ static u16 reset_pm1_status(void) { u16 pm1_sts = inw(get_pmbase() + PM1_STS); outw(pm1_sts, get_pmbase() + PM1_STS); + return pm1_sts; } @@ -137,12 +139,10 @@ u16 clear_pm1_status(void) return print_pm1_status(reset_pm1_status()); } -/* Enable PM1 event */ -void enable_pm1(u32 mask) +/* Set the PM1 register to events */ +void enable_pm1(u16 events) { - u32 pm1_en = inl(get_pmbase() + PM1_EN); - pm1_en |= mask; - outl(pm1_en, get_pmbase() + PM1_EN); + outw(events, get_pmbase() + PM1_EN); }