mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-17 22:23:45 -04:00
spi: use specific last_cs instead of last_cs_enable
Commit d40f0b6f2e instroduced last_cs_enable to avoid setting
chipselect if it's not necessary, but it also introduces a bug. The
chipselect may not be set correctly on multi-device SPI busses. The
reason is that we can't judge the chipselect by bool last_cs_enable,
since chipselect may be modified after other devices were accessed.
So we should record the specific state of chipselect in case of
confusion.
Signed-off-by: Yun Zhou <yun.zhou@windriver.com>
Link: https://lore.kernel.org/r/20220217141234.72737-1-yun.zhou@windriver.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
@@ -370,7 +370,8 @@ extern struct spi_device *spi_new_ancillary_device(struct spi_device *spi, u8 ch
|
||||
* @cur_msg_prepared: spi_prepare_message was called for the currently
|
||||
* in-flight message
|
||||
* @cur_msg_mapped: message has been mapped for DMA
|
||||
* @last_cs_enable: was enable true on the last call to set_cs.
|
||||
* @last_cs: the last chip_select that is recorded by set_cs, -1 on non chip
|
||||
* selected
|
||||
* @last_cs_mode_high: was (mode & SPI_CS_HIGH) true on the last call to set_cs.
|
||||
* @xfer_completion: used by core transfer_one_message()
|
||||
* @busy: message pump is busy
|
||||
@@ -603,7 +604,7 @@ struct spi_controller {
|
||||
bool auto_runtime_pm;
|
||||
bool cur_msg_prepared;
|
||||
bool cur_msg_mapped;
|
||||
bool last_cs_enable;
|
||||
char last_cs;
|
||||
bool last_cs_mode_high;
|
||||
bool fallback;
|
||||
struct completion xfer_completion;
|
||||
|
||||
Reference in New Issue
Block a user