Merge remote-tracking branches 'asoc/topic/samsung', 'asoc/topic/sgtl5000', 'asoc...
[muen/linux.git] / sound / soc / samsung / i2s.c
index 10a4da06c0a1477388758f30b2aaf61ae8a5ef12..233f1c9a4b6cc0c99200a70c411a8d8df0c29741 100644 (file)
@@ -552,8 +552,11 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai,
                        }
 
                        ret = clk_prepare_enable(i2s->op_clk);
-                       if (ret)
+                       if (ret) {
+                               clk_put(i2s->op_clk);
+                               i2s->op_clk = NULL;
                                goto err;
+                       }
                        i2s->rclk_srcrate = clk_get_rate(i2s->op_clk);
 
                        /* Over-ride the other's */
@@ -1096,6 +1099,7 @@ static struct i2s_dai *i2s_alloc_dai(struct platform_device *pdev,
        i2s->pdev = pdev;
        i2s->pri_dai = NULL;
        i2s->sec_dai = NULL;
+       i2s->i2s_dai_drv.id = 1;
        i2s->i2s_dai_drv.symmetric_rates = 1;
        i2s->i2s_dai_drv.probe = samsung_i2s_dai_probe;
        i2s->i2s_dai_drv.remove = samsung_i2s_dai_remove;
@@ -1108,10 +1112,13 @@ static struct i2s_dai *i2s_alloc_dai(struct platform_device *pdev,
        i2s->i2s_dai_drv.playback.formats = SAMSUNG_I2S_FMTS;
 
        if (!sec) {
+               i2s->i2s_dai_drv.name = SAMSUNG_I2S_DAI;
                i2s->i2s_dai_drv.capture.channels_min = 1;
                i2s->i2s_dai_drv.capture.channels_max = 2;
                i2s->i2s_dai_drv.capture.rates = i2s_dai_data->pcm_rates;
                i2s->i2s_dai_drv.capture.formats = SAMSUNG_I2S_FMTS;
+       } else {
+               i2s->i2s_dai_drv.name = SAMSUNG_I2S_DAI_SEC;
        }
        return i2s;
 }
@@ -1285,6 +1292,7 @@ static int samsung_i2s_probe(struct platform_device *pdev)
                        }
                }
        }
+       quirks &= ~(QUIRK_SEC_DAI | QUIRK_SUPPORTS_IDMA);
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        pri_dai->addr = devm_ioremap_resource(&pdev->dev, res);