mirror of
https://review.coreboot.org/flashrom.git
synced 2025-07-01 22:21:16 +02:00
Unify non-shifted and shifted JEDEC access
Some Parallel bus chips have a 16-bit mode and an 8-bit mode. They use normal JEDEC addresses for 16-bit mode and shifted addresses (by 1 bit) for 8-bit mode. Some programmers can access them in 16-bit mode, but on all flashrom-supported programmers so far, we access them in 8-bit mode. This means we have to shift the addresses but apart from the addresses we can share the code. This patch makes this possible by checking the chip's FEATURE_ADDR_SHIFTED flag in common JEDEC functions and applying the right addresses respectively. Corresponding to flashrom svn r1840. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
This commit is contained in:

committed by
Stefan Tauner

parent
6697f71ade
commit
a8cf3620a4
48
en29lv640b.c
48
en29lv640b.c
@ -85,51 +85,3 @@ int probe_en29lv640b(struct flashctx *flash)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int erase_chip_shifted_jedec(struct flashctx *flash)
|
||||
{
|
||||
chipaddr bios = flash->virtual_memory;
|
||||
|
||||
chip_writeb(flash, 0xAA, bios + 0xAAA);
|
||||
chip_writeb(flash, 0x55, bios + 0x555);
|
||||
chip_writeb(flash, 0x80, bios + 0xAAA);
|
||||
|
||||
chip_writeb(flash, 0xAA, bios + 0xAAA);
|
||||
chip_writeb(flash, 0x55, bios + 0x555);
|
||||
chip_writeb(flash, 0x10, bios + 0xAAA);
|
||||
|
||||
programmer_delay(10);
|
||||
toggle_ready_jedec(flash, bios);
|
||||
|
||||
/* FIXME: Check the status register for errors. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
int erase_block_shifted_jedec(struct flashctx *flash, unsigned int start, unsigned int len)
|
||||
{
|
||||
chipaddr bios = flash->virtual_memory;
|
||||
chipaddr dst = bios + start;
|
||||
|
||||
chip_writeb(flash, 0xAA, bios + 0xAAA);
|
||||
chip_writeb(flash, 0x55, bios + 0x555);
|
||||
chip_writeb(flash, 0x80, bios + 0xAAA);
|
||||
|
||||
chip_writeb(flash, 0xAA, bios + 0xAAA);
|
||||
chip_writeb(flash, 0x55, bios + 0x555);
|
||||
chip_writeb(flash, 0x30, dst);
|
||||
|
||||
programmer_delay(10);
|
||||
toggle_ready_jedec(flash, bios);
|
||||
|
||||
/* FIXME: Check the status register for errors. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
int erase_chip_block_shifted_jedec(struct flashctx *flash, unsigned int address, unsigned int blocklen)
|
||||
{
|
||||
if ((address != 0) || (blocklen != flash->chip->total_size * 1024)) {
|
||||
msg_cerr("%s called with incorrect arguments\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
return erase_chip_shifted_jedec(flash);
|
||||
}
|
||||
|
Reference in New Issue
Block a user