Require Intel for PECI, add empty AMD power module

PECI is an Intel-only mechanism for getting CPU temp. AMD will use
SB-TSI to get temps.

Add empty power functions for AMD so the project will compile with AMD
selected.

Signed-off-by: Tim Crawford <tcrawford@system76.com>
This commit is contained in:
Tim Crawford
2024-08-28 12:30:32 -06:00
committed by Tim Crawford
parent 2c6977bc6b
commit 3d8204c3f4
7 changed files with 41 additions and 6 deletions

View File

@ -7,11 +7,14 @@
#include <board/gpio.h> #include <board/gpio.h>
#include <board/kbled.h> #include <board/kbled.h>
#include <board/lid.h> #include <board/lid.h>
#include <board/peci.h>
#include <board/pwm.h> #include <board/pwm.h>
#include <common/debug.h> #include <common/debug.h>
#include <common/macro.h> #include <common/macro.h>
#if CONFIG_PLATFORM_INTEL
#include <board/peci.h>
#endif
#ifndef HAVE_LED_AIRPLANE_N #ifndef HAVE_LED_AIRPLANE_N
#define HAVE_LED_AIRPLANE_N 1 #define HAVE_LED_AIRPLANE_N 1
#endif // HAVE_LED_AIRPLANE_N #endif // HAVE_LED_AIRPLANE_N
@ -113,7 +116,9 @@ uint8_t acpi_read(uint8_t addr) {
} }
break; break;
#if CONFIG_PLATFORM_INTEL
ACPI_8(0x07, peci_temp); ACPI_8(0x07, peci_temp);
#endif
// Handle AC adapter and battery present // Handle AC adapter and battery present
case 0x10: case 0x10:

View File

@ -14,7 +14,6 @@ board-common-y += keymap.c
board-common-y += lid.c board-common-y += lid.c
board-common-y += main.c board-common-y += main.c
board-common-y += parallel.c board-common-y += parallel.c
board-common-y += peci.c
board-common-y += pmc.c board-common-y += pmc.c
board-common-y += pnp.c board-common-y += pnp.c
board-common-y += ps2.c board-common-y += ps2.c
@ -42,8 +41,12 @@ CFLAGS+=-DLEVEL=4
#CFLAGS+=-DI2C_DEBUGGER=0x76 #CFLAGS+=-DI2C_DEBUGGER=0x76
ifeq ($(CONFIG_PLATFORM_INTEL),y) ifeq ($(CONFIG_PLATFORM_INTEL),y)
board-common-y += peci.c
board-common-y += power/intel.c board-common-y += power/intel.c
CFLAGS += -DCONFIG_PLATFORM_INTEL=1 CFLAGS += -DCONFIG_PLATFORM_INTEL=1
else ifeq ($(CONFIG_PLATFORM_AMD),y)
board-common-y += power/amd.c
CFLAGS += -DCONFIG_PLATFORM_AMD=1
else else
$(error PLATFORM not specified) $(error PLATFORM not specified)
endif endif

View File

@ -2,12 +2,15 @@
#include <board/fan.h> #include <board/fan.h>
#include <board/dgpu.h> #include <board/dgpu.h>
#include <board/peci.h>
#include <board/power.h> #include <board/power.h>
#include <common/debug.h> #include <common/debug.h>
#include <common/macro.h> #include <common/macro.h>
#include <ec/pwm.h> #include <ec/pwm.h>
#if CONFIG_PLATFORM_INTEL
#include <board/peci.h>
#endif
bool fan_max = false; bool fan_max = false;
uint8_t fan1_pwm_actual = 0; uint8_t fan1_pwm_actual = 0;
@ -195,11 +198,16 @@ static uint16_t fan_get_tach1_rpm(void) {
} }
void fan_event(void) { void fan_event(void) {
#if CONFIG_PLATFORM_INTEL
#if CONFIG_HAVE_DGPU #if CONFIG_HAVE_DGPU
int16_t sys_temp = MAX(peci_temp, dgpu_temp); int16_t sys_temp = MAX(peci_temp, dgpu_temp);
#else #else
int16_t sys_temp = peci_temp; int16_t sys_temp = peci_temp;
#endif #endif
#elif CONFIG_PLATFORM_AMD
// TODO: AMD SB-TSI temp
int16_t sys_temp = 50;
#endif
// Fan update interval is 100ms (main.c). The event changes PWM duty // Fan update interval is 100ms (main.c). The event changes PWM duty
// by 1 every interval to give a smoothing effect. // by 1 every interval to give a smoothing effect.

View File

@ -17,7 +17,6 @@ void power_init(void);
void power_on(void); void power_on(void);
void power_off(void); void power_off(void);
void power_cpu_reset(void); void power_cpu_reset(void);
void power_event(void); void power_event(void);
#endif // _BOARD_POWER_H #endif // _BOARD_POWER_H

View File

@ -18,7 +18,6 @@
#include <board/kbscan.h> #include <board/kbscan.h>
#include <board/keymap.h> #include <board/keymap.h>
#include <board/lid.h> #include <board/lid.h>
#include <board/peci.h>
#include <board/pmc.h> #include <board/pmc.h>
#include <board/power.h> #include <board/power.h>
#include <board/ps2.h> #include <board/ps2.h>
@ -31,6 +30,10 @@
#include <common/version.h> #include <common/version.h>
#include <ec/ec.h> #include <ec/ec.h>
#if CONFIG_PLATFORM_INTEL
#include <board/peci.h>
#endif
#ifdef PARALLEL_DEBUG #ifdef PARALLEL_DEBUG
#include <board/parallel.h> #include <board/parallel.h>
#endif // PARALLEL_DEBUG #endif // PARALLEL_DEBUG
@ -73,7 +76,9 @@ void init(void) {
kbscan_init(); kbscan_init();
} }
keymap_init(); keymap_init();
#if CONFIG_PLATFORM_INTEL
peci_init(); peci_init();
#endif
pmc_init(); pmc_init();
pwm_init(); pwm_init();
smbus_init(); smbus_init();
@ -140,7 +145,9 @@ void main(void) {
if ((time - last_time_250ms) >= INTERVAL_250MS) { if ((time - last_time_250ms) >= INTERVAL_250MS) {
last_time_250ms = time; last_time_250ms = time;
#if CONFIG_PLATFORM_INTEL
peci_read_temp(); peci_read_temp();
#endif
dgpu_read_temp(); dgpu_read_temp();
} }

View File

@ -0,0 +1,12 @@
// SPDX-License-Identifier: GPL-3.0-only
#include <board/power.h>
enum PowerState power_state = POWER_STATE_OFF;
void update_power_state(void) {}
void power_init(void) {}
void power_on(void) {}
void power_off(void) {}
void power_cpu_reset(void) {}
void power_event(void) {}

View File

@ -1,5 +1,7 @@
// SPDX-License-Identifier: GPL-3.0-only // SPDX-License-Identifier: GPL-3.0-only
#include <board/power.h>
#include <arch/delay.h> #include <arch/delay.h>
#include <arch/time.h> #include <arch/time.h>
#include <board/acpi.h> #include <board/acpi.h>
@ -12,7 +14,6 @@
#include <board/kbled.h> #include <board/kbled.h>
#include <board/lid.h> #include <board/lid.h>
#include <board/peci.h> #include <board/peci.h>
#include <board/power.h>
#include <board/pmc.h> #include <board/pmc.h>
#include <board/pnp.h> #include <board/pnp.h>
#include <board/wireless.h> #include <board/wireless.h>