sf: probe: Fix quad bit set path
authorPoddar, Sourav <sourav.poddar@ti.com>
Wed, 23 Apr 2014 13:27:03 +0000 (18:57 +0530)
committerJagannadha Sutradharudu Teki <jaganna@xilinx.com>
Sun, 8 Jun 2014 17:42:27 +0000 (23:12 +0530)
Currently, flash quad bit is set in "spi_flash_validate_params" and later
at the end in the same api, we write 0 to status register for few flashes,
thereby overriding the quad bit set. This fix moves the quad bit setting
outside this api in "spi_flash_probe_slave"

Signed-off-by: Sourav Poddar <sourav.poddar@ti.com>
Reviewed-by: Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
drivers/mtd/spi/sf_probe.c

index 0a46fe38da6899fd4c26702ec1981a720828c532..36ae5e0a7736f4b46c3570b42bd2c8aa26bb6822 100644 (file)
@@ -197,16 +197,6 @@ static struct spi_flash *spi_flash_validate_params(struct spi_slave *spi,
                /* Go for default supported write cmd */
                flash->write_cmd = CMD_PAGE_PROGRAM;
 
-       /* Set the quad enable bit - only for quad commands */
-       if ((flash->read_cmd == CMD_READ_QUAD_OUTPUT_FAST) ||
-           (flash->read_cmd == CMD_READ_QUAD_IO_FAST) ||
-           (flash->write_cmd == CMD_QUAD_PAGE_PROGRAM)) {
-               if (spi_flash_set_qeb(flash, idcode[0])) {
-                       debug("SF: Fail to set QEB for %02x\n", idcode[0]);
-                       return NULL;
-               }
-       }
-
        /* Read dummy_byte: dummy byte is determined based on the
         * dummy cycles of a particular command.
         * Fast commands - dummy_byte = dummy_cycles/8
@@ -327,6 +317,16 @@ static struct spi_flash *spi_flash_probe_slave(struct spi_slave *spi)
        if (!flash)
                goto err_read_id;
 
+       /* Set the quad enable bit - only for quad commands */
+       if ((flash->read_cmd == CMD_READ_QUAD_OUTPUT_FAST) ||
+           (flash->read_cmd == CMD_READ_QUAD_IO_FAST) ||
+           (flash->write_cmd == CMD_QUAD_PAGE_PROGRAM)) {
+               if (spi_flash_set_qeb(flash, idcode[0])) {
+                       debug("SF: Fail to set QEB for %02x\n", idcode[0]);
+                       return NULL;
+               }
+       }
+
 #ifdef CONFIG_OF_CONTROL
        if (spi_flash_decode_fdt(gd->fdt_blob, flash)) {
                debug("SF: FDT decode error\n");