summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Troast <ntroast@codeaurora.org>2017-01-10 13:33:36 -0800
committerNicholas Troast <ntroast@codeaurora.org>2017-02-07 09:49:24 -0800
commitabaead7bc3f98a125e6d272dfc4bbb5e04841902 (patch)
tree86f03568fefa02de1b5cb4189bf3903c5cbaca47
parent401dea940e8e763a04d327d25958207120067205 (diff)
iio: qcom-tadc: enable hardware conversion triggers
The hardware conversion triggers are required for thermal regulation. Enable them. Change-Id: I4172f7ae8df437ba3a49e6abae587298bc11d78b Signed-off-by: Nicholas Troast <ntroast@codeaurora.org>
-rw-r--r--drivers/iio/adc/qcom-tadc.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/iio/adc/qcom-tadc.c b/drivers/iio/adc/qcom-tadc.c
index ed6b08884f4a..9230d86cf1b5 100644
--- a/drivers/iio/adc/qcom-tadc.c
+++ b/drivers/iio/adc/qcom-tadc.c
@@ -274,6 +274,9 @@ static bool tadc_is_reg_locked(struct tadc_chip *chip, u16 reg)
if ((reg & 0xFF00) == chip->tadc_cmp_base)
return true;
+ if (reg == TADC_HWTRIG_CONV_CH_EN_REG(chip))
+ return true;
+
return false;
}
@@ -909,6 +912,8 @@ static int tadc_parse_dt(struct tadc_chip *chip)
static int tadc_init_hw(struct tadc_chip *chip)
{
+ int rc;
+
chip->chans[TADC_THERM1].thr[0].addr_lo =
TADC_CMP_THR1_CH1_CMP_LO_REG(chip);
chip->chans[TADC_THERM1].thr[0].addr_hi =
@@ -952,6 +957,16 @@ static int tadc_init_hw(struct tadc_chip *chip)
chip->chans[TADC_DIE_TEMP].thr[2].addr_hi =
TADC_CMP_THR3_CH3_CMP_HI_REG(chip);
+ /* enable all temperature hardware triggers */
+ rc = tadc_write(chip, TADC_HWTRIG_CONV_CH_EN_REG(chip),
+ BIT(TADC_THERM1) |
+ BIT(TADC_THERM2) |
+ BIT(TADC_DIE_TEMP));
+ if (rc < 0) {
+ pr_err("Couldn't enable hardware triggers rc=%d\n", rc);
+ return rc;
+ }
+
return 0;
}