Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iio: adc: stm32-dfsdm: fix clock source selection

Add missing clock source selection. In case "audio" clock is provided,
it's unused currently: "dfsdm" clock is wrongly used by default.

Fixes: bed73904e76f ("IIO: ADC: add stm32 DFSDM core support")

Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Acked-by: Arnaud Pouliquen <arnaud.pouliquen@st.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Fabrice Gasnier and committed by
Jonathan Cameron
179858ef c278609b

+9 -1
+9 -1
drivers/iio/adc/stm32-dfsdm-core.c
··· 83 83 { 84 84 struct dfsdm_priv *priv = container_of(dfsdm, struct dfsdm_priv, dfsdm); 85 85 struct device *dev = &priv->pdev->dev; 86 - unsigned int clk_div = priv->spi_clk_out_div; 86 + unsigned int clk_div = priv->spi_clk_out_div, clk_src; 87 87 int ret; 88 88 89 89 if (atomic_inc_return(&priv->n_active_ch) == 1) { ··· 99 99 goto disable_clk; 100 100 } 101 101 } 102 + 103 + /* select clock source, e.g. 0 for "dfsdm" or 1 for "audio" */ 104 + clk_src = priv->aclk ? 1 : 0; 105 + ret = regmap_update_bits(dfsdm->regmap, DFSDM_CHCFGR1(0), 106 + DFSDM_CHCFGR1_CKOUTSRC_MASK, 107 + DFSDM_CHCFGR1_CKOUTSRC(clk_src)); 108 + if (ret < 0) 109 + goto disable_aclk; 102 110 103 111 /* Output the SPI CLKOUT (if clk_div == 0 clock if OFF) */ 104 112 ret = regmap_update_bits(dfsdm->regmap, DFSDM_CHCFGR1(0),