diff options
Diffstat (limited to 'src/superio/ite/common/env_ctrl.c')
-rw-r--r-- | src/superio/ite/common/env_ctrl.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/superio/ite/common/env_ctrl.c b/src/superio/ite/common/env_ctrl.c index 44926bc3ec..1dc5bb68f5 100644 --- a/src/superio/ite/common/env_ctrl.c +++ b/src/superio/ite/common/env_ctrl.c @@ -232,6 +232,30 @@ static void enable_fan(const u16 base, const u8 fan, ite_ec_write(base, ITE_EC_FAN_MAIN_CTL, reg); } +static void enable_beeps(const u16 base, const struct ite_ec_config *const conf) +{ + u8 reg = 0; + u8 freq = ITE_EC_BEEP_TONE_DIVISOR(10) | ITE_EC_BEEP_FREQ_DIVISOR(10); + + if (conf->tmpin_beep) { + reg |= ITE_EC_BEEP_ON_TMP_LIMIT; + ite_ec_write(base, ITE_EC_BEEP_FREQ_DIV_OF_TMPIN, freq); + } + if (conf->fan_beep) { + reg |= ITE_EC_BEEP_ON_FAN_LIMIT; + ite_ec_write(base, ITE_EC_BEEP_FREQ_DIV_OF_FAN, freq); + } + if (conf->vin_beep) { + reg |= ITE_EC_BEEP_ON_VIN_LIMIT; + ite_ec_write(base, ITE_EC_BEEP_FREQ_DIV_OF_VIN, freq); + } + + if (reg) { + reg |= ite_ec_read(base, ITE_EC_BEEP_ENABLE); + ite_ec_write(base, ITE_EC_BEEP_ENABLE, reg); + } +} + void ite_ec_init(const u16 base, const struct ite_ec_config *const conf) { size_t i; @@ -254,6 +278,9 @@ void ite_ec_init(const u16 base, const struct ite_ec_config *const conf) for (i = 0; i < ITE_EC_FAN_CNT; ++i) enable_fan(base, i + 1, &conf->fan[i]); + /* Enable beeps if configured */ + enable_beeps(base, conf); + /* * System may get wrong temperature data when SIO is in * busy state. Therefore, check the status and terminate |