From 4a291fb3a32ca7478e2503c68a0d284bf9fc3204 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 24 Jun 2020 09:15:48 -0600 Subject: [PATCH] oryp6: retry setting power limit on failure --- src/board/system76/oryp6/board.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/board/system76/oryp6/board.c b/src/board/system76/oryp6/board.c index 3601272..f6a57a5 100644 --- a/src/board/system76/oryp6/board.c +++ b/src/board/system76/oryp6/board.c @@ -48,12 +48,16 @@ void board_event(void) { if (power_state == POWER_STATE_S0) { uint8_t power_limit = acin ? POWER_LIMIT_AC : POWER_LIMIT_DC; if (power_limit != last_power_limit) { - int res = set_power_limit(power_limit); - DEBUG("set_power_limit %d = %d\n", power_limit, res); - if (res >= 0) { - last_power_limit = power_limit; - } else { - ERROR("set_power_limit failed: %X\n", -res); + // Retry, timeout errors happen occasionally + for (int i = 0; i < 16; i++) { + int res = set_power_limit(power_limit); + DEBUG("set_power_limit %d = %d\n", power_limit, res); + if (res >= 0) { + last_power_limit = power_limit; + break; + } else { + ERROR("set_power_limit failed: %X\n", -res); + } } } } else {