Merge remote-tracking branches 'asoc/topic/dmaengine', 'asoc/topic/fsi', 'asoc/topic...
authorMark Brown <broonie@kernel.org>
Sun, 12 Apr 2015 18:48:59 +0000 (19:48 +0100)
committerMark Brown <broonie@kernel.org>
Sun, 12 Apr 2015 18:48:59 +0000 (19:48 +0100)
1  2  3  4  5 
sound/soc/fsl/fsl_ssi.c

diff --combined sound/soc/fsl/fsl_ssi.c
index 6b0c8f717ec2c0781af066cfb1bc3bcce8567791,2595611e8a6ded3876345767bde2ce51e079c9ee,2595611e8a6ded3876345767bde2ce51e079c9ee,2595611e8a6ded3876345767bde2ce51e079c9ee,4f643c45068fd2b4e5b11ba2556db801d523f083..e8bb8eef1d16bee3d9d8ca5e4b7e4d5a7a026267
@@@@@@ -603,20 -603,17 -603,17 -603,17 -603,17 +603,20 @@@@@@ static int fsl_ssi_set_bclk(struct snd_
        factor = (div2 + 1) * (7 * psr + 1) * 2;
     
        for (i = 0; i < 255; i++) {
 ----           /* The bclk rate must be smaller than 1/5 sysclk rate */
 ----           if (factor * (i + 1) < 5)
 ----                   continue;
 ----
 ----           tmprate = freq * factor * (i + 2);
 ++++           tmprate = freq * factor * (i + 1);
     
                if (baudclk_is_used)
                        clkrate = clk_get_rate(ssi_private->baudclk);
                else
                        clkrate = clk_round_rate(ssi_private->baudclk, tmprate);
     
 ++++           /*
 ++++            * Hardware limitation: The bclk rate must be
 ++++            * never greater than 1/5 IPG clock rate
 ++++            */
 ++++           if (clkrate * 5 > clk_get_rate(ssi_private->clk))
 ++++                   continue;
 ++++
                clkrate /= factor;
                afreq = clkrate / (i + 1);
     
@@@@@@ -1227,7 -1224,7 -1224,7 -1224,7 -1224,7 +1227,7 @@@@@@ static int fsl_ssi_imx_probe(struct pla
        ssi_private->dma_params_tx.addr = ssi_private->ssi_phys + CCSR_SSI_STX0;
        ssi_private->dma_params_rx.addr = ssi_private->ssi_phys + CCSR_SSI_SRX0;
     
 ----   ret = !of_property_read_u32_array(np, "dmas", dmas, 4);
 ++++   ret = of_property_read_u32_array(np, "dmas", dmas, 4);
        if (ssi_private->use_dma && !ret && dmas[2] == IMX_DMATYPE_SSI_DUAL) {
                ssi_private->use_dual_fifo = true;
                /* When using dual fifo mode, we need to keep watermark
@@@@@@ -1288,7 -1285,7 -1285,7 -1285,7 -1285,7 +1288,7 @@@@@@ static int fsl_ssi_probe(struct platfor
        const struct of_device_id *of_id;
        const char *p, *sprop;
        const uint32_t *iprop;
----    struct resource res;
++++    struct resource *res;
        void __iomem *iomem;
        char name[64];
     
        }
        ssi_private->cpu_dai_drv.name = dev_name(&pdev->dev);
     
----    /* Get the addresses and IRQ */
----    ret = of_address_to_resource(np, 0, &res);
----    if (ret) {
----            dev_err(&pdev->dev, "could not determine device resources\n");
----            return ret;
----    }
----    ssi_private->ssi_phys = res.start;
---- 
----    iomem = devm_ioremap(&pdev->dev, res.start, resource_size(&res));
----    if (!iomem) {
----            dev_err(&pdev->dev, "could not map device resources\n");
----            return -ENOMEM;
----    }
++++    res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++++    iomem = devm_ioremap_resource(&pdev->dev, res);
++++    if (IS_ERR(iomem))
++++            return PTR_ERR(iomem);
++++    ssi_private->ssi_phys = res->start;
     
        ret = of_property_match_string(np, "clock-names", "ipg");
        if (ret < 0) {
                        return ret;
        }
     
----    ret = snd_soc_register_component(&pdev->dev, &fsl_ssi_component,
----                                     &ssi_private->cpu_dai_drv, 1);
++++    ret = devm_snd_soc_register_component(&pdev->dev, &fsl_ssi_component,
++++                                          &ssi_private->cpu_dai_drv, 1);
        if (ret) {
                dev_err(&pdev->dev, "failed to register DAI: %d\n", ret);
                goto error_asoc_register;
                if (ret < 0) {
                        dev_err(&pdev->dev, "could not claim irq %u\n",
                                        ssi_private->irq);
----                    goto error_irq;
++++                    goto error_asoc_register;
                }
        }
     
        ret = fsl_ssi_debugfs_create(&ssi_private->dbg_stats, &pdev->dev);
        if (ret)
----            goto error_irq;
++++            goto error_asoc_register;
     
        /*
         * If codec-handle property is missing from SSI node, we assume
     error_sound_card:
        fsl_ssi_debugfs_remove(&ssi_private->dbg_stats);
     
---- error_irq:
----    snd_soc_unregister_component(&pdev->dev);
---- 
     error_asoc_register:
        if (ssi_private->soc->imx)
                fsl_ssi_imx_clean(pdev, ssi_private);
@@@@@@ -1472,7 -1469,7 -1469,7 -1469,7 -1458,6 +1461,6 @@@@@@ static int fsl_ssi_remove(struct platfo
     
        if (ssi_private->pdev)
                platform_device_unregister(ssi_private->pdev);
----    snd_soc_unregister_component(&pdev->dev);
     
        if (ssi_private->soc->imx)
                fsl_ssi_imx_clean(pdev, ssi_private);