summaryrefslogtreecommitdiff
path: root/common/include/all_flash.h
blob: 13a398c0623cf44e5f6ab2b14faf1bfb387844d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
 *  all_flash.h
 *
 *  Copyright (C) 2012 MStar Semiconductor.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
 */
#ifndef __ALL_FLASH_H
#define __ALL_FLASH_H

#define LOCKED_AT_RESET 1
#define GLUE(a,b) a ## b

#define FIELDS_OPENOCD(name, jedec, sector_sz, sector_nb, args...) \
    name, jedec, sector_sz, sector_nb
#define FIELDS_LINUX(name, jedec, sector_sz, sector_nb, flags, \
                    locked_at_reset, args...) \
    name, jedec, sector_sz, sector_nb, flags, locked_at_reset
#define FIELDS_UBOOT(name, jedec, sector_sz, sector_nb, flags, \
                     locked_at_reset, args...) \
    name, jedec, sector_sz, sector_nb, flags, locked_at_reset

#define FLASH(type, args...) { GLUE(FIELDS_, type)(args) },

#define FLASH_ARRAY(t) { \
    /* Atmel
     * -- some are (confusingly) marketed as "DataFlash". */ \
    FLASH (t, "at25fs010",  0x1f6601,  32 * 1024, 4, 0, LOCKED_AT_RESET) \
    FLASH (t, "at25fs040",  0x1f6604,  64 * 1024, 8, 0, LOCKED_AT_RESET) \
\
    FLASH (t, "at25df041a", 0x1f4401,  64 * 1024, 8, 0, LOCKED_AT_RESET) \
\
    FLASH (t, "at26f004",   0x1f0400,  64 * 1024, 8, 0, LOCKED_AT_RESET) \
    FLASH (t, "at26df081a", 0x1f4501,  64 * 1024, 16, 0, LOCKED_AT_RESET) \
    FLASH (t, "at26df161a", 0x1f4601,  64 * 1024, 32, 0, LOCKED_AT_RESET) \
    FLASH (t, "at26df321",  0x1f4700,  64 * 1024, 64, 0, LOCKED_AT_RESET) \
\
    /* Eon */ \
    FLASH (t, "en25q32",    0x1c3016,  64 * 1024, 64, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "en25q64",    0x1c3017,  64 * 1024, 128, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "en25q128",   0x1c3018,  64 * 1024, 256, 0, ! LOCKED_AT_RESET) \
\
    /* Macronix */ \
    FLASH (t, "mx25l3205d", 0xc22016,  64 * 1024, 64, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "mx25l6406e", 0xc22017,  64 * 1024, 128, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "mx25l128",   0xc22018,  64 * 1024, 256, 0, ! LOCKED_AT_RESET) \
\
    /* Spansion
     * -- single (large) sector size only, at least
     * for the chips listed here (without boot sectors).
     */ \
    FLASH (t, "s25sl004a",  0x010212,  64 * 1024, 8, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "s25sl008a",  0x010213,  64 * 1024, 16, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "s25sl016a",  0x010214,  64 * 1024, 32, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "s25sl032a",  0x010215,  64 * 1024, 64, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "s25sl064a",  0x010216,  64 * 1024, 128, 0, ! LOCKED_AT_RESET) \
\
    /* SST */ \
    FLASH (t, "sst25vf040b", 0xbf258d, 64 * 1024, 8, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "sst25vf080b", 0xbf258e, 64 * 1024, 16, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "sst25vf016b", 0xbf2541, 64 * 1024, 32, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "sst25vf032b", 0xbf254a, 64 * 1024, 64, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "sst25vf064c", 0xbf254b, 64 * 1024, 128, 0, LOCKED_AT_RESET) \
\
    /* ST Microelectronics
     * -- newer production may have feature updates. */ \
    FLASH (t, "m25p05",     0x202010,  32 * 1024, 2, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "m25p10",     0x202011,  32 * 1024, 4, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "m25p20",     0x202012,  64 * 1024, 4, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "m25p40",     0x202013,  64 * 1024, 8, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "m25p80",            0,  64 * 1024, 16, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "m25p16",     0x202015,  64 * 1024, 32, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "m25p32",     0x202016,  64 * 1024, 64, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "m25p64",     0x202017,  64 * 1024, 128, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "m25p128",    0x202018, 256 * 1024, 64, 0, ! LOCKED_AT_RESET) \
\
    FLASH (t, "m45pe80",    0x204014,  64 * 1024, 16, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "m45pe16",    0x204015,  64 * 1024, 32, 0, ! LOCKED_AT_RESET) \
\
    FLASH (t, "m25pe80",    0x208014,  64 * 1024, 16, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "m25pe16",    0x208015,  64 * 1024, 32, 0, ! LOCKED_AT_RESET) \
\
    FLASH (t, "n25q128",    0x20ba18,  64 * 1024, 256, 0, ! LOCKED_AT_RESET) \
\
    /* Winbond */ \
    FLASH (t, "w25x10",     0xef3011,  64 * 1024, 2, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "w25x20",     0xef3012,  64 * 1024, 4, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "w25x40",     0xef3013,  64 * 1024, 8, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "w25x80",     0xef3014,  64 * 1024, 16, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "w25x16",     0xef3015,  64 * 1024, 32, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "w25x32",     0xef3016,  64 * 1024, 64, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "w25q32",     0xef4016,  64 * 1024, 64, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "w25x64",     0xef3017,  64 * 1024, 128, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "w25q64",     0xef4017,  64 * 1024, 128, 0, ! LOCKED_AT_RESET) \
    FLASH (t, "w25q128",    0xef4018,  64 * 1024, 256, 0, ! LOCKED_AT_RESET) \
}

#endif /* __ALL_FLASH_H */