spi-topcliff-pch: Fix CPU read complete condition issue
We found Rx data sometimes drops.(with non-DMA transfer mode) The cause is read complete condition is not true. This patch fixes the issue. Signed-off-by: Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
parent
8b7aa961a8
commit
373b0eb64b
|
@ -317,16 +317,19 @@ static void pch_spi_handler_sub(struct pch_spi_data *data, u32 reg_spsr_val,
|
||||||
|
|
||||||
/* if transfer complete interrupt */
|
/* if transfer complete interrupt */
|
||||||
if (reg_spsr_val & SPSR_FI_BIT) {
|
if (reg_spsr_val & SPSR_FI_BIT) {
|
||||||
if (tx_index < bpw_len)
|
if ((tx_index == bpw_len) && (rx_index == tx_index)) {
|
||||||
|
/* disable interrupts */
|
||||||
|
pch_spi_setclr_reg(data->master, PCH_SPCR, 0, PCH_ALL);
|
||||||
|
|
||||||
|
/* transfer is completed;
|
||||||
|
inform pch_spi_process_messages */
|
||||||
|
data->transfer_complete = true;
|
||||||
|
data->transfer_active = false;
|
||||||
|
wake_up(&data->wait);
|
||||||
|
} else {
|
||||||
dev_err(&data->master->dev,
|
dev_err(&data->master->dev,
|
||||||
"%s : Transfer is not completed", __func__);
|
"%s : Transfer is not completed", __func__);
|
||||||
/* disable interrupts */
|
}
|
||||||
pch_spi_setclr_reg(data->master, PCH_SPCR, 0, PCH_ALL);
|
|
||||||
|
|
||||||
/* transfer is completed;inform pch_spi_process_messages */
|
|
||||||
data->transfer_complete = true;
|
|
||||||
data->transfer_active = false;
|
|
||||||
wake_up(&data->wait);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue