soc/intel: implement ACPI timer disabling per SoC and drop common code

Since it's just a one-liner, implement disabling of the ACPI timer in
soc code. This reduces complexity.

Change-Id: I434ea87d00f6e919983d9229f79d4adb352fbf27
Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/58020
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
Michael Niewöhner 2021-09-27 18:45:10 +02:00
parent 01b3c40bfe
commit 6eaffcdbb1
13 changed files with 5 additions and 28 deletions

View File

@ -43,7 +43,6 @@ config CPU_SPECIFIC_OPTIONS
select PLATFORM_USES_FSP2_2 select PLATFORM_USES_FSP2_2
select PM_ACPI_TIMER_OPTIONAL select PM_ACPI_TIMER_OPTIONAL
select PMC_GLOBAL_RESET_ENABLE_LOCK select PMC_GLOBAL_RESET_ENABLE_LOCK
select PMC_LOW_POWER_MODE_PROGRAM
select SOC_INTEL_COMMON select SOC_INTEL_COMMON
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
select SOC_INTEL_COMMON_BLOCK select SOC_INTEL_COMMON_BLOCK

View File

@ -160,7 +160,7 @@ static void soc_pmc_init(struct device *dev)
* Disabling ACPI PM timer also switches off TCO * Disabling ACPI PM timer also switches off TCO
*/ */
if (!CONFIG(USE_PM_ACPI_TIMER)) if (!CONFIG(USE_PM_ACPI_TIMER))
pmc_disable_acpi_timer(); setbits8(pmc_mmio_regs() + PCH_PWRM_ACPI_TMR_CTL, ACPI_TIM_DIS);
} }
static void pm1_enable_pwrbtn_smi(void *unused) static void pm1_enable_pwrbtn_smi(void *unused)

View File

@ -251,9 +251,6 @@ void pmc_set_power_failure_state(bool target_on);
uint8_t get_pm_pwr_cyc_dur(uint8_t slp_s4_min_assert, uint8_t slp_s3_min_assert, uint8_t get_pm_pwr_cyc_dur(uint8_t slp_s4_min_assert, uint8_t slp_s3_min_assert,
uint8_t slp_a_min_assert, uint8_t pm_pwr_cyc_dur); uint8_t slp_a_min_assert, uint8_t pm_pwr_cyc_dur);
/* Disabling ACPI PM timer to ensure switches off TCO and necessary of XTAL OSC shutdown */
void pmc_disable_acpi_timer(void);
/* API to set ACPI mode */ /* API to set ACPI mode */
void pmc_set_acpi_mode(void); void pmc_set_acpi_mode(void);

View File

@ -50,12 +50,6 @@ config PMC_GLOBAL_RESET_ENABLE_LOCK
Note that the reset register is still at 0xCF9 this only Note that the reset register is still at 0xCF9 this only
controls the enable and lock feature. controls the enable and lock feature.
config PMC_LOW_POWER_MODE_PROGRAM
bool
help
Enable this for PMC devices to perform registers programming
to ensure low power in active idle scenario.
config PM_ACPI_TIMER_OPTIONAL config PM_ACPI_TIMER_OPTIONAL
bool bool
default n default n

View File

@ -711,15 +711,6 @@ uint8_t get_pm_pwr_cyc_dur(uint8_t slp_s4_min_assert, uint8_t slp_s3_min_assert,
return PCH_PM_PWR_CYC_DUR; return PCH_PM_PWR_CYC_DUR;
} }
#if CONFIG(PMC_LOW_POWER_MODE_PROGRAM)
void pmc_disable_acpi_timer(void)
{
uint8_t *pmcbase = pmc_mmio_regs();
setbits8(pmcbase + PCH_PWRM_ACPI_TMR_CTL, ACPI_TIM_DIS);
}
#endif /* PMC_LOW_POWER_MODE_PROGRAM */
void pmc_set_acpi_mode(void) void pmc_set_acpi_mode(void)
{ {
if (!CONFIG(NO_SMM) && !acpi_is_wakeup_s3()) { if (!CONFIG(NO_SMM) && !acpi_is_wakeup_s3()) {

View File

@ -33,7 +33,6 @@ config CPU_SPECIFIC_OPTIONS
select PLATFORM_USES_FSP2_1 select PLATFORM_USES_FSP2_1
select PM_ACPI_TIMER_OPTIONAL select PM_ACPI_TIMER_OPTIONAL
select PMC_GLOBAL_RESET_ENABLE_LOCK select PMC_GLOBAL_RESET_ENABLE_LOCK
select PMC_LOW_POWER_MODE_PROGRAM
select SOC_INTEL_COMMON select SOC_INTEL_COMMON
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
select SOC_INTEL_COMMON_BLOCK select SOC_INTEL_COMMON_BLOCK

View File

@ -100,7 +100,7 @@ static void soc_pmc_init(struct device *dev)
* Disabling ACPI PM timer also switches off TCO * Disabling ACPI PM timer also switches off TCO
*/ */
if (!CONFIG(USE_PM_ACPI_TIMER)) if (!CONFIG(USE_PM_ACPI_TIMER))
pmc_disable_acpi_timer(); setbits8(pmc_mmio_regs() + PCH_PWRM_ACPI_TMR_CTL, ACPI_TIM_DIS);
} }
static void pmc_fill_ssdt(const struct device *dev) static void pmc_fill_ssdt(const struct device *dev)

View File

@ -33,7 +33,6 @@ config CPU_SPECIFIC_OPTIONS
select PLATFORM_USES_FSP2_1 select PLATFORM_USES_FSP2_1
select PM_ACPI_TIMER_OPTIONAL select PM_ACPI_TIMER_OPTIONAL
select PMC_GLOBAL_RESET_ENABLE_LOCK select PMC_GLOBAL_RESET_ENABLE_LOCK
select PMC_LOW_POWER_MODE_PROGRAM
select CPU_INTEL_COMMON select CPU_INTEL_COMMON
select SOC_INTEL_COMMON select SOC_INTEL_COMMON
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE

View File

@ -74,7 +74,7 @@ static void pmc_init(void *unused)
* Disabling ACPI PM timer also switches off TCO * Disabling ACPI PM timer also switches off TCO
*/ */
if (!CONFIG(USE_PM_ACPI_TIMER)) if (!CONFIG(USE_PM_ACPI_TIMER))
pmc_disable_acpi_timer(); setbits8(pmc_mmio_regs() + PCH_PWRM_ACPI_TMR_CTL, ACPI_TIM_DIS);
} }
/* /*

View File

@ -34,7 +34,6 @@ config CPU_SPECIFIC_OPTIONS
select PLATFORM_USES_FSP2_2 select PLATFORM_USES_FSP2_2
select PM_ACPI_TIMER_OPTIONAL select PM_ACPI_TIMER_OPTIONAL
select PMC_GLOBAL_RESET_ENABLE_LOCK select PMC_GLOBAL_RESET_ENABLE_LOCK
select PMC_LOW_POWER_MODE_PROGRAM
select SOC_INTEL_COMMON select SOC_INTEL_COMMON
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
select SOC_INTEL_COMMON_BLOCK select SOC_INTEL_COMMON_BLOCK

View File

@ -100,7 +100,7 @@ static void soc_pmc_init(struct device *dev)
* Disabling ACPI PM timer also switches off TCO * Disabling ACPI PM timer also switches off TCO
*/ */
if (!CONFIG(USE_PM_ACPI_TIMER)) if (!CONFIG(USE_PM_ACPI_TIMER))
pmc_disable_acpi_timer(); setbits8(pmc_mmio_regs() + PCH_PWRM_ACPI_TMR_CTL, ACPI_TIM_DIS);
} }
static void pm1_enable_pwrbtn_smi(void *unused) static void pm1_enable_pwrbtn_smi(void *unused)

View File

@ -42,7 +42,6 @@ config CPU_SPECIFIC_OPTIONS
select PLATFORM_USES_FSP2_2 select PLATFORM_USES_FSP2_2
select PM_ACPI_TIMER_OPTIONAL select PM_ACPI_TIMER_OPTIONAL
select PMC_GLOBAL_RESET_ENABLE_LOCK select PMC_GLOBAL_RESET_ENABLE_LOCK
select PMC_LOW_POWER_MODE_PROGRAM
select SOC_INTEL_COMMON select SOC_INTEL_COMMON
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
select SOC_INTEL_COMMON_BLOCK select SOC_INTEL_COMMON_BLOCK

View File

@ -159,7 +159,7 @@ static void soc_pmc_init(struct device *dev)
* Disabling ACPI PM timer also switches off TCO * Disabling ACPI PM timer also switches off TCO
*/ */
if (!CONFIG(USE_PM_ACPI_TIMER)) if (!CONFIG(USE_PM_ACPI_TIMER))
pmc_disable_acpi_timer(); setbits8(pmc_mmio_regs() + PCH_PWRM_ACPI_TMR_CTL, ACPI_TIM_DIS);
} }
static void pm1_enable_pwrbtn_smi(void *unused) static void pm1_enable_pwrbtn_smi(void *unused)