On Sat, 13 Feb 2016 00:08:55 +0530 Hatim Kanchwala hatim@hatimak.me wrote:
Here's the updated patch which incorporates Urja's suggestion. I have also fixed the (nasty :p) typo I made earlier.
Signed-off-by: Hatim Kanchwala hatim@hatimak.me
flashchips.c | 40 ++++++++++++++++++++++++++++++++++++++++ flashchips.h | 1 + 2 files changed, 41 insertions(+)
diff --git a/flashchips.c b/flashchips.c index c60514b..99b79db 100644 --- a/flashchips.c +++ b/flashchips.c @@ -6243,26 +6243,66 @@ const struct flashchip flashchips[] = { }, { .eraseblocks = { {1024 * 1024, 1} }, .block_erase = spi_block_erase_c7, } }, .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ .unlock = spi_disable_blockprotect, .write = spi_chip_write_256, .read = spi_chip_read, .voltage = {2700, 3600}, },
{
.vendor = "GigaDevice",
.name = "GD25VQ41B",
.bustype = BUS_SPI,
.manufacture_id = GIGADEVICE_ID,
.model_id = GIGADEVICE_GD25VQ41B,
.total_size = 512,
.page_size = 256,
/* Lockable Security Registers: 3 * 512B total; read 0x48, write 0x42, erase 0x44 */
I have reversed that change and used 1536B for consistency here as well.
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_UNTESTED,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
^^^^^^^^^^^^^^^^ spaces not tabs
{
{
.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,
}
},
/* TODO: 2nd Status Register; read 0x35 */
.printlock = spi_prettyprint_status_register_bp4_srwd,
.unlock = spi_disable_blockprotect_bp4_srwd,
.write = spi_chip_write_256,
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {2300, 3600},
Good catch! That is exactly the feature of the VQ ("2.5V) family. There is a bunch of other chips in that family in case you are not bored already by this ;) http://www.gigadevice.com/product-series/12.html
- },
- { .vendor = "Hyundai", .name = "HY29F002T", .bustype = BUS_PARALLEL, .manufacture_id = HYUNDAI_ID, .model_id = HYUNDAI_HY29F002T, .total_size = 256, .page_size = 256 * 1024, .feature_bits = FEATURE_EITHER_RESET, /* Some revisions may need FEATURE_ADDR_2AA */ .tested = TEST_OK_PRE, .probe = probe_jedec, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = {
diff --git a/flashchips.h b/flashchips.h index 74c44a0..e469363 100644 --- a/flashchips.h +++ b/flashchips.h @@ -368,26 +368,27 @@ #define GIGADEVICE_GD25Q20 0x4012 /* Same as GD25QB */ #define GIGADEVICE_GD25Q40 0x4013 /* Same as GD25QB */ #define GIGADEVICE_GD25Q80 0x4014 /* Same as GD25Q80B (which has OTP) */ #define GIGADEVICE_GD25Q16 0x4015 /* Same as GD25Q16B (which has OTP) */ #define GIGADEVICE_GD25Q32 0x4016 /* Same as GD25Q32B */ #define GIGADEVICE_GD25Q64 0x4017 /* Same as GD25Q64B */ #define GIGADEVICE_GD25Q128 0x4018 /* GD25Q128B only? */ #define GIGADEVICE_GD25LQ40 0x6013 #define GIGADEVICE_GD25LQ80 0x6014 #define GIGADEVICE_GD25LQ16 0x6015 #define GIGADEVICE_GD25LQ32 0x6016 #define GIGADEVICE_GD25LQ64 0x6017 /* Same as GD25LQ64B (which is faster) */ #define GIGADEVICE_GD25LQ128 0x6018 +#define GIGADEVICE_GD25VQ41B 0x4213 #define GIGADEVICE_GD29GL064CAB 0x7E0601
#define HYUNDAI_ID 0xAD /* Hyundai */ #define HYUNDAI_HY29F400T 0x23 /* Same as HY29F400AT */ #define HYUNDAI_HY29F800B 0x58 /* Same as HY29F800AB */ #define HYUNDAI_HY29LV800B 0x5B #define HYUNDAI_HY29F040A 0xA4 #define HYUNDAI_HY29F400B 0xAB /* Same as HY29F400AB */ #define HYUNDAI_HY29F002B 0x34 #define HYUNDAI_HY29F002T 0xB0 #define HYUNDAI_HY29LV400T 0xB9 #define HYUNDAI_HY29LV400B 0xBA #define HYUNDAI_HY29F080 0xD5
I have fixed the few issues myself, acked the patch and committed it in r1937. Thanks!