mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-29 10:00:51 +00:00
stm32: spi: read spi->dr into a dummy variable
(cherry-pick back to ToT) In setup_for_transaction(), read spi->dr into a dummy variable instead of into in_msg[0]. Since in_msg[0] is an alias for a command's port number, this will prevent a command's port number from being over-written if spi transaction is terminated early while a command is still in progress. BUG=chrome-os-partner:28979 BRANCH=nyan TEST=passed factory_test.reboot2 test for >1000 cycles Signed-off-by: Yen Lin <yelin@nvidia.com> Reviewed-on: https://chromium-review.googlesource.com/204355 Reviewed-by: Yung-chieh Lo <yjlou@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org> (cherry picked from commit 2b043665850f7c74cd6a4a7f24d7a18b01b378ac) Change-Id: Ia412fadcd7621f45bbb096771615ce75fe445592 Oiginal-Change-Id: I308ea954d6242fce5b3a70a14660767ac88d8242 Reviewed-on: https://chromium-review.googlesource.com/206920 Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Yung-chieh Lo <yjlou@chromium.org> Tested-by: Yung-chieh Lo <yjlou@chromium.org>
This commit is contained in:
committed by
chrome-internal-fetch
parent
b1dec633cb
commit
a02cb09bb7
@@ -234,6 +234,7 @@ static void reply(stm32_dma_chan_t *txdma,
|
||||
static void setup_for_transaction(void)
|
||||
{
|
||||
stm32_spi_regs_t *spi = STM32_SPI1_REGS;
|
||||
volatile uint8_t dummy __attribute__((unused));
|
||||
|
||||
/* Not ready to receive yet */
|
||||
spi->dr = EC_SPI_NOT_READY;
|
||||
@@ -248,7 +249,7 @@ static void setup_for_transaction(void)
|
||||
* Read a byte in case there is one pending; this prevents the receive
|
||||
* DMA from getting that byte right when we start it
|
||||
*/
|
||||
*in_msg = spi->dr;
|
||||
dummy = spi->dr;
|
||||
|
||||
/* Start DMA */
|
||||
dma_start_rx(&dma_rx_option, sizeof(in_msg), in_msg);
|
||||
|
||||
Reference in New Issue
Block a user