diff options
Diffstat (limited to 'drivers/spi')
| -rw-r--r-- | drivers/spi/spi-bitbang.c | 19 | 
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/spi/spi-bitbang.c b/drivers/spi/spi-bitbang.c index aef59b1a15f..f5ae6e960c7 100644 --- a/drivers/spi/spi-bitbang.c +++ b/drivers/spi/spi-bitbang.c @@ -346,17 +346,14 @@ static void bitbang_work(struct work_struct *work)  			if (t->delay_usecs)  				udelay(t->delay_usecs); -			if (!cs_change) -				continue; -			if (t->transfer_list.next == &m->transfers) -				break; - -			/* sometimes a short mid-message deselect of the chip -			 * may be needed to terminate a mode or command -			 */ -			ndelay(nsecs); -			bitbang->chipselect(spi, BITBANG_CS_INACTIVE); -			ndelay(nsecs); +			if (cs_change && !list_is_last(&t->transfer_list, &m->transfers)) { +				/* sometimes a short mid-message deselect of the chip +				 * may be needed to terminate a mode or command +				 */ +				ndelay(nsecs); +				bitbang->chipselect(spi, BITBANG_CS_INACTIVE); +				ndelay(nsecs); +			}  		}  		m->status = status;  |