flashchips: Complete Boya/BoHong BY25D family
Except for the sizes, the datasheets look the same. All chips support
dual-output fast reads. There is some overlap with the BY25Q family,
but given the small sizes (2MiB max.), it doesn't seem worthwhile to
add additional entries for these chips.
The block protection of the BY25Ds is rather peculiar, hence not con-
figured: It looks like hardcoded CMP=1, SEC=1 with 8KiB sectors and
no 32KiB limit.
Datasheets used:
http://en.boyamicro.com/download/SPI_NOR_Flash/BY25D05AS.pdf
http://en.boyamicro.com/download/SPI_NOR_Flash/BY25D10AS.pdf
http://en.boyamicro.com/download/SPI_NOR_Flash/BY25D20AS.pdf
http://en.boyamicro.com/download/SPI_NOR_Flash/BY25D40AS.pdf
http://en.boyamicro.com/download/SPI_NOR_Flash/BY25D40ES.pdf
http://en.boyamicro.com/download/SPI_NOR_Flash/BY25D80AS.pdf
http://en.boyamicro.com/download/SPI_NOR_Flash/BY25D16AS.pdf
http://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q80BS.pdf
http://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q80ES.pdf
http://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q16BS.pdf
http://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q16ES.pdf
Change-Id: Ie3f8578c152fcedd3ccb60873018d92e1dc80876
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.sourcearcade.org/c/flashprog/+/281
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
diff --git a/flashchips.c b/flashchips.c
index 86d27fa..0136749 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -3544,13 +3544,215 @@
{
.vendor = "Boya/BoHong Microelectronics",
- .name = "B.25D16A",
+ .name = "B.25D05AS",
.bustype = BUS_SPI,
.manufacture_id = BOYA_BOHONG_ID,
- .model_id = BOYA_BOHONG_B_25D16A,
+ .model_id = BOYA_BOHONG_B_25D05AS,
+ .total_size = 64,
+ .page_size = 256,
+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_FAST_READ | FEATURE_FAST_READ_DOUT,
+ .tested = TEST_UNTESTED,
+ .probe = probe_spi_rdid,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 16} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {32 * 1024, 2} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 1} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {64 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {64 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
+ .printlock = spi_prettyprint_status_register_bp2_srwd,
+ .unlock = spi_disable_blockprotect_bp2_srwd,
+ .write = spi_chip_write_256,
+ .read = spi_chip_read,
+ .voltage = {2700, 3600},
+ .prepare_access = spi_prepare_io,
+ .finish_access = spi_finish_io,
+ },
+
+ {
+ .vendor = "Boya/BoHong Microelectronics",
+ .name = "B.25D10AS",
+ .bustype = BUS_SPI,
+ .manufacture_id = BOYA_BOHONG_ID,
+ .model_id = BOYA_BOHONG_B_25D10AS,
+ .total_size = 128,
+ .page_size = 256,
+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_FAST_READ | FEATURE_FAST_READ_DOUT,
+ .tested = TEST_UNTESTED,
+ .probe = probe_spi_rdid,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 32} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {32 * 1024, 4} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 2} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {128 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {128 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
+ .printlock = spi_prettyprint_status_register_bp2_srwd,
+ .unlock = spi_disable_blockprotect_bp2_srwd,
+ .write = spi_chip_write_256,
+ .read = spi_chip_read,
+ .voltage = {2700, 3600},
+ .prepare_access = spi_prepare_io,
+ .finish_access = spi_finish_io,
+ },
+
+ {
+ .vendor = "Boya/BoHong Microelectronics",
+ .name = "B.25D20AS",
+ .bustype = BUS_SPI,
+ .manufacture_id = BOYA_BOHONG_ID,
+ .model_id = BOYA_BOHONG_B_25D20AS,
+ .total_size = 256,
+ .page_size = 256,
+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_FAST_READ | FEATURE_FAST_READ_DOUT,
+ .tested = TEST_UNTESTED,
+ .probe = probe_spi_rdid,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 64} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {32 * 1024, 8} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 4} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {256 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {256 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
+ .printlock = spi_prettyprint_status_register_bp2_srwd,
+ .unlock = spi_disable_blockprotect_bp2_srwd,
+ .write = spi_chip_write_256,
+ .read = spi_chip_read,
+ .voltage = {2700, 3600},
+ .prepare_access = spi_prepare_io,
+ .finish_access = spi_finish_io,
+ },
+
+ {
+ .vendor = "Boya/BoHong Microelectronics",
+ .name = "B.25D40AS/BY25D40ES",
+ .bustype = BUS_SPI,
+ .manufacture_id = BOYA_BOHONG_ID,
+ .model_id = BOYA_BOHONG_B_25D40AS,
+ .total_size = 512,
+ .page_size = 256,
+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_FAST_READ | FEATURE_FAST_READ_DOUT,
+ .tested = TEST_UNTESTED,
+ .probe = probe_spi_rdid,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 128} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {32 * 1024, 16} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 8} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {512 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {512 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
+ .printlock = spi_prettyprint_status_register_bp2_srwd,
+ .unlock = spi_disable_blockprotect_bp2_srwd,
+ .write = spi_chip_write_256,
+ .read = spi_chip_read,
+ .voltage = {2700, 3600},
+ .prepare_access = spi_prepare_io,
+ .finish_access = spi_finish_io,
+ },
+
+ {
+ .vendor = "Boya/BoHong Microelectronics",
+ .name = "B.25D80AS/BY25Q80BS/BY25Q80ES",
+ .bustype = BUS_SPI,
+ .manufacture_id = BOYA_BOHONG_ID,
+ .model_id = BOYA_BOHONG_B_25D80AS,
+ .total_size = 1024,
+ .page_size = 256,
+ /* BY25Q80BS: QPI, BY25Q80ES: QIO */
+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_FAST_READ | FEATURE_FAST_READ_DOUT,
+ .tested = TEST_UNTESTED,
+ .probe = probe_spi_rdid,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 256} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {32 * 1024, 32} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 16} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {1024 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {1024 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
+ .printlock = spi_prettyprint_status_register_bp2_srwd,
+ .unlock = spi_disable_blockprotect_bp2_srwd,
+ .write = spi_chip_write_256,
+ .read = spi_chip_read,
+ .voltage = {2700, 3600},
+ .prepare_access = spi_prepare_io,
+ .finish_access = spi_finish_io,
+ },
+
+ {
+ .vendor = "Boya/BoHong Microelectronics",
+ .name = "B.25D16AS/BY25Q16BS/BY25Q16ES",
+ .bustype = BUS_SPI,
+ .manufacture_id = BOYA_BOHONG_ID,
+ .model_id = BOYA_BOHONG_B_25D16AS,
.total_size = 2048,
.page_size = 256,
- .feature_bits = FEATURE_WRSR_WREN,
+ /* B25Q16BS/ES: QPI */
+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_FAST_READ | FEATURE_FAST_READ_DOUT,
.tested = TEST_OK_PR,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
@@ -3578,6 +3780,8 @@
.write = spi_chip_write_256,
.read = spi_chip_read,
.voltage = {2700, 3600},
+ .prepare_access = spi_prepare_io,
+ .finish_access = spi_finish_io,
},
{