Merge remote-tracking branch 'asoc/topic/rockchip' into asoc-next
authorMark Brown <broonie@kernel.org>
Fri, 26 Jan 2018 15:26:53 +0000 (15:26 +0000)
committerMark Brown <broonie@kernel.org>
Fri, 26 Jan 2018 15:26:53 +0000 (15:26 +0000)
1  2 
sound/soc/rockchip/rk3399_gru_sound.c
sound/soc/rockchip/rockchip_i2s.c

index fa6cd1de828be95991dee4eaea9dec40f69d9fef,aa8ffd03537728b8fc982ffa4c27f597124a426c..214bfc78cf5cd466659980db19caaa6d45922a7b
@@@ -206,8 -206,7 +206,8 @@@ static int rockchip_sound_da7219_init(s
                return ret;
        }
  
 -      snd_jack_set_key(rockchip_sound_jack.jack, SND_JACK_BTN_0, KEY_MEDIA);
 +      snd_jack_set_key(
 +              rockchip_sound_jack.jack, SND_JACK_BTN_0, KEY_PLAYPAUSE);
        snd_jack_set_key(
                rockchip_sound_jack.jack, SND_JACK_BTN_1, KEY_VOLUMEUP);
        snd_jack_set_key(
@@@ -368,7 -367,8 +368,8 @@@ static const struct snd_soc_dai_link ro
        [DAILINK_RT5514_DSP] = {
                .name = "RT5514 DSP",
                .stream_name = "Wake on Voice",
-               .codec_dai_name = "rt5514-dsp-cpu-dai",
+               .codec_name = "snd-soc-dummy",
+               .codec_dai_name = "snd-soc-dummy-dai",
        },
  };
  
@@@ -529,7 -529,18 +530,18 @@@ static int rockchip_sound_of_parse_dais
                if (index < 0)
                        continue;
  
-               np_cpu = (index == DAILINK_CDNDP) ? np_cpu1 : np_cpu0;
+               switch (index) {
+               case DAILINK_CDNDP:
+                       np_cpu = np_cpu1;
+                       break;
+               case DAILINK_RT5514_DSP:
+                       np_cpu = np_codec;
+                       break;
+               default:
+                       np_cpu = np_cpu0;
+                       break;
+               }
                if (!np_cpu) {
                        dev_err(dev, "Missing 'rockchip,cpu' for %s\n",
                                rockchip_dais[index].name);
                dai = &card->dai_link[card->num_links++];
                *dai = rockchip_dais[index];
  
-               dai->codec_of_node = np_codec;
+               if (!dai->codec_name)
+                       dai->codec_of_node = np_codec;
                dai->platform_of_node = np_cpu;
                dai->cpu_of_node = np_cpu;
  
index eb27f6c24bf7fbd8f12a4bfeadbe9a0f283543a1,cc22ab3d10dd382cdddd8d079271d2abf7b0dcd2..950823d69e9cdf21c907c04eae0c96a81ef3a4b0
@@@ -328,6 -328,7 +328,7 @@@ static int rockchip_i2s_hw_params(struc
                val |= I2S_CHN_4;
                break;
        case 2:
+       case 1:
                val |= I2S_CHN_2;
                break;
        default:
@@@ -460,7 -461,7 +461,7 @@@ static struct snd_soc_dai_driver rockch
        },
        .capture = {
                .stream_name = "Capture",
-               .channels_min = 2,
+               .channels_min = 1,
                .channels_max = 2,
                .rates = SNDRV_PCM_RATE_8000_192000,
                .formats = (SNDRV_PCM_FMTBIT_S8 |
@@@ -504,7 -505,6 +505,7 @@@ static bool rockchip_i2s_rd_reg(struct 
        case I2S_INTCR:
        case I2S_XFER:
        case I2S_CLR:
 +      case I2S_TXDR:
        case I2S_RXDR:
        case I2S_FIFOLR:
        case I2S_INTSR:
@@@ -519,9 -519,6 +520,9 @@@ static bool rockchip_i2s_volatile_reg(s
        switch (reg) {
        case I2S_INTSR:
        case I2S_CLR:
 +      case I2S_FIFOLR:
 +      case I2S_TXDR:
 +      case I2S_RXDR:
                return true;
        default:
                return false;
  static bool rockchip_i2s_precious_reg(struct device *dev, unsigned int reg)
  {
        switch (reg) {
 +      case I2S_RXDR:
 +              return true;
        default:
                return false;
        }
@@@ -660,7 -655,7 +661,7 @@@ static int rockchip_i2s_probe(struct pl
        }
  
        if (!of_property_read_u32(node, "rockchip,capture-channels", &val)) {
-               if (val >= 2 && val <= 8)
+               if (val >= 1 && val <= 8)
                        soc_dai->capture.channels_max = val;
        }