diff options
Diffstat (limited to 'drivers/spi/spi-coldfire-qspi.c')
-rw-r--r-- | drivers/spi/spi-coldfire-qspi.c | 23 |
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 | ||
378 | static int mcfqspi_setup(struct spi_device *spi) | 375 | static 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); |