]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - sound/soc/au1x/dbdma2.c
ASoC: multi-component - ASoC Multi-Component Support
[mv-sheeva.git] / sound / soc / au1x / dbdma2.c
index 19e4d37eba1cf2c253c1e098aa52b8798d3b766a..00fdb9cbfc2d44816064b6f70e8a59a943ae977d 100644 (file)
@@ -51,8 +51,8 @@ struct au1xpsc_audio_dmadata {
        struct snd_pcm_substream *substream;
        unsigned long curr_period;      /* current segment DDMA is working on */
        unsigned long q_period;         /* queue period(s) */
-       unsigned long dma_area;         /* address of queued DMA area */
-       unsigned long dma_area_s;       /* start address of DMA area */
+       dma_addr_t dma_area;            /* address of queued DMA area */
+       dma_addr_t dma_area_s;          /* start address of DMA area */
        unsigned long pos;              /* current byte position being played */
        unsigned long periods;          /* number of SG segments in total */
        unsigned long period_bytes;     /* size in bytes of one SG segment */
@@ -94,8 +94,7 @@ static const struct snd_pcm_hardware au1xpsc_pcm_hardware = {
 
 static void au1x_pcm_queue_tx(struct au1xpsc_audio_dmadata *cd)
 {
-       au1xxx_dbdma_put_source_flags(cd->ddma_chan,
-                               (void *)phys_to_virt(cd->dma_area),
+       au1xxx_dbdma_put_source(cd->ddma_chan, cd->dma_area,
                                cd->period_bytes, DDMA_FLAGS_IE);
 
        /* update next-to-queue period */
@@ -109,9 +108,8 @@ static void au1x_pcm_queue_tx(struct au1xpsc_audio_dmadata *cd)
 
 static void au1x_pcm_queue_rx(struct au1xpsc_audio_dmadata *cd)
 {
-       au1xxx_dbdma_put_dest_flags(cd->ddma_chan,
-                               (void *)phys_to_virt(cd->dma_area),
-                               cd->period_bytes, DDMA_FLAGS_IE);
+       au1xxx_dbdma_put_dest(cd->ddma_chan, cd->dma_area,
+                             cd->period_bytes, DDMA_FLAGS_IE);
 
        /* update next-to-queue period */
        ++cd->q_period;
@@ -233,7 +231,7 @@ static int au1xpsc_pcm_hw_params(struct snd_pcm_substream *substream,
        pcd->substream = substream;
        pcd->period_bytes = params_period_bytes(params);
        pcd->periods = params_periods(params);
-       pcd->dma_area_s = pcd->dma_area = (unsigned long)runtime->dma_addr;
+       pcd->dma_area_s = pcd->dma_area = runtime->dma_addr;
        pcd->q_period = 0;
        pcd->curr_period = 0;
        pcd->pos = 0;
@@ -331,7 +329,7 @@ static int au1xpsc_pcm_new(struct snd_card *card,
        return 0;
 }
 
-static int au1xpsc_pcm_probe(struct platform_device *pdev)
+static int au1xpsc_pcm_probe(struct snd_soc_platform *platform)
 {
        if (!au1xpsc_audio_pcmdma[PCM_TX] || !au1xpsc_audio_pcmdma[PCM_RX])
                return -ENODEV;
@@ -339,17 +337,10 @@ static int au1xpsc_pcm_probe(struct platform_device *pdev)
        return 0;
 }
 
-static int au1xpsc_pcm_remove(struct platform_device *pdev)
-{
-       return 0;
-}
-
 /* au1xpsc audio platform */
-struct snd_soc_platform au1xpsc_soc_platform = {
-       .name           = "au1xpsc-pcm-dbdma",
+struct snd_soc_platform_driver au1xpsc_soc_platform = {
        .probe          = au1xpsc_pcm_probe,
-       .remove         = au1xpsc_pcm_remove,
-       .pcm_ops        = &au1xpsc_pcm_ops,
+       .ops            = &au1xpsc_pcm_ops,
        .pcm_new        = au1xpsc_pcm_new,
        .pcm_free       = au1xpsc_pcm_free_dma_buffers,
 };
@@ -389,7 +380,7 @@ static int __devinit au1xpsc_pcm_drvprobe(struct platform_device *pdev)
        }
        (au1xpsc_audio_pcmdma[PCM_RX])->ddma_id = r->start;
 
-       ret = snd_soc_register_platform(&au1xpsc_soc_platform);
+       ret = snd_soc_register_platform(&pdev->dev, &au1xpsc_soc_platform);
        if (!ret)
                return ret;
 
@@ -406,7 +397,7 @@ static int __devexit au1xpsc_pcm_drvremove(struct platform_device *pdev)
 {
        int i;
 
-       snd_soc_unregister_platform(&au1xpsc_soc_platform);
+       snd_soc_unregister_platform(&pdev->dev);
 
        for (i = 0; i < 2; i++) {
                if (au1xpsc_audio_pcmdma[i]) {
@@ -421,7 +412,7 @@ static int __devexit au1xpsc_pcm_drvremove(struct platform_device *pdev)
 
 static struct platform_driver au1xpsc_pcm_driver = {
        .driver = {
-               .name   = "au1xpsc-pcm",
+               .name   = "au1xpsc-pcm-audio",
                .owner  = THIS_MODULE,
        },
        .probe          = au1xpsc_pcm_drvprobe,