mirror of
https://review.coreboot.org/flashrom.git
synced 2025-07-01 22:21:16 +02:00
Add support for a bunch of 29GL parallel flash chips
29GL chips use a new 3-Byte device ID probing function at addresses 0x01, 0x0E, 0x0F. Flash chip families supported by this method include... - EON EN29GL - Gigadevice GD29GL (if they really exist) - ISSI (PMC) IS29GL - Macronix MX29GL (+MX68GL1G0F) - Spansion S29GL (+S70GL02G) - Winbond W29GL This patch adds respective flash chip definitions for chips up to 16 MB from Eon, ISSI, Macronix and Winbond. Bigger chips as well as those from Gigadevice and Spansion are left out. Corresponding to flashrom svn r1835. Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
This commit is contained in:
630
flashchips.c
630
flashchips.c
@ -4891,6 +4891,120 @@ const struct flashchip flashchips[] = {
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Eon",
|
||||
.name = "EN29GL064(A)B",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = EON_ID,
|
||||
.model_id = EON_EN29GL064B,
|
||||
.total_size = 8192,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{8 * 1024, 8},
|
||||
{64 * 1024, 127},
|
||||
},
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Eon",
|
||||
.name = "EN29GL064(A)T",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = EON_ID,
|
||||
.model_id = EON_EN29GL064T,
|
||||
.total_size = 8192,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{64 * 1024, 127},
|
||||
{8 * 1024, 8},
|
||||
},
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Eon",
|
||||
.name = "EN29GL064H/L",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = EON_ID,
|
||||
.model_id = EON_EN29GL064HL,
|
||||
.total_size = 8192,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {64 * 1024, 128} },
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Eon",
|
||||
.name = "EN29GL128",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = EON_ID,
|
||||
.model_id = EON_EN29GL128HL,
|
||||
.total_size = 16384,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {128 * 1024, 128} },
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {16 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Fujitsu",
|
||||
.name = "MBM29F004BC",
|
||||
@ -6092,6 +6206,120 @@ const struct flashchip flashchips[] = {
|
||||
.voltage = {3000, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "ISSI",
|
||||
.name = "IS29GL064B",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = ISSI_ID,
|
||||
.model_id = ISSI_PMC_IS29GL064B,
|
||||
.total_size = 8192,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{8 * 1024, 8},
|
||||
{64 * 1024, 127},
|
||||
},
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "ISSI",
|
||||
.name = "IS29GL064T",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = ISSI_ID,
|
||||
.model_id = ISSI_PMC_IS29GL064T,
|
||||
.total_size = 8192,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{64 * 1024, 127},
|
||||
{8 * 1024, 8},
|
||||
},
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "ISSI",
|
||||
.name = "IS29GL064H/L",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = ISSI_ID,
|
||||
.model_id = ISSI_PMC_IS29GL064HL,
|
||||
.total_size = 8192,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {64 * 1024, 128} },
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "ISSI",
|
||||
.name = "IS29GL128H/L",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = ISSI_ID,
|
||||
.model_id = ISSI_PMC_IS29GL128HL,
|
||||
.total_size = 16384,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {128 * 1024, 128} },
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {16 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Macronix",
|
||||
.name = "MX23L3254",
|
||||
@ -7197,6 +7425,207 @@ const struct flashchip flashchips[] = {
|
||||
.voltage = {4500, 5500},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Macronix",
|
||||
.name = "MX29GL320EB",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = MACRONIX_ID,
|
||||
.model_id = MACRONIX_MX29GL320EB,
|
||||
.total_size = 4096,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{8 * 1024, 8},
|
||||
{64 * 1024, 63},
|
||||
},
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {4 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Macronix",
|
||||
.name = "MX29GL320ET",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = MACRONIX_ID,
|
||||
.model_id = MACRONIX_MX29GL320ET,
|
||||
.total_size = 4096,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{64 * 1024, 63},
|
||||
{8 * 1024, 8},
|
||||
},
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {4 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Macronix",
|
||||
.name = "MX29GL320EH/L",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = MACRONIX_ID,
|
||||
.model_id = MACRONIX_MX29GL320EHL,
|
||||
.total_size = 4096,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {64 * 1024, 64} },
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {4 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Macronix",
|
||||
.name = "MX29GL640EB",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = MACRONIX_ID,
|
||||
.model_id = MACRONIX_MX29GL640EB,
|
||||
.total_size = 8192,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{8 * 1024, 8},
|
||||
{64 * 1024, 127},
|
||||
},
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Macronix",
|
||||
.name = "MX29GL640ET",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = MACRONIX_ID,
|
||||
.model_id = MACRONIX_MX29GL640ET,
|
||||
.total_size = 8192,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{64 * 1024, 127},
|
||||
{8 * 1024, 8},
|
||||
},
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Macronix",
|
||||
.name = "MX29GL640EH/L",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = MACRONIX_ID,
|
||||
.model_id = MACRONIX_MX29GL640EHL,
|
||||
.total_size = 8192,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {64 * 1024, 128} },
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Macronix",
|
||||
.name = "MX29GL128F",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = MACRONIX_ID,
|
||||
.model_id = MACRONIX_MX29GL128F,
|
||||
.total_size = 16384,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {128 * 1024, 128} },
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {16 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Macronix",
|
||||
.name = "MX29LV040",
|
||||
@ -13053,6 +13482,207 @@ const struct flashchip flashchips[] = {
|
||||
.voltage = {4500, 5500},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Winbond",
|
||||
.name = "W29GL032CB",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = AMD_ID, /* WTF: "Industry Standard compatible Manufacturer ID code of 01h" */
|
||||
.model_id = WINBOND_W29GL032CB,
|
||||
.total_size = 4096,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{8 * 1024, 8},
|
||||
{64 * 1024, 63},
|
||||
},
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {4 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Winbond",
|
||||
.name = "W29GL032CT",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = AMD_ID, /* WTF: "Industry Standard compatible Manufacturer ID code of 01h" */
|
||||
.model_id = WINBOND_W29GL032CT,
|
||||
.total_size = 4096,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{64 * 1024, 63},
|
||||
{8 * 1024, 8},
|
||||
},
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {4 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Winbond",
|
||||
.name = "W29GL032CH/L",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = AMD_ID, /* WTF: "Industry Standard compatible Manufacturer ID code of 01h" */
|
||||
.model_id = WINBOND_W29GL032CHL,
|
||||
.total_size = 4096,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {64 * 1024, 64} },
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {4 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Winbond",
|
||||
.name = "W29GL064CB",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = AMD_ID, /* WTF: "Industry Standard compatible Manufacturer ID code of 01h" */
|
||||
.model_id = WINBOND_W29GL064CB,
|
||||
.total_size = 8192,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{8 * 1024, 8},
|
||||
{64 * 1024, 127},
|
||||
},
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Winbond",
|
||||
.name = "W29GL064CT",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = AMD_ID, /* WTF: "Industry Standard compatible Manufacturer ID code of 01h" */
|
||||
.model_id = WINBOND_W29GL064CT,
|
||||
.total_size = 8192,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{64 * 1024, 127},
|
||||
{8 * 1024, 8},
|
||||
},
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Winbond",
|
||||
.name = "W29GL064CH/L",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = AMD_ID, /* WTF: "Industry Standard compatible Manufacturer ID code of 01h" */
|
||||
.model_id = WINBOND_W29GL064CHL,
|
||||
.total_size = 8192,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {64 * 1024, 128} },
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Winbond",
|
||||
.name = "W29GL128C",
|
||||
.bustype = BUS_PARALLEL,
|
||||
.manufacture_id = AMD_ID, /* WTF: "Industry Standard compatible Manufacturer ID code of 01h" */
|
||||
.model_id = WINBOND_W29GL128CHL,
|
||||
.total_size = 16384,
|
||||
.page_size = 128 * 1024, /* actual page size is 16 */
|
||||
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_jedec_29gl,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {128 * 1024, 128} },
|
||||
.block_erase = erase_sector_jedec,
|
||||
}, {
|
||||
.eraseblocks = { {16 * 1024 * 1024, 1} },
|
||||
.block_erase = erase_chip_block_jedec,
|
||||
},
|
||||
},
|
||||
.write = write_jedec_1,
|
||||
.read = read_memmapped,
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Winbond",
|
||||
.name = "W39F010",
|
||||
|
Reference in New Issue
Block a user