diff options
Diffstat (limited to 'drivers/spi/spi-xilinx.c')
| -rw-r--r-- | drivers/spi/spi-xilinx.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/spi/spi-xilinx.c b/drivers/spi/spi-xilinx.c index fb56fcfdf65e..09a942852593 100644 --- a/drivers/spi/spi-xilinx.c +++ b/drivers/spi/spi-xilinx.c | |||
| @@ -233,6 +233,21 @@ static int xilinx_spi_setup_transfer(struct spi_device *spi, | |||
| 233 | return 0; | 233 | return 0; |
| 234 | } | 234 | } |
| 235 | 235 | ||
| 236 | static int xilinx_spi_setup(struct spi_device *spi) | ||
| 237 | { | ||
| 238 | /* always return 0, we can not check the number of bits. | ||
| 239 | * There are cases when SPI setup is called before any driver is | ||
| 240 | * there, in that case the SPI core defaults to 8 bits, which we | ||
| 241 | * do not support in some cases. But if we return an error, the | ||
| 242 | * SPI device would not be registered and no driver can get hold of it | ||
| 243 | * When the driver is there, it will call SPI setup again with the | ||
| 244 | * correct number of bits per transfer. | ||
| 245 | * If a driver setups with the wrong bit number, it will fail when | ||
| 246 | * it tries to do a transfer | ||
| 247 | */ | ||
| 248 | return 0; | ||
| 249 | } | ||
| 250 | |||
| 236 | static void xilinx_spi_fill_tx_fifo(struct xilinx_spi *xspi) | 251 | static void xilinx_spi_fill_tx_fifo(struct xilinx_spi *xspi) |
| 237 | { | 252 | { |
| 238 | u8 sr; | 253 | u8 sr; |
| @@ -360,6 +375,7 @@ struct spi_master *xilinx_spi_init(struct device *dev, struct resource *mem, | |||
| 360 | xspi->bitbang.chipselect = xilinx_spi_chipselect; | 375 | xspi->bitbang.chipselect = xilinx_spi_chipselect; |
| 361 | xspi->bitbang.setup_transfer = xilinx_spi_setup_transfer; | 376 | xspi->bitbang.setup_transfer = xilinx_spi_setup_transfer; |
| 362 | xspi->bitbang.txrx_bufs = xilinx_spi_txrx_bufs; | 377 | xspi->bitbang.txrx_bufs = xilinx_spi_txrx_bufs; |
| 378 | xspi->bitbang.master->setup = xilinx_spi_setup; | ||
| 363 | init_completion(&xspi->done); | 379 | init_completion(&xspi->done); |
| 364 | 380 | ||
| 365 | if (!request_mem_region(mem->start, resource_size(mem), | 381 | if (!request_mem_region(mem->start, resource_size(mem), |
