thermal: rockchip: handle set_trips without the trip points
In some cases, some sensors didn't need the trip points, the set_trips will pass {-INT_MAX, INT_MAX} to trigger tsadc alarm in the end, ignore this case and disable the high temperature interrupt. Signed-off-by: Caesar Wang <wxt@rock-chips.com> Reviewed-by: Brian Norris <briannorris@chromium.org> Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
This commit is contained in:
Родитель
cadf29dc2a
Коммит
18591add41
|
@ -674,7 +674,21 @@ static int rk_tsadcv2_get_temp(const struct chip_tsadc_table *table,
|
|||
static int rk_tsadcv2_alarm_temp(const struct chip_tsadc_table *table,
|
||||
int chn, void __iomem *regs, int temp)
|
||||
{
|
||||
u32 alarm_value, int_en;
|
||||
u32 alarm_value;
|
||||
u32 int_en, int_clr;
|
||||
|
||||
/*
|
||||
* In some cases, some sensors didn't need the trip points, the
|
||||
* set_trips will pass {-INT_MAX, INT_MAX} to trigger tsadc alarm
|
||||
* in the end, ignore this case and disable the high temperature
|
||||
* interrupt.
|
||||
*/
|
||||
if (temp == INT_MAX) {
|
||||
int_clr = readl_relaxed(regs + TSADCV2_INT_EN);
|
||||
int_clr &= ~TSADCV2_INT_SRC_EN(chn);
|
||||
writel_relaxed(int_clr, regs + TSADCV2_INT_EN);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Make sure the value is valid */
|
||||
alarm_value = rk_tsadcv2_temp_to_code(table, temp);
|
||||
|
|
Загрузка…
Ссылка в новой задаче