Commit c0c9c734 authored by William Breathitt Gray's avatar William Breathitt Gray
Browse files

counter: microchip-tcb-capture: Fix undefined counter channel state on probe



Hardware initialize of the timer counter channel does not occur on probe
thus leaving the Count in an undefined state until the first
function_write() callback is executed. Fix this by performing the proper
hardware initialization during probe.

Fixes: 106b1041 ("counter: Add microchip TCB capture counter")
Reported-by: default avatarCsókás Bence <csokas.bence@prolan.hu>
Closes: https://lore.kernel.org/all/bfa70e78-3cc3-4295-820b-3925c26135cb@prolan.hu/
Link: https://lore.kernel.org/r/20250305-preset-capture-mode-microchip-tcb-capture-v1-1-632c95c6421e@kernel.org


Signed-off-by: default avatarWilliam Breathitt Gray <wbg@kernel.org>
parent 8744dcd4
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -368,6 +368,25 @@ static int mchp_tc_probe(struct platform_device *pdev)
			channel);
	}

	/* Disable Quadrature Decoder and position measure */
	ret = regmap_update_bits(regmap, ATMEL_TC_BMR, ATMEL_TC_QDEN | ATMEL_TC_POSEN, 0);
	if (ret)
		return ret;

	/* Setup the period capture mode */
	ret = regmap_update_bits(regmap, ATMEL_TC_REG(priv->channel[0], CMR),
				 ATMEL_TC_WAVE | ATMEL_TC_ABETRG | ATMEL_TC_CMR_MASK |
				 ATMEL_TC_TCCLKS,
				 ATMEL_TC_CMR_MASK);
	if (ret)
		return ret;

	/* Enable clock and trigger counter */
	ret = regmap_write(regmap, ATMEL_TC_REG(priv->channel[0], CCR),
			   ATMEL_TC_CLKEN | ATMEL_TC_SWTRG);
	if (ret)
		return ret;

	priv->tc_cfg = tcb_config;
	priv->regmap = regmap;
	counter->name = dev_name(&pdev->dev);