|
@@ -211,8 +211,11 @@ struct rockchip_thermal_data {
|
|
|
|
|
|
#define TSADCV2_HIGHT_INT_DEBOUNCE_COUNT 4
|
|
|
#define TSADCV2_HIGHT_TSHUT_DEBOUNCE_COUNT 4
|
|
|
-#define TSADCV2_AUTO_PERIOD_TIME 250 /* msec */
|
|
|
-#define TSADCV2_AUTO_PERIOD_HT_TIME 50 /* msec */
|
|
|
+#define TSADCV2_AUTO_PERIOD_TIME 250 /* 250ms */
|
|
|
+#define TSADCV2_AUTO_PERIOD_HT_TIME 50 /* 50ms */
|
|
|
+#define TSADCV3_AUTO_PERIOD_TIME 187500 /* 250ms */
|
|
|
+#define TSADCV3_AUTO_PERIOD_HT_TIME 37500 /* 50ms */
|
|
|
+
|
|
|
#define TSADCV2_USER_INTER_PD_SOC 0x340 /* 13 clocks */
|
|
|
|
|
|
#define GRF_SARADC_TESTBIT 0x0e644
|
|
@@ -547,6 +550,16 @@ static void rk_tsadcv3_initialize(struct regmap *grf, void __iomem *regs,
|
|
|
/* Set interleave value to workround ic time sync issue */
|
|
|
writel_relaxed(TSADCV2_USER_INTER_PD_SOC, regs +
|
|
|
TSADCV2_USER_CON);
|
|
|
+
|
|
|
+ writel_relaxed(TSADCV2_AUTO_PERIOD_TIME,
|
|
|
+ regs + TSADCV2_AUTO_PERIOD);
|
|
|
+ writel_relaxed(TSADCV2_HIGHT_INT_DEBOUNCE_COUNT,
|
|
|
+ regs + TSADCV2_HIGHT_INT_DEBOUNCE);
|
|
|
+ writel_relaxed(TSADCV2_AUTO_PERIOD_HT_TIME,
|
|
|
+ regs + TSADCV2_AUTO_PERIOD_HT);
|
|
|
+ writel_relaxed(TSADCV2_HIGHT_TSHUT_DEBOUNCE_COUNT,
|
|
|
+ regs + TSADCV2_HIGHT_TSHUT_DEBOUNCE);
|
|
|
+
|
|
|
} else {
|
|
|
regmap_write(grf, GRF_TSADC_TESTBIT_L, GRF_TSADC_TSEN_PD_ON);
|
|
|
mdelay(10);
|
|
@@ -555,6 +568,15 @@ static void rk_tsadcv3_initialize(struct regmap *grf, void __iomem *regs,
|
|
|
regmap_write(grf, GRF_SARADC_TESTBIT, GRF_SARADC_TESTBIT_ON);
|
|
|
regmap_write(grf, GRF_TSADC_TESTBIT_H, GRF_TSADC_TESTBIT_H_ON);
|
|
|
usleep_range(90, 200); /* The spec note says at least 90 us */
|
|
|
+
|
|
|
+ writel_relaxed(TSADCV3_AUTO_PERIOD_TIME,
|
|
|
+ regs + TSADCV2_AUTO_PERIOD);
|
|
|
+ writel_relaxed(TSADCV2_HIGHT_INT_DEBOUNCE_COUNT,
|
|
|
+ regs + TSADCV2_HIGHT_INT_DEBOUNCE);
|
|
|
+ writel_relaxed(TSADCV3_AUTO_PERIOD_HT_TIME,
|
|
|
+ regs + TSADCV2_AUTO_PERIOD_HT);
|
|
|
+ writel_relaxed(TSADCV2_HIGHT_TSHUT_DEBOUNCE_COUNT,
|
|
|
+ regs + TSADCV2_HIGHT_TSHUT_DEBOUNCE);
|
|
|
}
|
|
|
|
|
|
if (tshut_polarity == TSHUT_HIGH_ACTIVE)
|
|
@@ -563,14 +585,6 @@ static void rk_tsadcv3_initialize(struct regmap *grf, void __iomem *regs,
|
|
|
else
|
|
|
writel_relaxed(0U & ~TSADCV2_AUTO_TSHUT_POLARITY_HIGH,
|
|
|
regs + TSADCV2_AUTO_CON);
|
|
|
-
|
|
|
- writel_relaxed(TSADCV2_AUTO_PERIOD_TIME, regs + TSADCV2_AUTO_PERIOD);
|
|
|
- writel_relaxed(TSADCV2_HIGHT_INT_DEBOUNCE_COUNT,
|
|
|
- regs + TSADCV2_HIGHT_INT_DEBOUNCE);
|
|
|
- writel_relaxed(TSADCV2_AUTO_PERIOD_HT_TIME,
|
|
|
- regs + TSADCV2_AUTO_PERIOD_HT);
|
|
|
- writel_relaxed(TSADCV2_HIGHT_TSHUT_DEBOUNCE_COUNT,
|
|
|
- regs + TSADCV2_HIGHT_TSHUT_DEBOUNCE);
|
|
|
}
|
|
|
|
|
|
static void rk_tsadcv2_irq_ack(void __iomem *regs)
|