Hi Fabio,
Hi Lukasz,
On Wed, Sep 13, 2017 at 6:39 AM, Lukasz Majewski <lu...@denx.de> wrote:
#ifdef CONFIG_SPI_FLASH_BAR
+/*
+ * This "cleanup" is necessary in a situation when one was accessing
+ * spi flash memory > 16 MiB by using Bank Address Register's BA24 bit.
+ *
+ * After it the BA24 bit shall be cleared to allow access to correct
+ * memory region after SW reset (by calling "reset" command).
+ *
+ * Otherwise, the BA24 bit may be left set and then after reset, the
+ * ROM would seek for SPL from 0x1000000, not 0x0.
+ */
+static int cleanup_bar(struct spi_flash *flash)
+{
+ u8 cmd, bank_sel = 0;
+
+ if (flash->bank_curr == 0)
+ return 0;
+ cmd = flash->bank_write_cmd;
+
+ return spi_flash_write_common(flash, &cmd, 1, &bank_sel, 1);
+}
+
What about defining an empty stub for this function when
CONFIG_SPI_FLASH_BAR is not defined?
static int write_bar(struct spi_flash *flash, u32 offset)
{
u8 cmd, bank_sel;
@@ -339,6 +360,10 @@ int spi_flash_cmd_erase_ops(struct spi_flash *flash, u32
offset, size_t len)
len -= erase_size;
}
+#ifdef CONFIG_SPI_FLASH_BAR
+ ret = cleanup_bar(flash);
+#endif
Then you don't need to add the ifdefs when calling cleanup_bar().
I took the approach already used in this file, so I would prefer to
leave it is in this patch (to be in sync with the rest).
--
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot