[U-Boot] [PATCH] mtd: sf: Add CONFIG_SPI_N25Q256A_RESET for software-reset
Pavel Machek
pavel at denx.de
Fri May 1 11:01:09 CEST 2015
This is needed for the SoCFPGA booting from SPI NOR flash
e.g. (N25Q256A) as long as u-boot-spl 2013 is used (newer one is not
available).
Signed-off-by: Stefan Roese <sr at denx.de>
Signed-off-by: Pavel Machek <pavel at denx.de>
---
Ported to today's u-boot version.
diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
index 201471c..f7cfbd9 100644
--- a/drivers/mtd/spi/sf_probe.c
+++ b/drivers/mtd/spi/sf_probe.c
@@ -347,6 +348,36 @@ int spi_flash_probe_slave(struct spi_slave *spi, struct spi_flash *flash)
}
}
+#ifdef CONFIG_SPI_N25Q256A_RESET
+#define CMD_RESET_ENABLE 0x66
+#define CMD_RESET_MEMORY 0x99
+ /*
+ * This is needed for the SoCFPGA booting from SPI NOR flash
+ * e.g. (N25Q256A), as U-Boot SPL 2013-socfpga (only version
+ * working on that board) sets 4-byt addressing mode.
+ *
+ * Additionally it may be good idea to change
+ * this line in the Linux SPI NOR flash driver:
+ *
+ * { "n25q256a", INFO(0x20ba19, 0, 64 * 1024, 512,
+ * SECT_4K | SHUTDOWN_3BYTE) },
+ *
+ * Add SHUTDOWN_3BYTE here.
+ */
+ ret = spi_flash_cmd(spi, CMD_RESET_ENABLE, NULL, 0);
+ if (ret) {
+ printf("SF: Failed issue reset command\n");
+ goto err_read_id;
+ }
+
+ ret = spi_flash_cmd(spi, CMD_RESET_MEMORY, NULL, 0);
+ if (ret) {
+ printf("SF: Failed issue reset command\n");
+ goto err_read_id;
+ }
+
+ printf("SF: Device software reset\n");
+#endif
#ifdef CONFIG_OF_CONTROL
if (spi_flash_decode_fdt(gd->fdt_blob, flash)) {
debug("SF: FDT decode error\n");
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
More information about the U-Boot
mailing list