/* * 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 */