Commit cd1c63df authored by Marcus Cooper's avatar Marcus Cooper Committed by Mark Brown

ASoC: sun4i-i2s: Add regmap config to quirks

The newer SoCs have a larger range than the original SoC that this
driver was developed for. By adding the regmap config to the quirks
then the driver can initialise the managed register map correctly.
Signed-off-by: default avatarMarcus Cooper <codekipper@gmail.com>
Reviewed-by: default avatarChen-Yu Tsai <wens@csie.org>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 0aef27ca
...@@ -94,11 +94,13 @@ ...@@ -94,11 +94,13 @@
* struct sun4i_i2s_quirks - Differences between SoC variants. * struct sun4i_i2s_quirks - Differences between SoC variants.
* *
* @has_reset: SoC needs reset deasserted. * @has_reset: SoC needs reset deasserted.
* @sun4i_i2s_regmap: regmap config to use.
* @mclk_offset: Value by which mclkdiv needs to be adjusted. * @mclk_offset: Value by which mclkdiv needs to be adjusted.
* @bclk_offset: Value by which bclkdiv needs to be adjusted. * @bclk_offset: Value by which bclkdiv needs to be adjusted.
*/ */
struct sun4i_i2s_quirks { struct sun4i_i2s_quirks {
bool has_reset; bool has_reset;
const struct regmap_config *sun4i_i2s_regmap;
unsigned int mclk_offset; unsigned int mclk_offset;
unsigned int bclk_offset; unsigned int bclk_offset;
}; };
...@@ -675,10 +677,12 @@ static int sun4i_i2s_runtime_suspend(struct device *dev) ...@@ -675,10 +677,12 @@ static int sun4i_i2s_runtime_suspend(struct device *dev)
static const struct sun4i_i2s_quirks sun4i_a10_i2s_quirks = { static const struct sun4i_i2s_quirks sun4i_a10_i2s_quirks = {
.has_reset = false, .has_reset = false,
.sun4i_i2s_regmap = &sun4i_i2s_regmap_config,
}; };
static const struct sun4i_i2s_quirks sun6i_a31_i2s_quirks = { static const struct sun4i_i2s_quirks sun6i_a31_i2s_quirks = {
.has_reset = true, .has_reset = true,
.sun4i_i2s_regmap = &sun4i_i2s_regmap_config,
}; };
static int sun4i_i2s_probe(struct platform_device *pdev) static int sun4i_i2s_probe(struct platform_device *pdev)
...@@ -717,7 +721,7 @@ static int sun4i_i2s_probe(struct platform_device *pdev) ...@@ -717,7 +721,7 @@ static int sun4i_i2s_probe(struct platform_device *pdev)
} }
i2s->regmap = devm_regmap_init_mmio(&pdev->dev, regs, i2s->regmap = devm_regmap_init_mmio(&pdev->dev, regs,
&sun4i_i2s_regmap_config); i2s->variant->sun4i_i2s_regmap);
if (IS_ERR(i2s->regmap)) { if (IS_ERR(i2s->regmap)) {
dev_err(&pdev->dev, "Regmap initialisation failed\n"); dev_err(&pdev->dev, "Regmap initialisation failed\n");
return PTR_ERR(i2s->regmap); return PTR_ERR(i2s->regmap);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment