diff options
author | Michal Simek <michal.simek@xilinx.com> | 2013-07-10 03:25:28 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-07-10 04:45:48 -0400 |
commit | e07619539017ac31004a038d1d886e2ed4d0e61a (patch) | |
tree | dd782696984e4176b2b8cde877fa9491dfedd395 | |
parent | ed893559c9799df3b32051871c22017151394d82 (diff) |
spi/xilinx: Revert master->setup function removal
master->setup() must be initialized to be able
to successfully run spi_bitbang_start()
and satisfy if/else logic there.
"spi: convert drivers to use bits_per_word_mask"
(sha1: 24778be20f87d5aadb19624fc768b3159fa43efc)
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
-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), |