Commit 47bea0c8 authored by Marcus Cooper's avatar Marcus Cooper Committed by Mark Brown

ASoC: sun4i-i2s: Extend quirks scope

In preparation for the changes required to support newer SoCs then
quirks has been moved and also added to the device structure.
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 3643e917
...@@ -90,6 +90,15 @@ ...@@ -90,6 +90,15 @@
#define SUN4I_I2S_RX_CHAN_SEL_REG 0x38 #define SUN4I_I2S_RX_CHAN_SEL_REG 0x38
#define SUN4I_I2S_RX_CHAN_MAP_REG 0x3c #define SUN4I_I2S_RX_CHAN_MAP_REG 0x3c
/**
* struct sun4i_i2s_quirks - Differences between SoC variants.
*
* @has_reset: SoC needs reset deasserted.
*/
struct sun4i_i2s_quirks {
bool has_reset;
};
struct sun4i_i2s { struct sun4i_i2s {
struct clk *bus_clk; struct clk *bus_clk;
struct clk *mod_clk; struct clk *mod_clk;
...@@ -100,6 +109,8 @@ struct sun4i_i2s { ...@@ -100,6 +109,8 @@ struct sun4i_i2s {
struct snd_dmaengine_dai_dma_data capture_dma_data; struct snd_dmaengine_dai_dma_data capture_dma_data;
struct snd_dmaengine_dai_dma_data playback_dma_data; struct snd_dmaengine_dai_dma_data playback_dma_data;
const struct sun4i_i2s_quirks *variant;
}; };
struct sun4i_i2s_clk_div { struct sun4i_i2s_clk_div {
...@@ -654,10 +665,6 @@ static int sun4i_i2s_runtime_suspend(struct device *dev) ...@@ -654,10 +665,6 @@ static int sun4i_i2s_runtime_suspend(struct device *dev)
return 0; return 0;
} }
struct sun4i_i2s_quirks {
bool has_reset;
};
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,
}; };
...@@ -669,7 +676,6 @@ static const struct sun4i_i2s_quirks sun6i_a31_i2s_quirks = { ...@@ -669,7 +676,6 @@ static const struct sun4i_i2s_quirks sun6i_a31_i2s_quirks = {
static int sun4i_i2s_probe(struct platform_device *pdev) static int sun4i_i2s_probe(struct platform_device *pdev)
{ {
struct sun4i_i2s *i2s; struct sun4i_i2s *i2s;
const struct sun4i_i2s_quirks *quirks;
struct resource *res; struct resource *res;
void __iomem *regs; void __iomem *regs;
int irq, ret; int irq, ret;
...@@ -690,8 +696,8 @@ static int sun4i_i2s_probe(struct platform_device *pdev) ...@@ -690,8 +696,8 @@ static int sun4i_i2s_probe(struct platform_device *pdev)
return irq; return irq;
} }
quirks = of_device_get_match_data(&pdev->dev); i2s->variant = of_device_get_match_data(&pdev->dev);
if (!quirks) { if (!i2s->variant) {
dev_err(&pdev->dev, "Failed to determine the quirks to use\n"); dev_err(&pdev->dev, "Failed to determine the quirks to use\n");
return -ENODEV; return -ENODEV;
} }
...@@ -715,7 +721,7 @@ static int sun4i_i2s_probe(struct platform_device *pdev) ...@@ -715,7 +721,7 @@ static int sun4i_i2s_probe(struct platform_device *pdev)
return PTR_ERR(i2s->mod_clk); return PTR_ERR(i2s->mod_clk);
} }
if (quirks->has_reset) { if (i2s->variant->has_reset) {
i2s->rst = devm_reset_control_get_exclusive(&pdev->dev, NULL); i2s->rst = devm_reset_control_get_exclusive(&pdev->dev, NULL);
if (IS_ERR(i2s->rst)) { if (IS_ERR(i2s->rst)) {
dev_err(&pdev->dev, "Failed to get reset control\n"); dev_err(&pdev->dev, "Failed to get reset control\n");
......
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