spi: fix: Call mxs_reset_block() during DM/DTS probe
authorLukasz Majewski <lukma@denx.de>
Thu, 5 Sep 2019 07:54:57 +0000 (09:54 +0200)
committerStefano Babic <sbabic@denx.de>
Tue, 8 Oct 2019 14:36:36 +0000 (16:36 +0200)
Without this change the DM/DTS version of mxs_spi driver doesn't reset the
SPI IP block in probe.
As a result this driver (when used solely on U-Boot proper) relies on reset
performed by mxs spi driver in SPL.

In the use case where eMMC is used in SPL as a boot primary device, the
mxs_reset_block() is not called at all and DM/DTS aware SPI driver in
U-Boot proper is malfunctioning.

Signed-off-by: Lukasz Majewski <lukma@denx.de>
drivers/spi/mxs_spi.c

index b1cc83aab101cf012083a43f06e0d970e0b3b263..d475830f17857189adaea590d54bb198a82c46e4 100644 (file)
@@ -436,6 +436,8 @@ static int mxs_spi_probe(struct udevice *bus)
        priv->dma_channel = plat->dma_id;
        priv->clk_id = plat->clk_id;
 
+       mxs_reset_block(&priv->regs->hw_ssp_ctrl0_reg);
+
        ret = mxs_dma_init_channel(priv->dma_channel);
        if (ret) {
                printf("%s: DMA init channel error %d\n", __func__, ret);