diff options
| -rw-r--r-- | drivers/spi/spi-ath79.c | 4 | ||||
| -rw-r--r-- | drivers/spi/spi-atmel.c | 17 | ||||
| -rw-r--r-- | drivers/spi/spi-coldfire-qspi.c | 6 | ||||
| -rw-r--r-- | drivers/spi/spi-fsl-dspi.c | 6 | ||||
| -rw-r--r-- | drivers/spi/spi-imx.c | 4 | ||||
| -rw-r--r-- | drivers/spi/spi-topcliff-pch.c | 15 |
6 files changed, 35 insertions, 17 deletions
diff --git a/drivers/spi/spi-ath79.c b/drivers/spi/spi-ath79.c index 31534b51715a..c3b2fb9b6713 100644 --- a/drivers/spi/spi-ath79.c +++ b/drivers/spi/spi-ath79.c | |||
| @@ -132,9 +132,9 @@ static int ath79_spi_setup_cs(struct spi_device *spi) | |||
| 132 | 132 | ||
| 133 | flags = GPIOF_DIR_OUT; | 133 | flags = GPIOF_DIR_OUT; |
| 134 | if (spi->mode & SPI_CS_HIGH) | 134 | if (spi->mode & SPI_CS_HIGH) |
| 135 | flags |= GPIOF_INIT_HIGH; | ||
| 136 | else | ||
| 137 | flags |= GPIOF_INIT_LOW; | 135 | flags |= GPIOF_INIT_LOW; |
| 136 | else | ||
| 137 | flags |= GPIOF_INIT_HIGH; | ||
| 138 | 138 | ||
| 139 | status = gpio_request_one(cdata->gpio, flags, | 139 | status = gpio_request_one(cdata->gpio, flags, |
| 140 | dev_name(&spi->dev)); | 140 | dev_name(&spi->dev)); |
diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c index b0842f751016..5d7b07f08326 100644 --- a/drivers/spi/spi-atmel.c +++ b/drivers/spi/spi-atmel.c | |||
| @@ -1455,6 +1455,14 @@ static int atmel_spi_suspend(struct device *dev) | |||
| 1455 | { | 1455 | { |
| 1456 | struct spi_master *master = dev_get_drvdata(dev); | 1456 | struct spi_master *master = dev_get_drvdata(dev); |
| 1457 | struct atmel_spi *as = spi_master_get_devdata(master); | 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 | clk_disable_unprepare(as->clk); | 1467 | clk_disable_unprepare(as->clk); |
| 1460 | return 0; | 1468 | return 0; |
| @@ -1464,9 +1472,16 @@ static int atmel_spi_resume(struct device *dev) | |||
| 1464 | { | 1472 | { |
| 1465 | struct spi_master *master = dev_get_drvdata(dev); | 1473 | struct spi_master *master = dev_get_drvdata(dev); |
| 1466 | struct atmel_spi *as = spi_master_get_devdata(master); | 1474 | struct atmel_spi *as = spi_master_get_devdata(master); |
| 1475 | int ret; | ||
| 1467 | 1476 | ||
| 1468 | clk_prepare_enable(as->clk); | 1477 | clk_prepare_enable(as->clk); |
| 1469 | return 0; | 1478 | |
| 1479 | /* Start the queue running */ | ||
| 1480 | ret = spi_master_resume(master); | ||
| 1481 | if (ret) | ||
| 1482 | dev_err(dev, "problem starting queue (%d)\n", ret); | ||
| 1483 | |||
| 1484 | return ret; | ||
| 1470 | } | 1485 | } |
| 1471 | 1486 | ||
| 1472 | static SIMPLE_DEV_PM_OPS(atmel_spi_pm_ops, atmel_spi_suspend, atmel_spi_resume); | 1487 | static SIMPLE_DEV_PM_OPS(atmel_spi_pm_ops, atmel_spi_suspend, atmel_spi_resume); |
diff --git a/drivers/spi/spi-coldfire-qspi.c b/drivers/spi/spi-coldfire-qspi.c index cabed8f9119e..28ae470397a9 100644 --- a/drivers/spi/spi-coldfire-qspi.c +++ b/drivers/spi/spi-coldfire-qspi.c | |||
| @@ -514,7 +514,8 @@ static int mcfqspi_resume(struct device *dev) | |||
| 514 | #ifdef CONFIG_PM_RUNTIME | 514 | #ifdef CONFIG_PM_RUNTIME |
| 515 | static int mcfqspi_runtime_suspend(struct device *dev) | 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 | clk_disable(mcfqspi->clk); | 520 | clk_disable(mcfqspi->clk); |
| 520 | 521 | ||
| @@ -523,7 +524,8 @@ static int mcfqspi_runtime_suspend(struct device *dev) | |||
| 523 | 524 | ||
| 524 | static int mcfqspi_runtime_resume(struct device *dev) | 525 | static int mcfqspi_runtime_resume(struct device *dev) |
| 525 | { | 526 | { |
| 526 | struct mcfqspi *mcfqspi = dev_get_drvdata(dev); | 527 | struct spi_master *master = dev_get_drvdata(dev); |
| 528 | struct mcfqspi *mcfqspi = spi_master_get_devdata(master); | ||
| 527 | 529 | ||
| 528 | clk_enable(mcfqspi->clk); | 530 | clk_enable(mcfqspi->clk); |
| 529 | 531 | ||
diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c index ec79f726672a..a25392065d9b 100644 --- a/drivers/spi/spi-fsl-dspi.c +++ b/drivers/spi/spi-fsl-dspi.c | |||
| @@ -420,7 +420,6 @@ static int dspi_suspend(struct device *dev) | |||
| 420 | 420 | ||
| 421 | static int dspi_resume(struct device *dev) | 421 | static int dspi_resume(struct device *dev) |
| 422 | { | 422 | { |
| 423 | |||
| 424 | struct spi_master *master = dev_get_drvdata(dev); | 423 | struct spi_master *master = dev_get_drvdata(dev); |
| 425 | struct fsl_dspi *dspi = spi_master_get_devdata(master); | 424 | struct fsl_dspi *dspi = spi_master_get_devdata(master); |
| 426 | 425 | ||
| @@ -504,7 +503,7 @@ static int dspi_probe(struct platform_device *pdev) | |||
| 504 | clk_prepare_enable(dspi->clk); | 503 | clk_prepare_enable(dspi->clk); |
| 505 | 504 | ||
| 506 | init_waitqueue_head(&dspi->waitq); | 505 | init_waitqueue_head(&dspi->waitq); |
| 507 | platform_set_drvdata(pdev, dspi); | 506 | platform_set_drvdata(pdev, master); |
| 508 | 507 | ||
| 509 | ret = spi_bitbang_start(&dspi->bitbang); | 508 | ret = spi_bitbang_start(&dspi->bitbang); |
| 510 | if (ret != 0) { | 509 | if (ret != 0) { |
| @@ -525,7 +524,8 @@ out_master_put: | |||
| 525 | 524 | ||
| 526 | static int dspi_remove(struct platform_device *pdev) | 525 | static int dspi_remove(struct platform_device *pdev) |
| 527 | { | 526 | { |
| 528 | struct fsl_dspi *dspi = platform_get_drvdata(pdev); | 527 | struct spi_master *master = platform_get_drvdata(pdev); |
| 528 | struct fsl_dspi *dspi = spi_master_get_devdata(master); | ||
| 529 | 529 | ||
| 530 | /* Disconnect from the SPI framework */ | 530 | /* Disconnect from the SPI framework */ |
| 531 | spi_bitbang_stop(&dspi->bitbang); | 531 | spi_bitbang_stop(&dspi->bitbang); |
diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c index a5474ef9d2a0..47f15d97e7fa 100644 --- a/drivers/spi/spi-imx.c +++ b/drivers/spi/spi-imx.c | |||
| @@ -948,8 +948,8 @@ static int spi_imx_remove(struct platform_device *pdev) | |||
| 948 | spi_bitbang_stop(&spi_imx->bitbang); | 948 | spi_bitbang_stop(&spi_imx->bitbang); |
| 949 | 949 | ||
| 950 | writel(0, spi_imx->base + MXC_CSPICTRL); | 950 | writel(0, spi_imx->base + MXC_CSPICTRL); |
| 951 | clk_disable_unprepare(spi_imx->clk_ipg); | 951 | clk_unprepare(spi_imx->clk_ipg); |
| 952 | clk_disable_unprepare(spi_imx->clk_per); | 952 | clk_unprepare(spi_imx->clk_per); |
| 953 | spi_master_put(master); | 953 | spi_master_put(master); |
| 954 | 954 | ||
| 955 | return 0; | 955 | return 0; |
diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c index 2e7f38c7a961..88eb57e858b3 100644 --- a/drivers/spi/spi-topcliff-pch.c +++ b/drivers/spi/spi-topcliff-pch.c | |||
| @@ -915,7 +915,7 @@ static void pch_spi_request_dma(struct pch_spi_data *data, int bpw) | |||
| 915 | /* Set Tx DMA */ | 915 | /* Set Tx DMA */ |
| 916 | param = &dma->param_tx; | 916 | param = &dma->param_tx; |
| 917 | param->dma_dev = &dma_dev->dev; | 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 | param->tx_reg = data->io_base_addr + PCH_SPDWR; | 919 | param->tx_reg = data->io_base_addr + PCH_SPDWR; |
| 920 | param->width = width; | 920 | param->width = width; |
| 921 | chan = dma_request_channel(mask, pch_spi_filter, param); | 921 | chan = dma_request_channel(mask, pch_spi_filter, param); |
| @@ -930,7 +930,7 @@ static void pch_spi_request_dma(struct pch_spi_data *data, int bpw) | |||
| 930 | /* Set Rx DMA */ | 930 | /* Set Rx DMA */ |
| 931 | param = &dma->param_rx; | 931 | param = &dma->param_rx; |
| 932 | param->dma_dev = &dma_dev->dev; | 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 | param->rx_reg = data->io_base_addr + PCH_SPDRR; | 934 | param->rx_reg = data->io_base_addr + PCH_SPDRR; |
| 935 | param->width = width; | 935 | param->width = width; |
| 936 | chan = dma_request_channel(mask, pch_spi_filter, param); | 936 | chan = dma_request_channel(mask, pch_spi_filter, param); |
| @@ -1452,6 +1452,11 @@ static int pch_spi_pd_probe(struct platform_device *plat_dev) | |||
| 1452 | 1452 | ||
| 1453 | pch_spi_set_master_mode(master); | 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 | ret = spi_register_master(master); | 1460 | ret = spi_register_master(master); |
| 1456 | if (ret != 0) { | 1461 | if (ret != 0) { |
| 1457 | dev_err(&plat_dev->dev, | 1462 | dev_err(&plat_dev->dev, |
| @@ -1459,14 +1464,10 @@ static int pch_spi_pd_probe(struct platform_device *plat_dev) | |||
| 1459 | goto err_spi_register_master; | 1464 | goto err_spi_register_master; |
| 1460 | } | 1465 | } |
| 1461 | 1466 | ||
| 1462 | if (use_dma) { | ||
| 1463 | dev_info(&plat_dev->dev, "Use DMA for data transfers\n"); | ||
| 1464 | pch_alloc_dma_buf(board_dat, data); | ||
| 1465 | } | ||
| 1466 | |||
| 1467 | return 0; | 1467 | return 0; |
| 1468 | 1468 | ||
| 1469 | err_spi_register_master: | 1469 | err_spi_register_master: |
| 1470 | pch_free_dma_buf(board_dat, data); | ||
| 1470 | free_irq(board_dat->pdev->irq, data); | 1471 | free_irq(board_dat->pdev->irq, data); |
| 1471 | err_request_irq: | 1472 | err_request_irq: |
| 1472 | pch_spi_free_resources(board_dat, data); | 1473 | pch_spi_free_resources(board_dat, data); |
