]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - drivers/spi/ti_qspi.c
SPI: mxc_spi: remove second reset from ECSPI config handler
[karo-tx-uboot.git] / drivers / spi / ti_qspi.c
index 566625091200f51c697bfed1df5d1b7ef85556dd..fd7fea8df5b12623c5cba84296e1c3a302619072 100644 (file)
@@ -106,6 +106,7 @@ static void ti_spi_setup_spi_register(struct ti_qspi_slave *qslave)
        slave->memory_map = (void *)MMAP_START_ADDR_DRA;
 #else
        slave->memory_map = (void *)MMAP_START_ADDR_AM43x;
+       slave->op_mode_rx = 8;
 #endif
 
        memval |= QSPI_CMD_READ | QSPI_SETUP0_NUM_A_BYTES |
@@ -285,6 +286,13 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
                qslave->cmd |= QSPI_3_PIN;
        qslave->cmd |= 0xfff;
 
+/* FIXME: This delay is required for successfull
+ * completion of read/write/erase. Once its root
+ * caused, it will be remove from the driver.
+ */
+#ifdef CONFIG_AM43XX
+       udelay(100);
+#endif
        while (words--) {
                if (txp) {
                        debug("tx cmd %08x dc %08x data %02x\n",
@@ -307,6 +315,9 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
                        qslave->cmd |= QSPI_RD_SNGL;
                        debug("rx cmd %08x dc %08x\n",
                              qslave->cmd, qslave->dc);
+                       #ifdef CONFIG_DRA7XX
+                               udelay(500);
+                       #endif
                        writel(qslave->cmd, &qslave->base->cmd);
                        status = readl(&qslave->base->status);
                        timeout = QSPI_TIMEOUT;