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,
},
{
diff --git a/include/flashchips.h b/include/flashchips.h
index dc0eab8..d86aa5d 100644
--- a/include/flashchips.h
+++ b/include/flashchips.h
@@ -209,7 +209,12 @@
/* Boya/BoHong Microelectronics Inc. */
#define BOYA_BOHONG_ID 0x68
-#define BOYA_BOHONG_B_25D16A 0x4015
+#define BOYA_BOHONG_B_25D05AS 0x4010
+#define BOYA_BOHONG_B_25D10AS 0x4011
+#define BOYA_BOHONG_B_25D20AS 0x4012
+#define BOYA_BOHONG_B_25D40AS 0x4013
+#define BOYA_BOHONG_B_25D80AS 0x4014 /* Same as BY25Q80* */
+#define BOYA_BOHONG_B_25D16AS 0x4015 /* Same as BY25Q16* */
#define BOYA_BOHONG_B_25Q128AS 0x4018
/* Bright Microelectronics has the same manufacturer ID as Hyundai... */