@@ -22,6 +22,7 @@
#include <linux/thermal.h>
#include <linux/reset.h>
#include <linux/types.h>
+#include <linux/power/mtk_svs.h>
/* AUXADC Registers */
#define AUXADC_CON1_SET_V 0x008
@@ -262,7 +263,7 @@ struct mtk_thermal {
struct clk *clk_peri_therm;
struct clk *clk_auxadc;
/* lock: for getting and putting banks */
- struct mutex lock;
+ unsigned long flags;
/* Calibration values */
s32 adc_ge;
@@ -561,7 +562,7 @@ static void mtk_thermal_get_bank(struct mtk_thermal_bank *bank)
u32 val;
if (mt->conf->need_switch_bank) {
- mutex_lock(&mt->lock);
+ mt->flags = claim_mtk_svs_lock();
val = readl(mt->thermal_base + PTPCORESEL);
val &= ~0xf;
@@ -581,7 +582,7 @@ static void mtk_thermal_put_bank(struct mtk_thermal_bank *bank)
struct mtk_thermal *mt = bank->mt;
if (mt->conf->need_switch_bank)
- mutex_unlock(&mt->lock);
+ release_mtk_svs_lock(mt->flags);
}
/**
@@ -936,8 +937,6 @@ static int mtk_thermal_probe(struct platform_device *pdev)
if (ret)
return ret;
- mutex_init(&mt->lock);
-
mt->dev = &pdev->dev;
auxadc = of_parse_phandle(np, "mediatek,auxadc", 0);