]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - sound/soc/codecs/tlv320aic26.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
[linux-2.6-omap-h63xx.git] / sound / soc / codecs / tlv320aic26.c
index bed8a9e63ddc86fd0a8c2d9274b812867149fcb4..29f2f1a017fde8744816005584ca9b676d6fdfa5 100644 (file)
@@ -125,7 +125,8 @@ static int aic26_reg_write(struct snd_soc_codec *codec, unsigned int reg,
  * Digital Audio Interface Operations
  */
 static int aic26_hw_params(struct snd_pcm_substream *substream,
-                          struct snd_pcm_hw_params *params)
+                          struct snd_pcm_hw_params *params,
+                          struct snd_soc_dai *dai)
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
@@ -287,8 +288,6 @@ struct snd_soc_dai aic26_dai = {
        },
        .ops = {
                .hw_params = aic26_hw_params,
-       },
-       .dai_ops = {
                .digital_mute = aic26_mute,
                .set_sysclk = aic26_set_sysclk,
                .set_fmt = aic26_set_fmt,
@@ -360,7 +359,7 @@ static int aic26_probe(struct platform_device *pdev)
 
        /* CODEC is setup, we can register the card now */
        dev_dbg(&pdev->dev, "Registering card\n");
-       ret = snd_soc_register_card(socdev);
+       ret = snd_soc_init_card(socdev);
        if (ret < 0) {
                dev_err(&pdev->dev, "aic26: failed to register card\n");
                goto card_err;
@@ -427,7 +426,7 @@ static DEVICE_ATTR(keyclick, 0644, aic26_keyclick_show, aic26_keyclick_set);
 static int aic26_spi_probe(struct spi_device *spi)
 {
        struct aic26 *aic26;
-       int rc, i, reg;
+       int ret, i, reg;
 
        dev_dbg(&spi->dev, "probing tlv320aic26 spi device\n");
 
@@ -457,6 +456,14 @@ static int aic26_spi_probe(struct spi_device *spi)
        aic26->codec.reg_cache_size = AIC26_NUM_REGS;
        aic26->codec.reg_cache = aic26->reg_cache;
 
+       aic26_dai.dev = &spi->dev;
+       ret = snd_soc_register_dai(&aic26_dai);
+       if (ret != 0) {
+               dev_err(&spi->dev, "Failed to register DAI: %d\n", ret);
+               kfree(aic26);
+               return ret;
+       }
+
        /* Reset the codec to power on defaults */
        aic26_reg_write(&aic26->codec, AIC26_REG_RESET, 0xBB00);
 
@@ -475,8 +482,8 @@ static int aic26_spi_probe(struct spi_device *spi)
 
        /* Register the sysfs files for debugging */
        /* Create SysFS files */
-       rc = device_create_file(&spi->dev, &dev_attr_keyclick);
-       if (rc)
+       ret = device_create_file(&spi->dev, &dev_attr_keyclick);
+       if (ret)
                dev_info(&spi->dev, "error creating sysfs files\n");
 
 #if defined(CONFIG_SND_SOC_OF_SIMPLE)
@@ -493,6 +500,7 @@ static int aic26_spi_remove(struct spi_device *spi)
 {
        struct aic26 *aic26 = dev_get_drvdata(&spi->dev);
 
+       snd_soc_unregister_dai(&aic26_dai);
        kfree(aic26);
 
        return 0;