mfd: arizona: Add ASYNC_SAMPLE_RATE_2 registers
[firefly-linux-kernel-4.4.55.git] / sound / soc / codecs / arizona.c
index bd41ee4da078c6c7808364db38d344eab4151a75..0c05e7a7945fe203a760eb0f412b97bd48d29783 100644 (file)
@@ -1220,7 +1220,7 @@ static int arizona_hw_params_rate(struct snd_pcm_substream *substream,
                break;
        case ARIZONA_CLK_ASYNCCLK:
                snd_soc_update_bits(codec, ARIZONA_ASYNC_SAMPLE_RATE_1,
-                                   ARIZONA_ASYNC_SAMPLE_RATE_MASK, sr_val);
+                                   ARIZONA_ASYNC_SAMPLE_RATE_1_MASK, sr_val);
                if (base)
                        snd_soc_update_bits(codec, base + ARIZONA_AIF_RATE_CTRL,
                                            ARIZONA_AIF1_RATE_MASK,
@@ -1278,6 +1278,8 @@ static int arizona_hw_params(struct snd_pcm_substream *substream,
        else
                rates = &arizona_48k_bclk_rates[0];
 
+       wl = snd_pcm_format_width(params_format(params));
+
        if (tdm_slots) {
                arizona_aif_dbg(dai, "Configuring for %d %d bit TDM slots\n",
                                tdm_slots, tdm_width);
@@ -1285,6 +1287,7 @@ static int arizona_hw_params(struct snd_pcm_substream *substream,
                channels = tdm_slots;
        } else {
                bclk_target = snd_soc_params_to_bclk(params);
+               tdm_width = wl;
        }
 
        if (chan_limit && chan_limit < channels) {
@@ -1319,8 +1322,7 @@ static int arizona_hw_params(struct snd_pcm_substream *substream,
        arizona_aif_dbg(dai, "BCLK %dHz LRCLK %dHz\n",
                        rates[bclk], rates[bclk] / lrclk);
 
-       wl = snd_pcm_format_width(params_format(params));
-       frame = wl << ARIZONA_AIF1TX_WL_SHIFT | wl;
+       frame = wl << ARIZONA_AIF1TX_WL_SHIFT | tdm_width;
 
        reconfig = arizona_aif_cfg_changed(codec, base, bclk, lrclk, frame);