Message ID | 1422356244-15629-5-git-send-email-bhuvanchandra.dv@toradex.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Jan 27, 2015 at 04:27:21PM +0530, Bhuvanchandra DV wrote: > regmap_read/regmap_write will expect the peripheral clock > to be enabled before accessing the registers of the peripheral. > Since the peripheral clock is enabled separatly, avoid redundant clock > prepare (with devm_regmap_init_mmio_clk) and use devm_regmap_init_mmio instead. What's the advantage of this? The clock API is refcounted so there should be no issue with this and it seems like it's opening us up to bugs if there's a path where we interact with the registers without enabling the clocks.
On 01/27/2015 06:31 PM, Mark Brown wrote: > On Tue, Jan 27, 2015 at 04:27:21PM +0530, Bhuvanchandra DV wrote: >> regmap_read/regmap_write will expect the peripheral clock >> to be enabled before accessing the registers of the peripheral. >> Since the peripheral clock is enabled separatly, avoid redundant clock >> prepare (with devm_regmap_init_mmio_clk) and use devm_regmap_init_mmio instead. > What's the advantage of this? The clock API is refcounted so there > should be no issue with this and it seems like it's opening us up to > bugs if there's a path where we interact with the registers without > enabling the clocks. My initial thought was that, since regmap_mmio_init_clk() does call clk_prepare(), to go with regmap_mmio_init() as clk_prepare_enable() is called at a later stage in the probe().
diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c index 9b80d54..5378148 100644 --- a/drivers/spi/spi-fsl-dspi.c +++ b/drivers/spi/spi-fsl-dspi.c @@ -502,7 +502,7 @@ static int dspi_probe(struct platform_device *pdev) goto out_master_put; } - dspi->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "dspi", base, + dspi->regmap = devm_regmap_init_mmio(&pdev->dev, base, &dspi_regmap_config); if (IS_ERR(dspi->regmap)) { dev_err(&pdev->dev, "failed to init regmap: %ld\n",