admin管理员组文章数量:1405612
is there any way to force u-boot to read spi nor flash in 4 byte addressing mode rather than switching from 3 bytes to 4?
Hardware:
I have a custom-built board based on mt7628nn with 128 MB DDR2 RAM and 32 mb winbond flash w25q256jv.
The problem:
Recently I noticed an issue that in openwrt, whenever watchdog triggers reset it does not reset winbond flash back to 3 bytes addressing mode that causes u-boot be unable to start as it is expecting 3 bytes addressing.
The solution:
In order to prevent such issue, I want to set u-boot to start only in 4 byte addressing mode. MT7628 datasheet allows to do so by setting SPI_CS1 to "1". I know it is a very bad hardware design but barely can't do anything to fix it.
In this case mt7628 will always boot in XTAL 4 byte addressing. However, no matter how I tried to configure u-boot is not willing to start in 4 byte addressing mode. I am using 2020.04 release with spi-nor-core drivers (no SPL).
What I tried:
- sf probe returns - SF: Detected w25q256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
I added 4B_OPCODES to drivers/mtd/spi/spi-nor-ids.c ->
{ INFO("w25q256", 0xef4019, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
removed CONFIG_SPI_FLASH_BAR from defconfig as requested in spi-nor-core.c code to set addr_width=4
added quick and dirty code in spi-nor-core.c in
static int spi_nor_init(struct spi_nor *nor)
to force nor->addr_width == 4 and set_4byte function whenever SNOR_MFR_WINBOND is detected
In both cases u-boot keeps botting in 3-byte XTAL and failing to show any sign of life when I set SPI_CS1 to 1
example:
CPU: MT7628 Rev 1.2 - Boot from XTAL (3-Byte SPI Addr)
本文标签: linux kerneluboot 4 byte addressing spi nor flash on bootStack Overflow
版权声明:本文标题:linux kernel - u-boot 4 byte addressing spi nor flash on boot - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744911987a2631973.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论