diff --git a/src/board/system76/common/fan.c b/src/board/system76/common/fan.c index 84d27c5..6700165 100644 --- a/src/board/system76/common/fan.c +++ b/src/board/system76/common/fan.c @@ -73,6 +73,10 @@ void fan_duty_set(uint8_t peci_fan_duty, uint8_t dgpu_fan_duty) __reentrant { TRACE("PECI fan_duty_raw=%d\n", peci_fan_duty); last_duty_peci = peci_fan_duty = fan_smooth(last_duty_peci, peci_fan_duty); DCR2 = fan_max ? MAX_FAN_SPEED : peci_fan_duty; +#if HAVE_CPU_FAN2 + // FIXME: Handle better + DCR3 = fan_max ? MAX_FAN_SPEED : peci_fan_duty; +#endif TRACE("PECI fan_duty_smoothed=%d\n", peci_fan_duty); } diff --git a/src/board/system76/common/pwm.c b/src/board/system76/common/pwm.c index 44e1449..6ad6d1b 100644 --- a/src/board/system76/common/pwm.c +++ b/src/board/system76/common/pwm.c @@ -25,6 +25,9 @@ void pwm_init(void) { // Turn off CPU fan (temperature control in peci_get_fan_duty) DCR2 = 0; +#if HAVE_CPU_FAN2 + DCR3 = 0; +#endif #if CONFIG_EC_ITE_IT5570E || CONFIG_EC_ITE_IT5571E // Reload counters when they reach 0 instead of immediately diff --git a/src/board/system76/common/scratch.c b/src/board/system76/common/scratch.c index c1c65d7..5237df3 100644 --- a/src/board/system76/common/scratch.c +++ b/src/board/system76/common/scratch.c @@ -18,6 +18,9 @@ uint8_t __code __at(SCRATCH_OFFSET) scratch_rom[] = { void scratch_trampoline(void) { // Set fans to 100% DCR2 = 0xFF; +#if HAVE_CPU_FAN2 + DCR3 = 0xFF; +#endif #if HAVE_DGPU DCR4 = 0xFF; #endif diff --git a/src/board/system76/darp10/board.mk b/src/board/system76/darp10/board.mk index 6bbefef..a6a8ee7 100644 --- a/src/board/system76/darp10/board.mk +++ b/src/board/system76/darp10/board.mk @@ -38,5 +38,7 @@ CFLAGS += \ -DPOWER_LIMIT_AC=65 \ -DPOWER_LIMIT_DC=45 +CFLAGS += -DHAVE_CPU_FAN2=1 + # Add common code include src/board/system76/common/common.mk