Merge branch 'asoc-5.4' into asoc-next
authorMark Brown <broonie@kernel.org>
Mon, 9 Sep 2019 13:55:20 +0000 (14:55 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 9 Sep 2019 13:55:20 +0000 (14:55 +0100)
17 files changed:
1  2 
include/sound/soc-dapm.h
include/sound/sof/dai-intel.h
include/sound/sof/dai.h
sound/core/pcm_native.c
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_controller.c
sound/pci/hda/hda_controller.h
sound/pci/hda/hda_intel.c
sound/soc/atmel/mchp-i2s-mcc.c
sound/soc/codecs/es8316.c
sound/soc/codecs/rt1011.c
sound/soc/fsl/fsl_ssi.c
sound/soc/intel/common/sst-ipc.c
sound/soc/intel/skylake/skl-debug.c
sound/soc/intel/skylake/skl-nhlt.c
sound/soc/soc-topology.c
sound/soc/ti/davinci-i2s.c

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index ab7d5f98e759e4faf9cbd8f3595fda58f1bba9dd,9a406144b18ff1c0c697b5327ef8453f5d016795..befc2a3a05b05067a70f523ae330831817a641a9
@@@ -656,27 -652,30 +652,35 @@@ static int mchp_i2s_mcc_hw_params(struc
                return 0;
        }
  
-       /* Save the number of channels to know what interrupts to enable */
-       dev->channels = channels;
-       if (set_divs) {
-               bclk_rate = frame_length * params_rate(params);
-               ret = mchp_i2s_mcc_config_divs(dev, bclk_rate, &mra);
+       if (mra & MCHP_I2SMCC_MRA_SRCCLK_GCLK && !dev->gclk_use) {
+               /* set the rate */
+               ret = clk_set_rate(dev->gclk, rate);
                if (ret) {
-                       dev_err(dev->dev, "unable to configure the divisors: %d\n",
-                               ret);
+                       dev_err(dev->dev,
+                               "unable to set rate %lu to GCLK: %d\n",
+                               rate, ret);
                        return ret;
                }
+               ret = clk_prepare(dev->gclk);
+               if (ret < 0) {
+                       dev_err(dev->dev, "unable to prepare GCLK: %d\n", ret);
+                       return ret;
+               }
+               dev->gclk_use = 1;
        }
  
+       /* Save the number of channels to know what interrupts to enable */
+       dev->channels = channels;
        ret = regmap_write(dev->regmap, MCHP_I2SMCC_MRA, mra);
 -      if (ret < 0)
 +      if (ret < 0) {
 +              if (dev->gclk_use) {
 +                      clk_unprepare(dev->gclk);
 +                      dev->gclk_use = 0;
 +              }
                return ret;
 +      }
        return regmap_write(dev->regmap, MCHP_I2SMCC_MRB, mrb);
  }
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge