mmc: mmc_spi: Use SPI_XFER_BEGIN and SPI_XFER_END flags
authorAnup Patel <Anup.Patel@wdc.com>
Wed, 17 Jul 2019 04:23:38 +0000 (04:23 +0000)
committerJagan Teki <jagan@amarulasolutions.com>
Thu, 18 Jul 2019 11:41:16 +0000 (17:11 +0530)
Most DM based SPI host controller drivers use SPI_XFER_BEGIN and
SPI_XFER_END flags to enable/disable slave chip select.

This patch extends MMC SPI driver to pass SPI_XFER_BEGIN flag when
MMC command is send at start and pass SPI_XFER_END flag using a
dummy transfer (of bitlen = 0) at the end of MMC command.

Suggested-by: Jagan Teki <jagan@amarulasolutions.com>
Signed-off-by: Anup Patel <anup.patel@wdc.com>
Tested-by: Sagar Kadam <sagar.kadam@sifive.com>
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
drivers/mmc/mmc_spi.c

index f3d687ae806f6aded5f9f6f210e7b93e39f78c44..350812a04ba982514d55dae3e0b7c0f44070d0e9 100644 (file)
@@ -84,7 +84,7 @@ static int mmc_spi_sendcmd(struct udevice *dev,
        cmdo[4] = cmdarg >> 8;
        cmdo[5] = cmdarg;
        cmdo[6] = (crc7(0, &cmdo[1], 5) << 1) | 0x01;
-       ret = dm_spi_xfer(dev, sizeof(cmdo) * 8, cmdo, NULL, 0);
+       ret = dm_spi_xfer(dev, sizeof(cmdo) * 8, cmdo, NULL, SPI_XFER_BEGIN);
        if (ret)
                return ret;
 
@@ -360,6 +360,8 @@ static int dm_mmc_spi_request(struct udevice *dev, struct mmc_cmd *cmd,
        }
 
 done:
+       dm_spi_xfer(dev, 0, NULL, NULL, SPI_XFER_END);
+
        dm_spi_release_bus(dev);
 
        return ret;