]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
Merge remote-tracking branches 'spi/topic/bcm2835', 'spi/topic/bcm63xx', 'spi/topic...
authorMark Brown <broonie@linaro.org>
Thu, 23 Jan 2014 13:07:05 +0000 (13:07 +0000)
committerMark Brown <broonie@linaro.org>
Thu, 23 Jan 2014 13:07:05 +0000 (13:07 +0000)
1  2  3  4  5  6  7  8  9  10  11 
drivers/spi/Kconfig
drivers/spi/spi-bcm63xx.c
drivers/spi/spi-davinci.c
drivers/spi/spi-fsl-dspi.c

diff --combined drivers/spi/Kconfig
index eb1f1ef5fa2eb69db729b6061b2d96c85aaf968b,eb1f1ef5fa2eb69db729b6061b2d96c85aaf968b,eb1f1ef5fa2eb69db729b6061b2d96c85aaf968b,62ce2a9ec6129ae24ec5b04367a630bbb89cb777,eb1f1ef5fa2eb69db729b6061b2d96c85aaf968b,4f6fbfd71135ec66d8ffc5e94e623f4a06f7fb1b,eb1f1ef5fa2eb69db729b6061b2d96c85aaf968b,eb1f1ef5fa2eb69db729b6061b2d96c85aaf968b,58bcff079cb8126445fdec4d1936846e3013ced6,eb1f1ef5fa2eb69db729b6061b2d96c85aaf968b,eb1f1ef5fa2eb69db729b6061b2d96c85aaf968b..94964af1428d37519acfb0b88f125f1b9c78c841
@@@@@@@@@@@@ -118,6 -118,6 -118,6 -118,13 -118,6 -118,6 -118,6 -118,6 -118,6 -118,6 -118,6 +118,13 @@@@@@@@@@@@ config SPI_BCM63X
                help
                     Enable support for the SPI controller on the Broadcom BCM63xx SoCs.
           
+++ +++++++config SPI_BCM63XX_HSSPI
+++ +++++++     tristate "Broadcom BCM63XX HS SPI controller driver"
+++ +++++++     depends on BCM63XX || COMPILE_TEST
+++ +++++++     help
+++ +++++++       This enables support for the High Speed SPI controller present on
+++ +++++++       newer Broadcom BCM63XX SoCs.
+++ +++++++
           config SPI_BITBANG
                tristate "Utilities for Bitbanging SPI masters"
                help
@@@@@@@@@@@@ -159,7 -159,7 -159,7 -166,7 -159,7 -159,7 -159,7 -159,7 -159,6 -159,7 -159,7 +166,6 @@@@@@@@@@@@ config SPI_DAVINC
                tristate "Texas Instruments DaVinci/DA8x/OMAP-L/AM1x SoC SPI controller"
                depends on ARCH_DAVINCI || ARCH_KEYSTONE
                select SPI_BITBANG
-------- --     select TI_EDMA
                help
                  SPI master controller for DaVinci/DA8x/OMAP-L/AM1x SPI modules.
           
@@@@@@@@@@@@ -370,7 -370,7 -370,7 -377,7 -370,7 -370,7 -370,7 -370,7 -369,7 -370,7 -370,7 +376,7 @@@@@@@@@@@@ config SPI_PXA2XX_PC
           
           config SPI_RSPI
                tristate "Renesas RSPI controller"
----- -----     depends on (SUPERH || ARCH_SHMOBILE) && SH_DMAE_BASE
+++++ +++++     depends on (SUPERH && SH_DMAE_BASE) || ARCH_SHMOBILE
                help
                  SPI driver for Renesas RSPI blocks.
           
index dceb7b216f46a2752940bcc9d92c1447aa1b7c13,469ecd8763581c3628c033e00adc47699e033f12,b440b0fef77b9f98b76d5a8f686cb739667817ca,80d56b214eb51af96ceb9e9d55ffea6bbb2d7302,80d56b214eb51af96ceb9e9d55ffea6bbb2d7302,469ecd8763581c3628c033e00adc47699e033f12,80d56b214eb51af96ceb9e9d55ffea6bbb2d7302,80d56b214eb51af96ceb9e9d55ffea6bbb2d7302,80d56b214eb51af96ceb9e9d55ffea6bbb2d7302,469ecd8763581c3628c033e00adc47699e033f12,80d56b214eb51af96ceb9e9d55ffea6bbb2d7302..77286aef2adfc9e5495704405f4c76f45855b1a0
@@@@@@@@@@@@ -169,6 -169,8 -169,8 -169,8 -169,8 -169,8 -169,8 -169,8 -169,8 -169,8 -169,8 +169,6 @@@@@@@@@@@@ static int bcm63xx_txrx_bufs(struct spi
                                       transfer_list);
                }
           
 ----------     len -= prepend_len;
 ----------
                init_completion(&bs->done);
           
                /* Fill in the Message control register */
                if (!timeout)
                        return -ETIMEDOUT;
           
-- --------     /* read out all data */
-- --------     rx_tail = bcm_spi_readb(bs, SPI_RX_TAIL);
-- --------
-- --------     if (do_rx && rx_tail != len)
-- --------             return -EIO;
-- --------
-- --------     if (!rx_tail)
++ ++++++++     if (!do_rx)
                        return 0;
           
                len = 0;
@@@@@@@@@@@@ -343,22 -345,22 -339,19 -345,22 -345,22 -345,22 -345,22 -345,22 -345,22 -345,22 -345,22 +337,19 @@@@@@@@@@@@ static int bcm63xx_spi_probe(struct pla
                irq = platform_get_irq(pdev, 0);
                if (irq < 0) {
                        dev_err(dev, "no irq\n");
-- --------             ret = -ENXIO;
-- --------             goto out;
++ ++++++++             return -ENXIO;
                }
           
-- --------     clk = clk_get(dev, "spi");
++ ++++++++     clk = devm_clk_get(dev, "spi");
                if (IS_ERR(clk)) {
                        dev_err(dev, "no clock for device\n");
-- --------             ret = PTR_ERR(clk);
-- --------             goto out;
++ ++++++++             return PTR_ERR(clk);
                }
           
                master = spi_alloc_master(dev, sizeof(*bs));
                if (!master) {
                        dev_err(dev, "out of memory\n");
-- --------             ret = -ENOMEM;
-- --------             goto out_clk;
++ ++++++++             return -ENOMEM;
                }
           
                bs = spi_master_get_devdata(master);
                }
           
                /* Initialize hardware */
-- --------     clk_prepare_enable(bs->clk);
++ ++++++++     ret = clk_prepare_enable(bs->clk);
++ ++++++++     if (ret)
++ ++++++++             goto out_err;
++ ++++++++
                bcm_spi_writeb(bs, SPI_INTR_CLEAR_ALL, SPI_INT_STATUS);
           
                /* register and we are done */
                clk_disable_unprepare(clk);
           out_err:
                spi_master_put(master);
-- --------out_clk:
-- --------     clk_put(clk);
-- --------out:
                return ret;
           }
           
           static int bcm63xx_spi_remove(struct platform_device *pdev)
           {
  --- --- -     struct spi_master *master = spi_master_get(platform_get_drvdata(pdev));
  +++ +++ +     struct spi_master *master = platform_get_drvdata(pdev);
                struct bcm63xx_spi *bs = spi_master_get_devdata(master);
           
                /* reset spi block */
           
                /* HW shutdown */
                clk_disable_unprepare(bs->clk);
-- --------     clk_put(bs->clk);
           
                return 0;
           }
           
-- --------#ifdef CONFIG_PM
++ ++++++++#ifdef CONFIG_PM_SLEEP
           static int bcm63xx_spi_suspend(struct device *dev)
           {
                struct spi_master *master = dev_get_drvdata(dev);
@@@@@@@@@@@@ -463,29 -465,29 -455,27 -465,29 -465,29 -465,29 -465,29 -465,29 -465,29 -465,29 -465,29 +453,27 @@@@@@@@@@@@ static int bcm63xx_spi_resume(struct de
           {
                struct spi_master *master = dev_get_drvdata(dev);
                struct bcm63xx_spi *bs = spi_master_get_devdata(master);
++ ++++++++     int ret;
           
-- --------     clk_prepare_enable(bs->clk);
++ ++++++++     ret = clk_prepare_enable(bs->clk);
++ ++++++++     if (ret)
++ ++++++++             return ret;
           
                spi_master_resume(master);
           
                return 0;
           }
++ ++++++++#endif
           
           static const struct dev_pm_ops bcm63xx_spi_pm_ops = {
-- --------     .suspend        = bcm63xx_spi_suspend,
-- --------     .resume         = bcm63xx_spi_resume,
++ ++++++++     SET_SYSTEM_SLEEP_PM_OPS(bcm63xx_spi_suspend, bcm63xx_spi_resume)
           };
           
-- --------#define BCM63XX_SPI_PM_OPS   (&bcm63xx_spi_pm_ops)
-- --------#else
-- --------#define BCM63XX_SPI_PM_OPS   NULL
-- --------#endif
-- --------
           static struct platform_driver bcm63xx_spi_driver = {
                .driver = {
                        .name   = "bcm63xx-spi",
                        .owner  = THIS_MODULE,
-- --------             .pm     = BCM63XX_SPI_PM_OPS,
++ ++++++++             .pm     = &bcm63xx_spi_pm_ops,
                },
                .probe          = bcm63xx_spi_probe,
                .remove         = bcm63xx_spi_remove,
index 50b2d88c81901c2b0b0ec1720f7e802ccf4924fb,50b2d88c81901c2b0b0ec1720f7e802ccf4924fb,50b2d88c81901c2b0b0ec1720f7e802ccf4924fb,50b2d88c81901c2b0b0ec1720f7e802ccf4924fb,50b2d88c81901c2b0b0ec1720f7e802ccf4924fb,ff22fb6a2a031d82647aba72f37bc81975362574,50b2d88c81901c2b0b0ec1720f7e802ccf4924fb,50b2d88c81901c2b0b0ec1720f7e802ccf4924fb,79d40c8b1cd0719a22c3479d9002da4d80cbe3ea,50b2d88c81901c2b0b0ec1720f7e802ccf4924fb,50b2d88c81901c2b0b0ec1720f7e802ccf4924fb..5e7389faa2a0189472d71fedcba95ae8ecd1cf35
@@@@@@@@@@@@ -396,10 -396,10 -396,10 -396,10 -396,10 -396,6 -396,10 -396,10 -396,10 -396,10 -396,10 +396,6 @@@@@@@@@@@@ static int davinci_spi_setup(struct spi
                dspi = spi_master_get_devdata(spi->master);
                pdata = &dspi->pdata;
           
----- -----     /* if bits per word length is zero then set it default 8 */
----- -----     if (!spi->bits_per_word)
----- -----             spi->bits_per_word = 8;
----- -----
                if (!(spi->mode & SPI_NO_CS)) {
                        if ((pdata->chip_sel == NULL) ||
                            (pdata->chip_sel[spi->chip_select] == SPI_INTERN_CS))
@@@@@@@@@@@@ -853,7 -853,7 -853,7 -853,7 -853,7 -849,7 -853,7 -853,7 -853,7 -853,7 -853,7 +849,7 @@@@@@@@@@@@ static int davinci_spi_probe(struct pla
                struct spi_master *master;
                struct davinci_spi *dspi;
                struct davinci_spi_platform_data *pdata;
-------- --     struct resource *r, *mem;
++++++++ ++     struct resource *r;
                resource_size_t dma_rx_chan = SPI_NO_RESOURCE;
                resource_size_t dma_tx_chan = SPI_NO_RESOURCE;
                int i = 0, ret = 0;
           
                dspi->pbase = r->start;
           
-------- --     mem = request_mem_region(r->start, resource_size(r), pdev->name);
-------- --     if (mem == NULL) {
-------- --             ret = -EBUSY;
++++++++ ++     dspi->base = devm_ioremap_resource(&pdev->dev, r);
++++++++ ++     if (IS_ERR(dspi->base)) {
++++++++ ++             ret = PTR_ERR(dspi->base);
                        goto free_master;
                }
           
-------- --     dspi->base = ioremap(r->start, resource_size(r));
-------- --     if (dspi->base == NULL) {
-------- --             ret = -ENOMEM;
-------- --             goto release_region;
-------- --     }
-------- --
                dspi->irq = platform_get_irq(pdev, 0);
                if (dspi->irq <= 0) {
                        ret = -EINVAL;
-------- --             goto unmap_io;
++++++++ ++             goto free_master;
                }
           
-------- --     ret = request_threaded_irq(dspi->irq, davinci_spi_irq, dummy_thread_fn,
-------- --                              0, dev_name(&pdev->dev), dspi);
++++++++ ++     ret = devm_request_threaded_irq(&pdev->dev, dspi->irq, davinci_spi_irq,
++++++++ ++                             dummy_thread_fn, 0, dev_name(&pdev->dev), dspi);
                if (ret)
-------- --             goto unmap_io;
++++++++ ++             goto free_master;
           
                dspi->bitbang.master = master;
                if (dspi->bitbang.master == NULL) {
                        ret = -ENODEV;
-------- --             goto irq_free;
++++++++ ++             goto free_master;
                }
           
-------- --     dspi->clk = clk_get(&pdev->dev, NULL);
++++++++ ++     dspi->clk = devm_clk_get(&pdev->dev, NULL);
                if (IS_ERR(dspi->clk)) {
                        ret = -ENODEV;
-------- --             goto irq_free;
++++++++ ++             goto free_master;
                }
                clk_prepare_enable(dspi->clk);
           
                                goto free_clk;
           
                        dev_info(&pdev->dev, "DMA: supported\n");
-------- --             dev_info(&pdev->dev, "DMA: RX channel: %d, TX channel: %d, "
-------- --                             "event queue: %d\n", dma_rx_chan, dma_tx_chan,
++++++++ ++             dev_info(&pdev->dev, "DMA: RX channel: %pa, TX channel: %pa, "
++++++++ ++                             "event queue: %d\n", &dma_rx_chan, &dma_tx_chan,
                                        pdata->dma_event_q);
                }
           
                dma_release_channel(dspi->dma_tx);
           free_clk:
                clk_disable_unprepare(dspi->clk);
-------- --     clk_put(dspi->clk);
-------- --irq_free:
-------- --     free_irq(dspi->irq, dspi);
-------- --unmap_io:
-------- --     iounmap(dspi->base);
-------- --release_region:
-------- --     release_mem_region(dspi->pbase, resource_size(r));
           free_master:
                spi_master_put(master);
           err:
@@@@@@@@@@@@ -1041,7 -1041,7 -1041,7 -1041,7 -1041,7 -1037,7 -1041,7 -1041,7 -1028,6 -1041,7 -1041,7 +1024,6 @@@@@@@@@@@@ static int davinci_spi_remove(struct pl
           {
                struct davinci_spi *dspi;
                struct spi_master *master;
-------- --     struct resource *r;
           
                master = platform_get_drvdata(pdev);
                dspi = spi_master_get_devdata(master);
                spi_bitbang_stop(&dspi->bitbang);
           
                clk_disable_unprepare(dspi->clk);
-------- --     clk_put(dspi->clk);
-------- --     free_irq(dspi->irq, dspi);
-------- --     iounmap(dspi->base);
-------- --     r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-------- --     release_mem_region(dspi->pbase, resource_size(r));
                spi_master_put(master);
           
                return 0;
index a37f15665a605bef82ab24be6d03aeeed10a187b,8641b03bdd7a26f6057914a05e2095c4a9d22d0c,8641b03bdd7a26f6057914a05e2095c4a9d22d0c,8641b03bdd7a26f6057914a05e2095c4a9d22d0c,8641b03bdd7a26f6057914a05e2095c4a9d22d0c,649f9d13eac5dfa2e0641cca207070d54954a018,8641b03bdd7a26f6057914a05e2095c4a9d22d0c,8641b03bdd7a26f6057914a05e2095c4a9d22d0c,8641b03bdd7a26f6057914a05e2095c4a9d22d0c,8641b03bdd7a26f6057914a05e2095c4a9d22d0c,8641b03bdd7a26f6057914a05e2095c4a9d22d0c..ec79f726672a14f7644810101afe59e82322976c
@@@@@@@@@@@@ -320,10 -320,8 -320,8 -320,8 -320,8 -320,8 -320,8 -320,8 -320,8 -320,8 -320,8 +320,10 @@@@@@@@@@@@ static void dspi_chipselect(struct spi_
                switch (value) {
                case BITBANG_CS_ACTIVE:
                        pushr |= SPI_PUSHR_CONT;
 ++++++++++             break;
                case BITBANG_CS_INACTIVE:
                        pushr &= ~SPI_PUSHR_CONT;
 ++++++++++             break;
                }
           
                writel(pushr, dspi->base + SPI_PUSHR);
@@@@@@@@@@@@ -375,9 -373,9 -373,9 -373,9 -373,9 -373,6 -373,9 -373,9 -373,9 -373,9 -373,9 +375,6 @@@@@@@@@@@@ static int dspi_setup(struct spi_devic
                if (!spi->max_speed_hz)
                        return -EINVAL;
           
----- -----     if (!spi->bits_per_word)
----- -----             spi->bits_per_word = 8;
----- -----
                return dspi_setup_transfer(spi, NULL);
           }