ASoC: rsnd: tidyup rsnd_ssiu_busif_err_status_clear()
rsnd_ssiu_busif_err_status_clear() has very similar duplicated code. This patch merge and tidyup the code. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Message-Id: <87tumolwy3.wl-kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
83b220cf8e
commit
cfb7b8bf1e
@ -88,11 +88,9 @@ static void rsnd_ssiu_busif_err_irq_ctrl(struct rsnd_mod *mod, int enable)
|
|||||||
|
|
||||||
bool rsnd_ssiu_busif_err_status_clear(struct rsnd_mod *mod)
|
bool rsnd_ssiu_busif_err_status_clear(struct rsnd_mod *mod)
|
||||||
{
|
{
|
||||||
struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
|
|
||||||
struct device *dev = rsnd_priv_to_dev(priv);
|
|
||||||
u32 status;
|
|
||||||
bool error = false;
|
bool error = false;
|
||||||
int id = rsnd_mod_id(mod);
|
int id = rsnd_mod_id(mod);
|
||||||
|
int shift, offset;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
switch (id) {
|
switch (id) {
|
||||||
@ -101,33 +99,32 @@ bool rsnd_ssiu_busif_err_status_clear(struct rsnd_mod *mod)
|
|||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
for (i = 0; i < 4; i++) {
|
shift = id;
|
||||||
status = rsnd_mod_read(mod, SSI_SYS_STATUS(i * 2));
|
offset = 0;
|
||||||
status &= 0xf << (id * 4);
|
|
||||||
|
|
||||||
if (status) {
|
|
||||||
rsnd_print_irq_status(dev, "%s err status : 0x%08x\n",
|
|
||||||
rsnd_mod_name(mod), status);
|
|
||||||
error = true;
|
|
||||||
}
|
|
||||||
rsnd_mod_write(mod, SSI_SYS_STATUS(i * 2), 0xf << (id * 4));
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
for (i = 0; i < 4; i++) {
|
shift = 1;
|
||||||
status = rsnd_mod_read(mod, SSI_SYS_STATUS((i * 2) + 1));
|
offset = 1;
|
||||||
status &= 0xf << 4;
|
|
||||||
|
|
||||||
if (status) {
|
|
||||||
rsnd_print_irq_status(dev, "%s err status : 0x%08x\n",
|
|
||||||
rsnd_mod_name(mod), status);
|
|
||||||
error = true;
|
|
||||||
}
|
|
||||||
rsnd_mod_write(mod, SSI_SYS_STATUS((i * 2) + 1), 0xf << 4);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
|
u32 reg = SSI_SYS_STATUS(i * 2) + offset;
|
||||||
|
u32 status = rsnd_mod_read(mod, reg);
|
||||||
|
u32 val = 0xf << (shift * 4);
|
||||||
|
|
||||||
|
status &= val;
|
||||||
|
if (status) {
|
||||||
|
struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
|
||||||
|
struct device *dev = rsnd_priv_to_dev(priv);
|
||||||
|
|
||||||
|
rsnd_print_irq_status(dev, "%s err status : 0x%08x\n",
|
||||||
|
rsnd_mod_name(mod), status);
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
rsnd_mod_write(mod, reg, val);
|
||||||
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user