mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
[PATCH] spi_bitbang(): use overridable setup_transfer() method
A small bug-fix for spi_bitbang: it must always call the setup_transfer function via the overridable pointer, not assume that its spi_bitbang_setup_transfer is sufficient. Otherwise, if all options in the transfers are default (0), the overrided function will never be called. Granted, the function replacing it must call spi_bitbang_setup_transfer, but it might also have other important things to do, even if the second argument (the spi_transfer) is NULL. Tested together with the other patches on the spi_crisv32_sser and spi_crisv32_gpio drivers (not yet in the kernel, will IIUC be submitted as part of the usual arch-maintainer-pushes). Signed-off-by: Hans-Peter Nilsson <hp@axis.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
ddc1e97531
commit
7f8c7619ea
@ -210,7 +210,7 @@ int spi_bitbang_setup(struct spi_device *spi)
|
||||
if (!cs->txrx_word)
|
||||
return -EINVAL;
|
||||
|
||||
retval = spi_bitbang_setup_transfer(spi, NULL);
|
||||
retval = bitbang->setup_transfer(spi, NULL);
|
||||
if (retval < 0)
|
||||
return retval;
|
||||
|
||||
@ -442,9 +442,10 @@ EXPORT_SYMBOL_GPL(spi_bitbang_transfer);
|
||||
* hardware that basically exposes a shift register) or per-spi_transfer
|
||||
* (which takes better advantage of hardware like fifos or DMA engines).
|
||||
*
|
||||
* Drivers using per-word I/O loops should use (or call) spi_bitbang_setup and
|
||||
* spi_bitbang_cleanup to handle those spi master methods. Those methods are
|
||||
* the defaults if the bitbang->txrx_bufs routine isn't initialized.
|
||||
* Drivers using per-word I/O loops should use (or call) spi_bitbang_setup,
|
||||
* spi_bitbang_cleanup and spi_bitbang_setup_transfer to handle those spi
|
||||
* master methods. Those methods are the defaults if the bitbang->txrx_bufs
|
||||
* routine isn't initialized.
|
||||
*
|
||||
* This routine registers the spi_master, which will process requests in a
|
||||
* dedicated task, keeping IRQs unblocked most of the time. To stop
|
||||
|
Loading…
Reference in New Issue
Block a user