Skip to content

Commit 29e8c82

Browse files
Fabrice Gasnierjic23
authored andcommitted
iio: trigger: stm32-timer: disable master mode when stopping
Master mode should be disabled when stopping. This mainly impacts possible other use-case after timer has been stopped. Currently, master mode remains set (from start routine). Fixes: 6fb3481 ("iio: stm32 trigger: Add support for TRGO2 triggers") Signed-off-by: Fabrice Gasnier <[email protected]> Cc: <[email protected]> Signed-off-by: Jonathan Cameron <[email protected]>
1 parent e19ac9d commit 29e8c82

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

drivers/iio/trigger/stm32-timer-trigger.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ static int stm32_timer_start(struct stm32_timer_trigger *priv,
161161
return 0;
162162
}
163163

164-
static void stm32_timer_stop(struct stm32_timer_trigger *priv)
164+
static void stm32_timer_stop(struct stm32_timer_trigger *priv,
165+
struct iio_trigger *trig)
165166
{
166167
u32 ccer, cr1;
167168

@@ -179,6 +180,12 @@ static void stm32_timer_stop(struct stm32_timer_trigger *priv)
179180
regmap_write(priv->regmap, TIM_PSC, 0);
180181
regmap_write(priv->regmap, TIM_ARR, 0);
181182

183+
/* Force disable master mode */
184+
if (stm32_timer_is_trgo2_name(trig->name))
185+
regmap_update_bits(priv->regmap, TIM_CR2, TIM_CR2_MMS2, 0);
186+
else
187+
regmap_update_bits(priv->regmap, TIM_CR2, TIM_CR2_MMS, 0);
188+
182189
/* Make sure that registers are updated */
183190
regmap_update_bits(priv->regmap, TIM_EGR, TIM_EGR_UG, TIM_EGR_UG);
184191
}
@@ -197,7 +204,7 @@ static ssize_t stm32_tt_store_frequency(struct device *dev,
197204
return ret;
198205

199206
if (freq == 0) {
200-
stm32_timer_stop(priv);
207+
stm32_timer_stop(priv, trig);
201208
} else {
202209
ret = stm32_timer_start(priv, trig, freq);
203210
if (ret)

0 commit comments

Comments
 (0)