From efb736fb9eceac6ce335bbaa3d788a05649160b5 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Sun, 30 Aug 2020 22:48:51 -0500 Subject: [PATCH] ASoC: sun8i-codec: Attach the bus clock to the regmap When attached to the regmap, the bus clock is automatically enabled as needed to access device registers. This avoids needing code to manage it separately in the driver. Signed-off-by: Samuel Holland Acked-by: Maxime Ripard Link: https://lore.kernel.org/r/20200831034852.18841-9-samuel@sholland.org Signed-off-by: Mark Brown --- sound/soc/sunxi/sun8i-codec.c | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/sound/soc/sunxi/sun8i-codec.c b/sound/soc/sunxi/sun8i-codec.c index c25cdd3f30571..8a7f989103472 100644 --- a/sound/soc/sunxi/sun8i-codec.c +++ b/sound/soc/sunxi/sun8i-codec.c @@ -94,7 +94,6 @@ struct sun8i_codec_quirks { struct sun8i_codec { struct regmap *regmap; struct clk *clk_module; - struct clk *clk_bus; const struct sun8i_codec_quirks *quirks; }; @@ -109,12 +108,6 @@ static int sun8i_codec_runtime_resume(struct device *dev) return ret; } - ret = clk_prepare_enable(scodec->clk_bus); - if (ret) { - dev_err(dev, "Failed to enable the bus clock\n"); - goto err_disable_modclk; - } - regcache_cache_only(scodec->regmap, false); ret = regcache_sync(scodec->regmap); @@ -126,9 +119,6 @@ static int sun8i_codec_runtime_resume(struct device *dev) return 0; err_disable_clk: - clk_disable_unprepare(scodec->clk_bus); - -err_disable_modclk: clk_disable_unprepare(scodec->clk_module); return ret; @@ -142,7 +132,6 @@ static int sun8i_codec_runtime_suspend(struct device *dev) regcache_mark_dirty(scodec->regmap); clk_disable_unprepare(scodec->clk_module); - clk_disable_unprepare(scodec->clk_bus); return 0; } @@ -612,20 +601,14 @@ static int sun8i_codec_probe(struct platform_device *pdev) return PTR_ERR(scodec->clk_module); } - scodec->clk_bus = devm_clk_get(&pdev->dev, "bus"); - if (IS_ERR(scodec->clk_bus)) { - dev_err(&pdev->dev, "Failed to get the bus clock\n"); - return PTR_ERR(scodec->clk_bus); - } - base = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(base)) { dev_err(&pdev->dev, "Failed to map the registers\n"); return PTR_ERR(base); } - scodec->regmap = devm_regmap_init_mmio(&pdev->dev, base, - &sun8i_codec_regmap_config); + scodec->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "bus", base, + &sun8i_codec_regmap_config); if (IS_ERR(scodec->regmap)) { dev_err(&pdev->dev, "Failed to create our regmap\n"); return PTR_ERR(scodec->regmap); -- 2.30.2