Merge remote-tracking branches 'spi/fix/atmel', 'spi/fix/bcm2835aux', 'spi/fix/fsl-espi', 'spi/fix/imx', 'spi/fix/loopback' and 'spi/fix/omap2-mcspi' into spi-linus
This commit is contained in:
Коммит
4dd638f8ac
|
@ -1571,6 +1571,7 @@ static int atmel_spi_probe(struct platform_device *pdev)
|
|||
|
||||
as->use_cs_gpios = true;
|
||||
if (atmel_spi_is_v2(as) &&
|
||||
pdev->dev.of_node &&
|
||||
!of_get_property(pdev->dev.of_node, "cs-gpios", NULL)) {
|
||||
as->use_cs_gpios = false;
|
||||
master->num_chipselect = 4;
|
||||
|
|
|
@ -73,8 +73,8 @@
|
|||
|
||||
/* Bitfields in CNTL1 */
|
||||
#define BCM2835_AUX_SPI_CNTL1_CSHIGH 0x00000700
|
||||
#define BCM2835_AUX_SPI_CNTL1_IDLE 0x00000080
|
||||
#define BCM2835_AUX_SPI_CNTL1_TXEMPTY 0x00000040
|
||||
#define BCM2835_AUX_SPI_CNTL1_TXEMPTY 0x00000080
|
||||
#define BCM2835_AUX_SPI_CNTL1_IDLE 0x00000040
|
||||
#define BCM2835_AUX_SPI_CNTL1_MSBF_IN 0x00000002
|
||||
#define BCM2835_AUX_SPI_CNTL1_KEEP_IN 0x00000001
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ struct fsl_espi_transfer {
|
|||
/* SPCOM register values */
|
||||
#define SPCOM_CS(x) ((x) << 30)
|
||||
#define SPCOM_TRANLEN(x) ((x) << 0)
|
||||
#define SPCOM_TRANLEN_MAX 0xFFFF /* Max transaction length */
|
||||
#define SPCOM_TRANLEN_MAX 0x10000 /* Max transaction length */
|
||||
|
||||
#define AUTOSUSPEND_TIMEOUT 2000
|
||||
|
||||
|
@ -233,7 +233,7 @@ static int fsl_espi_bufs(struct spi_device *spi, struct spi_transfer *t)
|
|||
reinit_completion(&mpc8xxx_spi->done);
|
||||
|
||||
/* Set SPCOM[CS] and SPCOM[TRANLEN] field */
|
||||
if ((t->len - 1) > SPCOM_TRANLEN_MAX) {
|
||||
if (t->len > SPCOM_TRANLEN_MAX) {
|
||||
dev_err(mpc8xxx_spi->dev, "Transaction length (%d)"
|
||||
" beyond the SPCOM[TRANLEN] field\n", t->len);
|
||||
return -EINVAL;
|
||||
|
|
|
@ -929,7 +929,7 @@ static int spi_imx_dma_transfer(struct spi_imx_data *spi_imx,
|
|||
tx->sgl, tx->nents, DMA_MEM_TO_DEV,
|
||||
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
||||
if (!desc_tx)
|
||||
goto no_dma;
|
||||
goto tx_nodma;
|
||||
|
||||
desc_tx->callback = spi_imx_dma_tx_callback;
|
||||
desc_tx->callback_param = (void *)spi_imx;
|
||||
|
@ -941,7 +941,7 @@ static int spi_imx_dma_transfer(struct spi_imx_data *spi_imx,
|
|||
rx->sgl, rx->nents, DMA_DEV_TO_MEM,
|
||||
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
||||
if (!desc_rx)
|
||||
goto no_dma;
|
||||
goto rx_nodma;
|
||||
|
||||
desc_rx->callback = spi_imx_dma_rx_callback;
|
||||
desc_rx->callback_param = (void *)spi_imx;
|
||||
|
@ -1008,7 +1008,9 @@ static int spi_imx_dma_transfer(struct spi_imx_data *spi_imx,
|
|||
|
||||
return ret;
|
||||
|
||||
no_dma:
|
||||
rx_nodma:
|
||||
dmaengine_terminate_all(master->dma_tx);
|
||||
tx_nodma:
|
||||
pr_warn_once("%s %s: DMA not available, falling back to PIO\n",
|
||||
dev_driver_string(&master->dev),
|
||||
dev_name(&master->dev));
|
||||
|
|
|
@ -761,6 +761,7 @@ static int spi_test_run_iter(struct spi_device *spi,
|
|||
test.iterate_transfer_mask = 1;
|
||||
|
||||
/* count number of transfers with tx/rx_buf != NULL */
|
||||
rx_count = tx_count = 0;
|
||||
for (i = 0; i < test.transfer_count; i++) {
|
||||
if (test.transfers[i].tx_buf)
|
||||
tx_count++;
|
||||
|
|
|
@ -1490,6 +1490,8 @@ static int omap2_mcspi_probe(struct platform_device *pdev)
|
|||
return status;
|
||||
|
||||
disable_pm:
|
||||
pm_runtime_dont_use_autosuspend(&pdev->dev);
|
||||
pm_runtime_put_sync(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
free_master:
|
||||
spi_master_put(master);
|
||||
|
@ -1501,6 +1503,7 @@ static int omap2_mcspi_remove(struct platform_device *pdev)
|
|||
struct spi_master *master = platform_get_drvdata(pdev);
|
||||
struct omap2_mcspi *mcspi = spi_master_get_devdata(master);
|
||||
|
||||
pm_runtime_dont_use_autosuspend(mcspi->dev);
|
||||
pm_runtime_put_sync(mcspi->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче