Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'spi-v3.14-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi

Pull spi fixes from Mark Brown:
"A scattering of driver specific fixes here.

The fixes from Axel cover bitrot in apparently unmaintained drivers,
the at79 bug is fixing a glitch on /CS during initialisation of some
devices which could break some slaves and the remainder are fixes for
recently introduced bugs from the past release cycle or so"

* tag 'spi-v3.14-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
spi: atmel: add missing spi_master_{resume,suspend} calls to PM callbacks
spi: coldfire-qspi: Fix getting correct address for *mcfqspi
spi: fsl-dspi: Fix getting correct address for master
spi: spi-ath79: fix initial GPIO CS line setup
spi: spi-imx: spi_imx_remove: do not disable disabled clocks
spi-topcliff-pch: Fix probing when DMA mode is used
spi/topcliff-pch: Fix DMA channel

+35 -17
+2 -2
drivers/spi/spi-ath79.c
··· 132 132 133 133 flags = GPIOF_DIR_OUT; 134 134 if (spi->mode & SPI_CS_HIGH) 135 - flags |= GPIOF_INIT_HIGH; 136 - else 137 135 flags |= GPIOF_INIT_LOW; 136 + else 137 + flags |= GPIOF_INIT_HIGH; 138 138 139 139 status = gpio_request_one(cdata->gpio, flags, 140 140 dev_name(&spi->dev));
+16 -1
drivers/spi/spi-atmel.c
··· 1455 1455 { 1456 1456 struct spi_master *master = dev_get_drvdata(dev); 1457 1457 struct atmel_spi *as = spi_master_get_devdata(master); 1458 + int ret; 1459 + 1460 + /* Stop the queue running */ 1461 + ret = spi_master_suspend(master); 1462 + if (ret) { 1463 + dev_warn(dev, "cannot suspend master\n"); 1464 + return ret; 1465 + } 1458 1466 1459 1467 clk_disable_unprepare(as->clk); 1460 1468 return 0; ··· 1472 1464 { 1473 1465 struct spi_master *master = dev_get_drvdata(dev); 1474 1466 struct atmel_spi *as = spi_master_get_devdata(master); 1467 + int ret; 1475 1468 1476 1469 clk_prepare_enable(as->clk); 1477 - return 0; 1470 + 1471 + /* Start the queue running */ 1472 + ret = spi_master_resume(master); 1473 + if (ret) 1474 + dev_err(dev, "problem starting queue (%d)\n", ret); 1475 + 1476 + return ret; 1478 1477 } 1479 1478 1480 1479 static SIMPLE_DEV_PM_OPS(atmel_spi_pm_ops, atmel_spi_suspend, atmel_spi_resume);
+4 -2
drivers/spi/spi-coldfire-qspi.c
··· 514 514 #ifdef CONFIG_PM_RUNTIME 515 515 static int mcfqspi_runtime_suspend(struct device *dev) 516 516 { 517 - struct mcfqspi *mcfqspi = dev_get_drvdata(dev); 517 + struct spi_master *master = dev_get_drvdata(dev); 518 + struct mcfqspi *mcfqspi = spi_master_get_devdata(master); 518 519 519 520 clk_disable(mcfqspi->clk); 520 521 ··· 524 523 525 524 static int mcfqspi_runtime_resume(struct device *dev) 526 525 { 527 - struct mcfqspi *mcfqspi = dev_get_drvdata(dev); 526 + struct spi_master *master = dev_get_drvdata(dev); 527 + struct mcfqspi *mcfqspi = spi_master_get_devdata(master); 528 528 529 529 clk_enable(mcfqspi->clk); 530 530
+3 -3
drivers/spi/spi-fsl-dspi.c
··· 420 420 421 421 static int dspi_resume(struct device *dev) 422 422 { 423 - 424 423 struct spi_master *master = dev_get_drvdata(dev); 425 424 struct fsl_dspi *dspi = spi_master_get_devdata(master); 426 425 ··· 503 504 clk_prepare_enable(dspi->clk); 504 505 505 506 init_waitqueue_head(&dspi->waitq); 506 - platform_set_drvdata(pdev, dspi); 507 + platform_set_drvdata(pdev, master); 507 508 508 509 ret = spi_bitbang_start(&dspi->bitbang); 509 510 if (ret != 0) { ··· 524 525 525 526 static int dspi_remove(struct platform_device *pdev) 526 527 { 527 - struct fsl_dspi *dspi = platform_get_drvdata(pdev); 528 + struct spi_master *master = platform_get_drvdata(pdev); 529 + struct fsl_dspi *dspi = spi_master_get_devdata(master); 528 530 529 531 /* Disconnect from the SPI framework */ 530 532 spi_bitbang_stop(&dspi->bitbang);
+2 -2
drivers/spi/spi-imx.c
··· 948 948 spi_bitbang_stop(&spi_imx->bitbang); 949 949 950 950 writel(0, spi_imx->base + MXC_CSPICTRL); 951 - clk_disable_unprepare(spi_imx->clk_ipg); 952 - clk_disable_unprepare(spi_imx->clk_per); 951 + clk_unprepare(spi_imx->clk_ipg); 952 + clk_unprepare(spi_imx->clk_per); 953 953 spi_master_put(master); 954 954 955 955 return 0;
+8 -7
drivers/spi/spi-topcliff-pch.c
··· 915 915 /* Set Tx DMA */ 916 916 param = &dma->param_tx; 917 917 param->dma_dev = &dma_dev->dev; 918 - param->chan_id = data->master->bus_num * 2; /* Tx = 0, 2 */ 918 + param->chan_id = data->ch * 2; /* Tx = 0, 2 */; 919 919 param->tx_reg = data->io_base_addr + PCH_SPDWR; 920 920 param->width = width; 921 921 chan = dma_request_channel(mask, pch_spi_filter, param); ··· 930 930 /* Set Rx DMA */ 931 931 param = &dma->param_rx; 932 932 param->dma_dev = &dma_dev->dev; 933 - param->chan_id = data->master->bus_num * 2 + 1; /* Rx = Tx + 1 */ 933 + param->chan_id = data->ch * 2 + 1; /* Rx = Tx + 1 */; 934 934 param->rx_reg = data->io_base_addr + PCH_SPDRR; 935 935 param->width = width; 936 936 chan = dma_request_channel(mask, pch_spi_filter, param); ··· 1452 1452 1453 1453 pch_spi_set_master_mode(master); 1454 1454 1455 + if (use_dma) { 1456 + dev_info(&plat_dev->dev, "Use DMA for data transfers\n"); 1457 + pch_alloc_dma_buf(board_dat, data); 1458 + } 1459 + 1455 1460 ret = spi_register_master(master); 1456 1461 if (ret != 0) { 1457 1462 dev_err(&plat_dev->dev, ··· 1464 1459 goto err_spi_register_master; 1465 1460 } 1466 1461 1467 - if (use_dma) { 1468 - dev_info(&plat_dev->dev, "Use DMA for data transfers\n"); 1469 - pch_alloc_dma_buf(board_dat, data); 1470 - } 1471 - 1472 1462 return 0; 1473 1463 1474 1464 err_spi_register_master: 1465 + pch_free_dma_buf(board_dat, data); 1475 1466 free_irq(board_dat->pdev->irq, data); 1476 1467 err_request_irq: 1477 1468 pch_spi_free_resources(board_dat, data);