On Thu, 13 Aug 2015 16:17:20 -0400 "Patrick 'P. J.' McDermott" pj@baldr1.pehjota.net wrote:
Although I don't have schematics, I see resistors on the board on the CS#, SO, WP#, SCK, NC/HOLD#, and VCC lines, indicating that the board is likely designed for ISP.
Not necessarily. Could be simple pull-ups (and a current limiter on VCC)...?
damo22 looked at the datasheet [1] (the AT25 datasheet [2] is almost identical) and suggested that maybe the chip is in Deep Power-Down mode, which would explain why it's not responding to commands from flashrom on an external linux_spi programmer.
Is it possible that the AT26DF321 on this board is always put in Deep Power-Down mode by the ICH9 (Intel 82801IO) but the AT26DF321 on the other board I successfully tried (with an Intel 82801IEM ICH9M-E) is normally in standby? Has anyone else ever encountered an SPI flash chip in Deep Power-Down mode?
I looked through the source code to see if flashrom sends or could send a Resume from Deep Power-Down command. The command is a 0xAB opcode while CS# is asserted, followed by a deassertion of CS# and a delay of up to 3 µs. flashrom doesn't send this command, but all of that seems easily doable except for the CS# deassertion. Linux's Documentation/spi/spidev file says that the SPI_IOC_MESSAGE(N) request does not deselect the chip.
flashrom DOES send 0xAB (RES) as it is one of the opcodes that can be used to identify flash chips (look for probe_spi_res1 in your log).
Any recommendations on how to proceed?
Unfortunately, I don't have another explanation other than that the board simply does not work with ISP. Have you tried measuring actual voltages on the board while flashrom is running or even using a logic analyzer?