diff options
author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2008-02-06 22:07:58 +0000 |
---|---|---|
committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2008-02-06 22:07:58 +0000 |
commit | 1263d2af08990b7c372a744ab970a7f0e279885f (patch) | |
tree | 881d25a99cb48b0711afaa41d875dbb67b6e949c /spi.c | |
parent | 6b53fed02d38d7d7a53afeac540d1c7e8ace4ec3 (diff) | |
download | ast2050-flashrom-1263d2af08990b7c372a744ab970a7f0e279885f.zip ast2050-flashrom-1263d2af08990b7c372a744ab970a7f0e279885f.tar.gz |
Handle JEDEC JEP106W continuation codes in SPI RDID
Some vendors like Programmable Micro Corp (PMC) need this. Both the
serial and parallel flash JEDEC detection routines would benefit from a
parity/sanity check of the vendor ID. Will do this later.
Add support for the PMC Pm25LV family of SPI flash chips.
Corresponding to flashrom svn r191 and coreboot v2 svn r3091.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Chris Lingard <chris@stockwith.co.uk>
Diffstat (limited to 'spi.c')
-rw-r--r-- | spi.c | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -278,11 +278,17 @@ void generic_spi_write_disable() int probe_spi(struct flashchip *flash) { unsigned char readarr[3]; - uint8_t manuf_id; - uint16_t model_id; + uint32_t manuf_id; + uint32_t model_id; if (!generic_spi_rdid(readarr)) { - manuf_id = readarr[0]; - model_id = (readarr[1] << 8) | readarr[2]; + /* Check if this is a continuation vendor ID */ + if (readarr[0] == 0x7f) { + manuf_id = (readarr[0] << 8) | readarr[1]; + model_id = readarr[2]; + } else { + manuf_id = readarr[0]; + model_id = (readarr[1] << 8) | readarr[2]; + } printf_debug("%s: id1 0x%x, id2 0x%x\n", __FUNCTION__, manuf_id, model_id); if (manuf_id == flash->manufacture_id && model_id == flash->model_id) { |