ASoC: rsnd: set SSIWSR setting on rsnd_ssi_config_init()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 30 Nov 2015 08:53:04 +0000 (08:53 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 30 Nov 2015 18:11:23 +0000 (18:11 +0000)
It will have TDM settings on SSIWSR. Actually, we would like to set
it on rsnd_ssi_config_init(), but we can't. Because SSI might be used
as clock master (It doesn't need to call rsnd_ssi_config_init() when
clock master mode).
This patch adds new ssi->wsr and set it on rsnd_ssi_start().

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sh/rcar/ssi.c

index 31e26bd481cfccc6b9234d2c8c3f5a601d4414a6..d97f365f1b41b18457cf79f69a00041241badf5c 100644 (file)
@@ -69,6 +69,7 @@ struct rsnd_ssi {
        u32 cr_own;
        u32 cr_clk;
        u32 cr_mode;
+       u32 wsr;
        int chan;
        int rate;
        int err;
@@ -214,11 +215,10 @@ static int rsnd_ssi_master_clk_start(struct rsnd_ssi *ssi,
                if (0 == ret) {
                        ssi->cr_clk     = FORCE | SWL_32 |
                                SCKD | SWSD | CKDV(j);
+                       ssi->wsr = CONT;
 
                        ssi->rate = rate;
 
-                       rsnd_mod_write(mod, SSIWSR, CONT);
-
                        dev_dbg(dev, "%s[%d] outputs %u Hz\n",
                                rsnd_mod_name(mod),
                                rsnd_mod_id(mod), rate);
@@ -421,6 +421,7 @@ static int __rsnd_ssi_start(struct rsnd_mod *mod,
                EN;
 
        rsnd_mod_write(mod, SSICR, cr);
+       rsnd_mod_write(mod, SSIWSR, ssi->wsr);
 
        return 0;
 }