aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi-coldfire-qspi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/spi/spi-coldfire-qspi.c')
-rw-r--r--drivers/spi/spi-coldfire-qspi.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/drivers/spi/spi-coldfire-qspi.c b/drivers/spi/spi-coldfire-qspi.c
index 7b5cc9e4e94d..0631b9d4a5de 100644
--- a/drivers/spi/spi-coldfire-qspi.c
+++ b/drivers/spi/spi-coldfire-qspi.c
@@ -312,10 +312,7 @@ static int mcfqspi_transfer_one_message(struct spi_master *master,
312 bool cs_high = spi->mode & SPI_CS_HIGH; 312 bool cs_high = spi->mode & SPI_CS_HIGH;
313 u16 qmr = MCFQSPI_QMR_MSTR; 313 u16 qmr = MCFQSPI_QMR_MSTR;
314 314
315 if (t->bits_per_word) 315 qmr |= t->bits_per_word << 10;
316 qmr |= t->bits_per_word << 10;
317 else
318 qmr |= spi->bits_per_word << 10;
319 if (spi->mode & SPI_CPHA) 316 if (spi->mode & SPI_CPHA)
320 qmr |= MCFQSPI_QMR_CPHA; 317 qmr |= MCFQSPI_QMR_CPHA;
321 if (spi->mode & SPI_CPOL) 318 if (spi->mode & SPI_CPOL)
@@ -377,11 +374,6 @@ static int mcfqspi_unprepare_transfer_hw(struct spi_master *master)
377 374
378static int mcfqspi_setup(struct spi_device *spi) 375static int mcfqspi_setup(struct spi_device *spi)
379{ 376{
380 if ((spi->bits_per_word < 8) || (spi->bits_per_word > 16)) {
381 dev_dbg(&spi->dev, "%d bits per word is not supported\n",
382 spi->bits_per_word);
383 return -EINVAL;
384 }
385 if (spi->chip_select >= spi->master->num_chipselect) { 377 if (spi->chip_select >= spi->master->num_chipselect) {
386 dev_dbg(&spi->dev, "%d chip select is out of range\n", 378 dev_dbg(&spi->dev, "%d chip select is out of range\n",
387 spi->chip_select); 379 spi->chip_select);
@@ -408,6 +400,12 @@ static int mcfqspi_probe(struct platform_device *pdev)
408 struct mcfqspi_platform_data *pdata; 400 struct mcfqspi_platform_data *pdata;
409 int status; 401 int status;
410 402
403 pdata = pdev->dev.platform_data;
404 if (!pdata) {
405 dev_dbg(&pdev->dev, "platform data is missing\n");
406 return -ENOENT;
407 }
408
411 master = spi_alloc_master(&pdev->dev, sizeof(*mcfqspi)); 409 master = spi_alloc_master(&pdev->dev, sizeof(*mcfqspi));
412 if (master == NULL) { 410 if (master == NULL) {
413 dev_dbg(&pdev->dev, "spi_alloc_master failed\n"); 411 dev_dbg(&pdev->dev, "spi_alloc_master failed\n");
@@ -458,11 +456,6 @@ static int mcfqspi_probe(struct platform_device *pdev)
458 } 456 }
459 clk_enable(mcfqspi->clk); 457 clk_enable(mcfqspi->clk);
460 458
461 pdata = pdev->dev.platform_data;
462 if (!pdata) {
463 dev_dbg(&pdev->dev, "platform data is missing\n");
464 goto fail4;
465 }
466 master->bus_num = pdata->bus_num; 459 master->bus_num = pdata->bus_num;
467 master->num_chipselect = pdata->num_chipselect; 460 master->num_chipselect = pdata->num_chipselect;
468 461
@@ -477,6 +470,7 @@ static int mcfqspi_probe(struct platform_device *pdev)
477 mcfqspi->dev = &pdev->dev; 470 mcfqspi->dev = &pdev->dev;
478 471
479 master->mode_bits = SPI_CS_HIGH | SPI_CPOL | SPI_CPHA; 472 master->mode_bits = SPI_CS_HIGH | SPI_CPOL | SPI_CPHA;
473 master->bits_per_word_mask = SPI_BPW_RANGE_MASK(8, 16);
480 master->setup = mcfqspi_setup; 474 master->setup = mcfqspi_setup;
481 master->transfer_one_message = mcfqspi_transfer_one_message; 475 master->transfer_one_message = mcfqspi_transfer_one_message;
482 master->prepare_transfer_hardware = mcfqspi_prepare_transfer_hw; 476 master->prepare_transfer_hardware = mcfqspi_prepare_transfer_hw;
@@ -524,7 +518,6 @@ static int mcfqspi_remove(struct platform_device *pdev)
524 /* disable the hardware (set the baud rate to 0) */ 518 /* disable the hardware (set the baud rate to 0) */
525 mcfqspi_wr_qmr(mcfqspi, MCFQSPI_QMR_MSTR); 519 mcfqspi_wr_qmr(mcfqspi, MCFQSPI_QMR_MSTR);
526 520
527 platform_set_drvdata(pdev, NULL);
528 mcfqspi_cs_teardown(mcfqspi); 521 mcfqspi_cs_teardown(mcfqspi);
529 clk_disable(mcfqspi->clk); 522 clk_disable(mcfqspi->clk);
530 clk_put(mcfqspi->clk); 523 clk_put(mcfqspi->clk);