diff options
author | Nikita Yushchenko <nikita.yoush@cogentembedded.com> | 2023-11-13 11:51:02 +0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2023-11-20 08:34:08 -0500 |
commit | beeb91aa64fde9e35ccfacf03b3d0323b4bf7329 (patch) | |
tree | 0d18019b10e68ec32c01f82c0698f4925791b54c | |
parent | d5ff806cb57359ac5084e2af6a96463c9da772ba (diff) | |
download | u-boot-beeb91aa64fde9e35ccfacf03b3d0323b4bf7329.zip u-boot-beeb91aa64fde9e35ccfacf03b3d0323b4bf7329.tar.gz u-boot-beeb91aa64fde9e35ccfacf03b3d0323b4bf7329.tar.bz2 |
scsi: set dma direction to NONE for TEST UNIT READY
SCSI device scan code was executing TEST UNIT READY command without
explicitly setting dma direction in struct scsi_cmd to NONE, so command
was passed to driver with dma direction set to DMA_FROM_DEVICE,
inherited from older usage.
With WDC SDINDDH6-64G ufs device, that caused TEST UNIT READY to
return error.
Fix that, by explicitly setting dma direction to NONE for
TEST UNIT READY, and restoring it back DMA_FROM_DEVICE for the
following READ CAPACITY.
Signed-off-by: Nikita Yushchenko <nikita.yoush@cogentembedded.com>
Reviewed-by: Marek Vasut <marex@denx.de>
-rw-r--r-- | drivers/scsi/scsi.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index b76aadb..1330482 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c @@ -374,6 +374,7 @@ static int scsi_read_capacity(struct udevice *dev, struct scsi_cmd *pccb, pccb->cmd[0] = SCSI_RD_CAPAC10; pccb->cmd[1] = pccb->lun << 5; pccb->cmdlen = 10; + pccb->dma_dir = DMA_FROM_DEVICE; pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ pccb->datalen = 8; @@ -538,6 +539,7 @@ static int scsi_detect_dev(struct udevice *dev, int target, int lun, for (count = 0; count < 3; count++) { pccb->datalen = 0; + pccb->dma_dir = DMA_NONE; scsi_setup_test_unit_ready(pccb); err = scsi_exec(dev, pccb); if (!err) |