Merge remote-tracking branches 'asoc/topic/rt5640', 'asoc/topic/rt5659', 'asoc/topic...
[cascardo/linux.git] / sound / soc / sh / rcar / ssiu.c
index 06d7282..6f9b388 100644 (file)
@@ -27,7 +27,7 @@ static int rsnd_ssiu_init(struct rsnd_mod *mod,
                          struct rsnd_priv *priv)
 {
        struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
-       u32 multi_ssi_slaves = rsnd_ssi_multi_slaves(io);
+       u32 multi_ssi_slaves = rsnd_ssi_multi_slaves_runtime(io);
        int use_busif = rsnd_ssi_use_busif(io);
        int id = rsnd_mod_id(mod);
        u32 mask1, val1;
@@ -105,7 +105,7 @@ static int rsnd_ssiu_init_gen2(struct rsnd_mod *mod,
        if (ret < 0)
                return ret;
 
-       if (rsnd_get_slot_width(io) >= 6) {
+       if (rsnd_runtime_is_ssi_tdm(io)) {
                /*
                 * TDM Extend Mode
                 * see
@@ -115,13 +115,14 @@ static int rsnd_ssiu_init_gen2(struct rsnd_mod *mod,
        }
 
        if (rsnd_ssi_use_busif(io)) {
-               u32 val = rsnd_get_dalign(mod, io);
-
                rsnd_mod_write(mod, SSI_BUSIF_ADINR,
                               rsnd_get_adinr_bit(mod, io) |
-                              rsnd_get_adinr_chan(mod, io));
+                              (rsnd_io_is_play(io) ?
+                               rsnd_runtime_channel_after_ctu(io) :
+                               rsnd_runtime_channel_original(io)));
                rsnd_mod_write(mod, SSI_BUSIF_MODE,  1);
-               rsnd_mod_write(mod, SSI_BUSIF_DALIGN, val);
+               rsnd_mod_write(mod, SSI_BUSIF_DALIGN,
+                              rsnd_get_dalign(mod, io));
        }
 
        return 0;
@@ -136,7 +137,7 @@ static int rsnd_ssiu_start_gen2(struct rsnd_mod *mod,
 
        rsnd_mod_write(mod, SSI_CTRL, 0x1);
 
-       if (rsnd_ssi_multi_slaves(io))
+       if (rsnd_ssi_multi_slaves_runtime(io))
                rsnd_mod_write(mod, SSI_CONTROL, 0x1);
 
        return 0;
@@ -151,7 +152,7 @@ static int rsnd_ssiu_stop_gen2(struct rsnd_mod *mod,
 
        rsnd_mod_write(mod, SSI_CTRL, 0);
 
-       if (rsnd_ssi_multi_slaves(io))
+       if (rsnd_ssi_multi_slaves_runtime(io))
                rsnd_mod_write(mod, SSI_CONTROL, 0);
 
        return 0;
@@ -206,7 +207,8 @@ int rsnd_ssiu_probe(struct rsnd_priv *priv)
 
        for_each_rsnd_ssiu(ssiu, priv, i) {
                ret = rsnd_mod_init(priv, rsnd_mod_get(ssiu),
-                                   ops, NULL, RSND_MOD_SSIU, i);
+                                   ops, NULL, rsnd_mod_get_status,
+                                   RSND_MOD_SSIU, i);
                if (ret)
                        return ret;
        }