1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 * Copyright (C) 2008 by Maurus Cuelenaere
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
25 struct nand_manufacturer
28 struct nand_info
* info
;
32 static const struct nand_info samsung
[] =
36 pages/block, blocks, page_size, spare_size, col_cycles, row_cycles, planes
38 {0xDC, 0x10, /* K9F4G08UOM */
39 64, 4096, 2048, 64, 2, 3, 1 },
41 {0xD3, 0x51, /* K9K8G08UOM */
42 64, 8192, 2048, 64, 2, 3, 1 },
44 {0xD5, 0x14, /* K9GAG08UOM */
45 128, 4096, 4096, 128, 2, 3, 2 },
47 {0xD5, 0x55, /* K9LAG08UOM, K9HBG08U1M, K9MCG08U5M */
48 128, 8192, 2048, 64, 2, 3, 4 },
50 {0xD7, 0x55, /* K9LBG08UOM */
51 128, 8192, 4096, 128, 2, 3, 4 },
54 #define NI(id, x) {id, (struct nand_info*)x, (sizeof(x)/sizeof(struct nand_info))}
55 static const struct nand_manufacturer all
[] =
60 // -----------------------------------------------------------------------------
62 struct nand_info
* nand_identify(unsigned char data
[5])
67 for(i
= 0; i
< (sizeof(all
)/sizeof(struct nand_manufacturer
)); i
++)
69 if(data
[0] == all
[i
].id
)
79 for(i
= 0; i
< all
[found
].total
; i
++)
81 if(data
[1] == all
[found
].info
[i
].dev_id
&&
82 data
[2] == all
[found
].info
[i
].dev_id2
)
83 return &all
[found
].info
[i
];