summaryrefslogtreecommitdiff
path: root/common/fan.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/fan.c')
-rw-r--r--common/fan.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/common/fan.c b/common/fan.c
index 9196ddf36b..6cb64e777a 100644
--- a/common/fan.c
+++ b/common/fan.c
@@ -471,17 +471,23 @@ DECLARE_HOOK(HOOK_INIT, pwm_fan_init, HOOK_PRIO_DEFAULT);
static void pwm_fan_second(void)
{
uint16_t *mapped = (uint16_t *)host_get_memmap(EC_MEMMAP_FAN);
+ uint16_t rpm;
int stalled = 0;
int fan;
for (fan = 0; fan < CONFIG_FANS; fan++) {
if (fan_is_stalled(fans[fan].ch)) {
- mapped[fan] = EC_FAN_SPEED_STALLED;
+ rpm = EC_FAN_SPEED_STALLED;
stalled = 1;
cprints(CC_PWM, "Fan %d stalled!", fan);
} else {
- mapped[fan] = fan_get_rpm_actual(fans[fan].ch);
+ rpm = fan_get_rpm_actual(fans[fan].ch);
}
+
+ /* Lock ACPI read access to memmap during multi-byte write */
+ host_lock_memmap();
+ mapped[fan] = rpm;
+ host_unlock_memmap();
}
/*