OSDN Git Service

Merge remote-tracking branches 'spi/topic/altera', 'spi/topic/atmel', 'spi/topic...
authorMark Brown <broonie@linaro.org>
Sun, 30 Mar 2014 00:50:57 +0000 (00:50 +0000)
committerMark Brown <broonie@linaro.org>
Sun, 30 Mar 2014 00:50:57 +0000 (00:50 +0000)
1  2  3  4  5  6  7  8  9 
drivers/spi/spi-atmel.c

diff --combined drivers/spi/spi-atmel.c
         
         #include <linux/io.h>
         #include <linux/gpio.h>
++ ++++++#include <linux/pinctrl/consumer.h>
         
         /* SPI register offsets */
         #define SPI_CR                                 0x0000
@@@@@@@@@@ -1087,14 -1087,14 -1088,6 -1087,14 -1087,14 -1087,14 -1087,14 -1087,14 -1087,14 +1088,6 @@@@@@@@@@ static int atmel_spi_one_transfer(struc
                        }
                }
         
-- ------       if (xfer->bits_per_word > 8) {
-- ------               if (xfer->len % 2) {
-- ------                       dev_dbg(&spi->dev,
-- ------                       "buffer len should be 16 bits aligned\n");
-- ------                       return -EINVAL;
-- ------               }
-- ------       }
-- ------
                /*
                 * DMA map early, for performance (empties dcache ASAP) and
                 * better fault reporting.
@@@@@@@@@@ -1221,9 -1221,9 -1214,6 -1221,9 -1221,9 -1221,9 -1221,9 -1221,9 -1221,9 +1214,6 @@@@@@@@@@ static int atmel_spi_transfer_one_messa
                dev_dbg(&spi->dev, "new message %p submitted for %s\n",
                                                msg, dev_name(&spi->dev));
         
-- ------       if (unlikely(list_empty(&msg->transfers)))
-- ------               return -EINVAL;
-- ------
                atmel_spi_lock(as);
                cs_activate(as, spi);
         
         
                list_for_each_entry(xfer, &msg->transfers, transfer_list) {
                        dev_dbg(&spi->dev,
-- ------                       "  xfer %p: len %u tx %p/%08x rx %p/%08x\n",
++ ++++++                       "  xfer %p: len %u tx %p/%pad rx %p/%pad\n",
                                xfer, xfer->len,
-- ------                       xfer->tx_buf, xfer->tx_dma,
-- ------                       xfer->rx_buf, xfer->rx_dma);
++ ++++++                       xfer->tx_buf, &xfer->tx_dma,
++ ++++++                       xfer->rx_buf, &xfer->rx_dma);
                }
         
         msg_done:
@@@@@@@@@@ -1303,6 -1303,6 -1293,9 -1303,6 -1303,6 -1303,6 -1303,6 -1303,6 -1303,6 +1293,9 @@@@@@@@@@ static int atmel_spi_probe(struct platf
                struct spi_master       *master;
                struct atmel_spi        *as;
         
++ ++++++       /* Select default pin state */
++ ++++++       pinctrl_pm_select_default_state(&pdev->dev);
++ ++++++
                regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
                if (!regs)
                        return -ENXIO;
@@@@@@@@@@ -1455,16 -1455,8 -1448,11 -1455,8 -1455,8 -1455,8 -1455,8 -1455,8 -1455,8 +1448,19 @@@@@@@@@@ static int atmel_spi_suspend(struct dev
         {
                struct spi_master       *master = dev_get_drvdata(dev);
                struct atmel_spi        *as = spi_master_get_devdata(master);
 ++++++++       int ret;
 ++++++++
 ++++++++       /* Stop the queue running */
 ++++++++       ret = spi_master_suspend(master);
 ++++++++       if (ret) {
 ++++++++               dev_warn(dev, "cannot suspend master\n");
 ++++++++               return ret;
 ++++++++       }
         
                clk_disable_unprepare(as->clk);
++ ++++++
++ ++++++       pinctrl_pm_select_sleep_state(dev);
++ ++++++
                return 0;
         }
         
@@@@@@@@@@ -1472,16 -1464,9 -1460,11 -1464,9 -1464,9 -1464,9 -1464,9 -1464,9 -1464,9 +1468,18 @@@@@@@@@@ static int atmel_spi_resume(struct devi
         {
                struct spi_master       *master = dev_get_drvdata(dev);
                struct atmel_spi        *as = spi_master_get_devdata(master);
 ++++++++       int ret;
 + ++++++
++ ++++++       pinctrl_pm_select_default_state(dev);
+        
                clk_prepare_enable(as->clk);
 --------       return 0;
 ++++++++
 ++++++++       /* Start the queue running */
 ++++++++       ret = spi_master_resume(master);
 ++++++++       if (ret)
 ++++++++               dev_err(dev, "problem starting queue (%d)\n", ret);
 ++++++++
 ++++++++       return ret;
         }
         
         static SIMPLE_DEV_PM_OPS(atmel_spi_pm_ops, atmel_spi_suspend, atmel_spi_resume);