Make the reference to the 'Default codepage' setting introduced in r18581 actually...
[kugel-rb.git] / firmware / drivers / nand_id.c
blobdfb96c8820fa5b8c4048ac8e87cb24afcf25c820
1 /***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
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 ****************************************************************************/
22 #include <stdlib.h>
23 #include "nand_id.h"
25 struct nand_manufacturer
27 unsigned char id;
28 struct nand_info* info;
29 unsigned short total;
32 static const struct nand_info samsung[] =
34 /* { id1, id2, pages_per_block, blocks_per_bank, page_size, spare_size, col_cycles, row_cycles } */
36 /* K9F4G08UOM */
37 {0xDC, 0x10, 64, 4096, 2048, 64, 2, 3 },
38 /* K9K8G08UOM */
39 {0xD3, 0x51, 64, 8192, 2048, 64, 2, 3 },
40 /* K9LAG08UOM */
41 {0xD5, 0x55, 128, 8192, 2048, 64, 2, 3 },
42 /* K9LBG08UOM, K9HBG08U1M, K9MCG08U5M */
43 {0xD7, 0x55, 128, 8192, 4096, 128, 2, 3 },
46 #define NI(id, x) {id, (struct nand_info*)x, (sizeof(x)/sizeof(struct nand_info))}
47 static const struct nand_manufacturer all[] =
49 NI(0xEC, samsung),
52 // --------------------------------------------------------------------------------------------------
54 struct nand_info* nand_identify(unsigned char data[5])
56 unsigned int i;
57 int found = -1;
59 for(i = 0; i < (sizeof(all)/sizeof(struct nand_manufacturer)); i++)
61 if(data[0] == all[i].id)
63 found = i;
64 break;
68 if(found < 0)
69 return NULL;
71 for(i = 0; i < all[found].total; i++)
73 if(data[1] == all[found].info[i].dev_id &&
74 data[2] == all[found].info[i].dev_id2)
75 return &all[found].info[i];
78 return NULL;