soc/amd/common/block/lpc/spi_dma: Yield after completing transaction

There is no telling when the next udelay will be, so explicitly call
`thread_yield()` after completing a transaction. This will allow any
pending transactions to immediately start.

BUG=b:179699789
TEST=Verify new transaction is enqueued right after another.

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Change-Id: I9c1272bde46c3e0c15305b76c2ea7a6dde5ed0b0
Reviewed-on: https://review.coreboot.org/c/coreboot/+/56321
Reviewed-by: Karthik Ramasubramanian <kramasub@google.com>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Raul E Rangel 2021-07-14 13:51:27 -06:00 committed by Raul Rangel
parent 6f3c9018c6
commit 3af732ada0
1 changed files with 3 additions and 0 deletions

View File

@ -193,6 +193,9 @@ static ssize_t spi_dma_readat_dma(const struct region_device *rd, void *destinat
printk(BIOS_SPEW, "%s: end: dest: %p, source: %#zx, remaining: %zu\n", printk(BIOS_SPEW, "%s: end: dest: %p, source: %#zx, remaining: %zu\n",
__func__, destination, source, transaction.remaining); __func__, destination, source, transaction.remaining);
/* Allow queued up transaction to continue */
thread_yield();
if (transaction.remaining) if (transaction.remaining)
return -1; return -1;