From 0662793ca0050e823cd1207cc4689a1cba5068bd Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Thu, 28 Jun 2018 06:24:26 -0400 Subject: Add cleaned-up xDuoo X3 support Cleaned up, rebased, and forward-ported from the xvortex fork. (original credit to vsoftster@gmail.com) Change-Id: Ibcc023a0271ea81e901450a88317708c2683236d Signed-off-by: Solomon Peachy --- firmware/drivers/nand_id.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'firmware/drivers/nand_id.c') diff --git a/firmware/drivers/nand_id.c b/firmware/drivers/nand_id.c index f2b9861c7c..56132ab090 100644 --- a/firmware/drivers/nand_id.c +++ b/firmware/drivers/nand_id.c @@ -34,27 +34,38 @@ static const struct nand_info samsung[] = /* id1, id2 pages/block, blocks, page_size, spare_size, col_cycles, row_cycles, planes -*/ +*/ {0xDC, 0x10, /* K9F4G08UOM */ 64, 4096, 2048, 64, 2, 3, 1 }, - + {0xD3, 0x51, /* K9K8G08UOM */ 64, 8192, 2048, 64, 2, 3, 1 }, - + {0xD5, 0x14, /* K9GAG08UOM */ 128, 4096, 4096, 128, 2, 3, 2 }, - + {0xD5, 0x55, /* K9LAG08UOM, K9HBG08U1M, K9MCG08U5M */ 128, 8192, 2048, 64, 2, 3, 4 }, - + {0xD7, 0x55, /* K9LBG08UOM */ 128, 8192, 4096, 128, 2, 3, 4 }, }; +static const struct nand_info gigadevice[] = +{ +/* + id1, id2 + pages/block, blocks, page_size, spare_size, col_cycles, row_cycles, planes +*/ + {0xB1, 0x80, /* MD5N01G51MSD1B */ + 64, 1024, 2048, 64, 2, 2, 1 }, +}; + #define NI(id, x) {id, (struct nand_info*)x, (sizeof(x)/sizeof(struct nand_info))} static const struct nand_manufacturer all[] = { NI(0xEC, samsung), + NI(0x98, gigadevice), }; // ----------------------------------------------------------------------------- @@ -63,7 +74,7 @@ struct nand_info* nand_identify(unsigned char data[5]) { unsigned int i; int found = -1; - + for(i = 0; i < (sizeof(all)/sizeof(struct nand_manufacturer)); i++) { if(data[0] == all[i].id) @@ -72,16 +83,16 @@ struct nand_info* nand_identify(unsigned char data[5]) break; } } - + if(found < 0) return NULL; - + for(i = 0; i < all[found].total; i++) { if(data[1] == all[found].info[i].dev_id && data[2] == all[found].info[i].dev_id2) return &all[found].info[i]; } - + return NULL; } -- cgit v1.2.3