>+      nor->read_reg = atmel_qspi_read_reg;
>+      nor->write_reg = atmel_qspi_write_reg;
>+      nor->read = atmel_qspi_read;
>+      nor->write = atmel_qspi_write;
>+      nor->erase = atmel_qspi_erase;
>+      nor->set_protocol = atmel_qspi_set_protocol;

This is very good, the structure of spi_nor should add a hook function to 
notify spi controller 
That spi nor transfer protocol already changed.

>+
>+      if (of_modalias_node(child, modalias, sizeof(modalias)) < 0) {
>+              err = -ENODEV;
>+              goto release_channel;
>+      }
>+
>+      err = of_property_read_u32(child, "spi-max-frequency", &aq->clk_rate);
>+      if (err < 0)
>+              goto release_channel;
>+
>+      err = atmel_qspi_init(aq);
>+      if (err)
>+              goto release_channel;
>+
>+      nor->dev->of_node = child;
>+      err = spi_nor_scan(nor, modalias, SPI_NOR_QUAD);
>               goto release_channel;
>+


.......

>static inline struct spi_nor *mtd_to_spi_nor(struct mtd_info *mtd)  {
        return mtd->priv;
>@@ -944,6 +960,11 @@ static int micron_quad_enable(struct spi_nor *nor)
>               return ret;
>       }
> 
>+      /* switch protocol to Quad CMD 4-4-4 */
>+      ret = spi_nor_set_protocol(nor, SPI_PROTO_4_4_4);
>+      if (ret)
>+              return ret;
>+

This make sense,from spi nor side,once its protocol being changed,
Mtd layer must notify this status to spi nor controller immediately,
And spi nor controller also should re-adjust its protocol.
Otherwise, following reading SR operation will fail. 

>
>       ret = spi_nor_wait_till_ready(nor);
>       if (ret)
>               return ret;

If my ack has any value in here, feel free to add it.

Acked-by: Bean Huo <bean...@micron.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to