Random notes/MCP SPI support

From flashrom
Revision as of 10:31, 4 July 2010 by Hailfinger (talk | contribs) (Notes: Tests of the working patch)
Jump to: navigation, search



Thanks to the efforts of Michael Karcher, we have a clean room reverse engineered doc for the flashing interface, and Carl-Daniel Hailfinger has posted a first experimental patch for testing. Please see the Want to help section.

Old status

We can't support SPI flash on Nvidia chipsets (except SPI behind LPC/SPI translation) because we don't have the necessary docs for the SPI interface. There are three ways to solve the problem:

  • Get docs from Nvidia. We have unofficial word that you either have to buy 100000 chipsets from them or work with a customer of theirs which buys 100000 chipsets to have a reasonable chance of getting programming information. And yes, we tried personal contacts in their software development group.
  • Get Nvidia to contribute code. This might be easier because they don't have to give us docs for the SPI interface if they supply working code. Needs a compelling business reason for them (and AFAICS "it would be cool" or "it would improve Linux support" is not a valid business reason). We can provide skeleton code for them to fill in, reducing the amount of developer time they have to spend to a few (~2-6) hours.
  • Reverse engineer the interface. This is what we have done. Clean room techniques are being followed. If you're willing to test patches on your board, please contact us via IRC or mail. Latest flashrom has some debug code which could help.

Want to help?

Pick any mainboard with a chipset newer than nForce5/MCP55.

If you're feeling adventurous and if you can recover from a bricked board (socketed SPI flash chip, and a supported SPI programmer to recover), please apply the following patch against latest flashrom: http://patchwork.coreboot.org/patch/1580/ , compile it with "make distclean; make" then run as root (lspci output as non-root is useless, and flashrom won't work)

./flashrom -V
lspci -nnvvvxxx
superiotool -deV

and mail the output together with the exact name of the mainboard, a link to a BIOS update file (please don't send the BIOS update file itself) to flashrom@flashrom.org . In case superiotool is not installed, you can skip the superiotool output. Please use a subject which contains "MCP SPI".


Tests of the current patch

  • MCP61, 10de:03e0, LPC OK (valid SPIBAR), ECS Geforce6100SM-M, Andrew Cleveland
  • MCP65, 10de:0441, SPI OK, MSI MS-7369 K9N Neo-F v2, Kjell Braden
  • MCP65, 10de:0441, SPI OK, MSI MS-7369, Wolfgang Schnitker
  • MCP65, 10de:0441, SPI OK, MSI MS-7369, Johannes Sjölund
  • MCP78S, 10de:075c, SPI OK, Asus M3N78 PRO, Brad Rogers
  • MCP78S, 10de:075c, SPI OK, Asus M4N78 PRO, Kimmo Vuorinen
  • MCP78S, 10de:075c, SPI OK, Asus M4N78 PRO, Vikram Ambrose
  • MCP79, 10de:0aae, LPC ?? (valid SPIBAR), Lenovo Ideapad S12, Christian Schmitt
  • MC79, 10de:0aad, SPI OK, Acer Aspire R3600, Andrew Morgan

Mainboard list

Boards with SPI flash (unconfirmed, guessed from photo):

  • Acer FMCP7A-ION (in Aspire Revo R3600; GeForce 9400M, MCP7A) [1] flashrom output
  • Asus M2N-VM HDMI (nForce 630a, MCP67) [2] [3]
  • Asus M2N-VM DVI (nForce 630a, MCP67) [4]
  • Asus M2N-MX SE (nForce 430), probably IT87 translation [5]
  • Asus M2N68-VM (GeForce 7050, MCP67) [6]
  • Asus M2N68-AM SE2 (nForce 630a, MCP61) [7]
  • Asus M2N68-AM Plus (nForce 630a, MCP61 or MCP67) [8]
  • Asus M3N78-EM (GeForce 8200, MCP78S) [9], flashrom output
  • Asus M4N68T-M (nForce 630a) [10]
  • Asus M4N78 Pro (GeForce 8200, MCP78S) [11], flashrom output
  • Asus P5N78L (GeForce 9300, MCP79) [12], flashrom output
  • ECS GF7050VT-M5 (GeForce 7050, MCP73) (confirmed)
  • ECS GF8200A (GeForce 8200, MCP78S) [13] flashrom/lspci output
  • Gigabyte GA-M56S-S3 (MCP65) [14]
  • XFX MG-63MI-7159 (nForce 630i, MCP73) (no usable photo, but a ebay phillipines dealer sells preprogrammed SPI Flash for this board) flashrom/lspci output
  • Zotac ION (GeForce 9400M, MCP7A) [15] flashrom/lspci output

Boards with LPC flash (unconfirmed, guessed from photo):

  • Asus M2N 1394 (nForce 430) [16]
  • Asus M2N-E (nForce 570 Ultra) [17]
  • Asus M2N-E SLI [18]
  • Asus M2N-DH (nForce 430) [19]
  • Asus M2N-MX (nForce 430/MCP61), (Windbond W39V040C, confirmed) flashrom output
  • Asrock ALiveNF5SLI-1394 (nForce 560 SLI) [20]
  • Asrock ALiveNF5-eSATA2+ (MCP65) [21]
  • Shuttle Barebone SN68PTG5 (MCP67) (PMC Pm49FL004, confirmed)

nForce 630a seems to be exclusively SPI...

ISA/LPC bridge reg 0x8a contents: 0x.., bit 6 is 1, bit 5 is 0

This seems to be the used flash bus, and the result above points to SPI.

ISA/LPC bridge reg 0x00 contents: 0x00, bit 6 is 0, bit 5 is 0
SPI BAR is at 0x00000000

Observed on M2N-MX with LPC flash.