|
@@ -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");
|
|
@@ -418,6 +420,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);
|
|
|
}
|
|
|
|