Update the 'Supported audio formats' table, we now recognize ogg/vorbis files with...
[kugel-rb.git] / firmware / drivers / nand_id.c
blob4dc1ec1ceb96731d0e9ba7550410b7cdf25d470c
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 /* { pages_per_block, blocks_per_bank, page_size, spare_size, col_cycles, row_cycles } */
34 static const struct nand_info samsung[] =
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 M(id, x) {id, (struct nand_info*)x, (sizeof(x)/sizeof(struct nand_info))}
47 static const struct nand_manufacturer all[] =
49 M(0xEC, samsung),
52 struct nand_info* nand_identify(unsigned char data[5])
54 unsigned int i;
55 int found = -1;
56 for(i = 0; i < (sizeof(all)/sizeof(struct nand_manufacturer)); i++)
58 if(data[0] == all[i].id)
60 found = i;
61 break;
64 if(found < 0)
65 return NULL;
67 for(i = 0; i < all[found].total; i++)
69 if(data[1] == all[found].info[i].dev_id &&
70 data[2] == all[found].info[i].dev_id2)
71 return &all[found].info[i];
74 return NULL;