]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - sound/soc/samsung/idma.c
Merge tag 'please-pull-pstore' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl...
[karo-tx-linux.git] / sound / soc / samsung / idma.c
index a07950b0c8ceba1756163c0d59b4c20b0ad7269e..6e5fed30aa27a00ccfb741519d6cf2ae6cd8bc9c 100644 (file)
@@ -68,6 +68,8 @@ static struct idma_info {
        dma_addr_t      lp_tx_addr;
 } idma;
 
+static int idma_irq;
+
 static void idma_getpos(dma_addr_t *src)
 {
        *src = idma.lp_tx_addr +
@@ -305,7 +307,7 @@ static int idma_open(struct snd_pcm_substream *substream)
        if (prtd == NULL)
                return -ENOMEM;
 
-       ret = request_irq(IRQ_I2S0, iis_irq, 0, "i2s", prtd);
+       ret = request_irq(idma_irq, iis_irq, 0, "i2s", prtd);
        if (ret < 0) {
                pr_err("fail to claim i2s irq , ret = %d\n", ret);
                kfree(prtd);
@@ -324,7 +326,7 @@ static int idma_close(struct snd_pcm_substream *substream)
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct idma_ctrl *prtd = runtime->private_data;
 
-       free_irq(IRQ_I2S0, prtd);
+       free_irq(idma_irq, prtd);
 
        if (!prtd)
                pr_err("idma_close called with prtd == NULL\n");
@@ -409,6 +411,7 @@ void idma_reg_addr_init(void __iomem *regs, dma_addr_t addr)
        idma.regs = regs;
        idma.lp_tx_addr = addr;
 }
+EXPORT_SYMBOL_GPL(idma_reg_addr_init);
 
 static struct snd_soc_platform_driver asoc_idma_platform = {
        .ops = &idma_ops,
@@ -418,6 +421,10 @@ static struct snd_soc_platform_driver asoc_idma_platform = {
 
 static int asoc_idma_platform_probe(struct platform_device *pdev)
 {
+       idma_irq = platform_get_irq(pdev, 0);
+       if (idma_irq < 0)
+               return idma_irq;
+
        return snd_soc_register_platform(&pdev->dev, &asoc_idma_platform);
 }