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 branch 'merge-spi' of git://git.secretlab.ca/git/linux-2.6

* 'merge-spi' of git://git.secretlab.ca/git/linux-2.6:
of/spi: Fix OF-style driver binding of spi devices
spi: spi-gpio.c tests SPI_MASTER_NO_RX bit twice, but not SPI_MASTER_NO_TX
spi/mpc8xxx: fix buffer overrun on large transfers

+14 -3
+5
drivers/spi/spi.c
··· 23 23 #include <linux/init.h> 24 24 #include <linux/cache.h> 25 25 #include <linux/mutex.h> 26 + #include <linux/of_device.h> 26 27 #include <linux/slab.h> 27 28 #include <linux/mod_devicetable.h> 28 29 #include <linux/spi/spi.h> ··· 86 85 { 87 86 const struct spi_device *spi = to_spi_device(dev); 88 87 const struct spi_driver *sdrv = to_spi_driver(drv); 88 + 89 + /* Attempt an OF style match */ 90 + if (of_driver_match_device(dev, drv)) 91 + return 1; 89 92 90 93 if (sdrv->id_table) 91 94 return !!spi_match_id(sdrv->id_table, spi);
+1 -1
drivers/spi/spi_gpio.c
··· 350 350 spi_gpio->bitbang.master = spi_master_get(master); 351 351 spi_gpio->bitbang.chipselect = spi_gpio_chipselect; 352 352 353 - if ((master_flags & (SPI_MASTER_NO_RX | SPI_MASTER_NO_RX)) == 0) { 353 + if ((master_flags & (SPI_MASTER_NO_TX | SPI_MASTER_NO_RX)) == 0) { 354 354 spi_gpio->bitbang.txrx_word[SPI_MODE_0] = spi_gpio_txrx_word_mode0; 355 355 spi_gpio->bitbang.txrx_word[SPI_MODE_1] = spi_gpio_txrx_word_mode1; 356 356 spi_gpio->bitbang.txrx_word[SPI_MODE_2] = spi_gpio_txrx_word_mode2;
+8 -2
drivers/spi/spi_mpc8xxx.c
··· 408 408 409 409 xfer_ofs = mspi->xfer_in_progress->len - mspi->count; 410 410 411 - out_be32(&rx_bd->cbd_bufaddr, mspi->rx_dma + xfer_ofs); 411 + if (mspi->rx_dma == mspi->dma_dummy_rx) 412 + out_be32(&rx_bd->cbd_bufaddr, mspi->rx_dma); 413 + else 414 + out_be32(&rx_bd->cbd_bufaddr, mspi->rx_dma + xfer_ofs); 412 415 out_be16(&rx_bd->cbd_datlen, 0); 413 416 out_be16(&rx_bd->cbd_sc, BD_SC_EMPTY | BD_SC_INTRPT | BD_SC_WRAP); 414 417 415 - out_be32(&tx_bd->cbd_bufaddr, mspi->tx_dma + xfer_ofs); 418 + if (mspi->tx_dma == mspi->dma_dummy_tx) 419 + out_be32(&tx_bd->cbd_bufaddr, mspi->tx_dma); 420 + else 421 + out_be32(&tx_bd->cbd_bufaddr, mspi->tx_dma + xfer_ofs); 416 422 out_be16(&tx_bd->cbd_datlen, xfer_len); 417 423 out_be16(&tx_bd->cbd_sc, BD_SC_READY | BD_SC_INTRPT | BD_SC_WRAP | 418 424 BD_SC_LAST);