Random notes/MCP SPI support: Difference between revisions

From flashrom
Jump to navigation Jump to search
No edit summary
 
(23 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Status ==
== Status ==


<div style="margin-top:0.5em; padding:0.5em 0.5em 0.5em 0.5em; background-color:#ff6666; align:right; border:1px solid #000000;">
Thanks to the efforts of Michael Karcher, we have a clean room reverse engineered doc for the flashing interface, and Carl-Daniel Hailfinger has integrated a [http://patchwork.coreboot.org/patch/1692/ patch] that supports read and write on most boards. There is no further development at the moment, but we are happy about verbose logs of any board that does (not) work and is not already mentioned at [[Supported hardware]].
</div>
<!--
=== 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:
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 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.
* 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're doing right now.''' Clean room techniques are being followed. If you're willing to test patches on your board, please contact us via [[IRC]] or [[Mailinglist|mail]]. flashrom revision 902 (and later) has some debug code which could help.
* 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 [[Mailinglist|mail]]. Latest flashrom has some debug code which could help.


== Want to help? ==
== Want to help? ==


Pick any mainboard with a chipset newer than nForce5 (MCP55). Download latest (at least svn revision 902) flashrom and run as root (lspci output as non-root is useless, and flashrom won't work)
Pick any mainboard with a chipset newer than nForce5/MCP55.
  flashrom -V
 
<div style="margin-top:0.5em; padding:0.5em 0.5em 0.5em 0.5em; background-color:#ff6666; align:right; border:1px solid #000000;">
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
  lspci -nnvvvxxx
  superiotool -deV
  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".
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".
</div>


== Notes ==
== Notes ==
=== Tests of the current patch ===
* MCP61, 10de:03e0, LPC OK (valid SPIBAR), ECS Geforce6100SM-M, Andrew Cleveland
* MCP61, 10de:03e0, LPC OK (valid SPIBAR), Biostar NF520-A2 NF61D-A2, Vitaliy Buchynskyy
* 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
* MCP65, 10de:0441, SPI OK, MSI MS-7369, Melchior Franz
* MCP78S, 10de:075c, SPI OK, Asus M3N78 PRO, Brad Rogers
* MCP78S, 10de:075c, SPI OK, Asus M3N78-VM, Marcel Partap
* MCP78S, 10de:075c, SPI OK, Asus M4N78 PRO, Kimmo Vuorinen
* MCP78S, 10de:075c, SPI OK, Asus M4N78 PRO, Vikram Ambrose
* MCP79, 10de:0aad, SPI OK, Acer Aspire R3600, Andrew Morgan
* MCP79, 10de:0aae, LPC ?? (valid SPIBAR), Lenovo Ideapad S12 laptop, Christian Schmitt
* MCP79, 10de:0aae, SPI OK, Apple iMac9,1 Mac-F2218EA9, David "dledson"
=== Mainboard list ===
Boards with SPI flash (confirmed):
* MCP61, Brett Mahar
Boards with SPI flash (unconfirmed, guessed from photo):
Boards with SPI flash (unconfirmed, guessed from photo):
* Acer FMCP7A-ION (in Aspire Revo R3600; GeForce 9400M, MCP7A) [http://www.flickr.com/photos/steve_snaps/3767888634/] [http://www.coreboot.org/pipermail/flashrom/2010-March/002434.html flashrom output]
* Asus M2N-VM HDMI (nForce 630a, MCP67) [http://www.saved.im/nje2nzr6bhdi/mainboardobenff3.jpg] [http://overclockzone.com/news/information/2008/07/32/placas-base-amd-placa-asus-m2n-vm-hdmi--athlon-64-athlon-64-fx-ath-1g.jpg]
* Asus M2N-VM HDMI (nForce 630a, MCP67) [http://www.saved.im/nje2nzr6bhdi/mainboardobenff3.jpg] [http://overclockzone.com/news/information/2008/07/32/placas-base-amd-placa-asus-m2n-vm-hdmi--athlon-64-athlon-64-fx-ath-1g.jpg]
* Asus M2N-VM DVI (nForce 630a, MCP67) [http://www.unitycorp.co.jp/asus/motherboard/amd/socket_am2/m2n-vm_dvi/big_photo.jpg]
* Asus M2N-VM DVI (nForce 630a, MCP67) [http://www.unitycorp.co.jp/asus/motherboard/amd/socket_am2/m2n-vm_dvi/big_photo.jpg]
Line 22: Line 54:
* Asus M2N68-AM SE2 (nForce 630a, MCP61) [http://www.markit.eu/images/original/4a/a8/4aa886ac-61c7-4521-982c-88198d6d6b8b.jpg]
* Asus M2N68-AM SE2 (nForce 630a, MCP61) [http://www.markit.eu/images/original/4a/a8/4aa886ac-61c7-4521-982c-88198d6d6b8b.jpg]
* Asus M2N68-AM Plus (nForce 630a, MCP61 or MCP67) [http://s2.alejka.pl/i2/p/32/02/7fb40bc61e7a4_0_b.jpg]
* Asus M2N68-AM Plus (nForce 630a, MCP61 or MCP67) [http://s2.alejka.pl/i2/p/32/02/7fb40bc61e7a4_0_b.jpg]
* Asus M3N78-EM (GeForce 8200, MCP78S) [http://www.unitycorp.co.jp/asus/motherboard/amd/socket_am2plus/m3n78-em/big_photo.jpg], [http://www.coreboot.org/pipermail/flashrom/2010-February/002282.html flashrom output]
* Asus M4N68T-M (nForce 630a) [http://upload.hardver-teszt.hu/imgs/news/2009/536/asus-m4n68t-m-top.jpg]
* Asus M4N68T-M (nForce 630a) [http://upload.hardver-teszt.hu/imgs/news/2009/536/asus-m4n68t-m-top.jpg]
* ECS GF8200A (GeForce 8200, MCP78S) [http://www.ixbt.com/mainboard/ecs/gf8200a/board.jpg]
* Asus M4N78 Pro (GeForce 8200, MCP78S) [http://www.unitycorp.co.jp/asus/motherboard/amd/socket_am3/m4n78pro/big_photo.jpg], [http://www.flashrom.org/pipermail/flashrom/attachments/20100216/17bd93f6/attachment-0005.log flashrom output]
* Asus P5N78L (GeForce 9300, MCP79) [http://www.hkgolden.com/ArticleBase/big/3038/15007.jpg], [http://www.coreboot.org/pipermail/flashrom/2010-February/002259.html flashrom output]
* ECS GF7050VT-M5 (GeForce 7050, MCP73) [http://www.coreboot.org/pipermail/coreboot/2009-January/044099.html (confirmed)]
* ECS GF8200A (GeForce 8200, MCP78S) [http://www.ixbt.com/mainboard/ecs/gf8200a/board.jpg] [http://www.coreboot.org/pipermail/flashrom/2010-January/002004.html flashrom/lspci output]
* Gigabyte GA-M56S-S3 (MCP65) [http://pclab.pl/zdjecia/artykuly/khedron/27am2/gigabyte-ga-m56s-s3_top_b.jpg]
* Gigabyte GA-M56S-S3 (MCP65) [http://pclab.pl/zdjecia/artykuly/khedron/27am2/gigabyte-ga-m56s-s3_top_b.jpg]
* XFX MG-63MI-7159 (nForce 630i, MCP73) (no usable photo, but a ebay phillipines dealer sells preprogrammed SPI Flash for this board) [http://www.coreboot.org/pipermail/flashrom/2010-February/002162.html flashrom/lspci output]
* Zotac ION (GeForce 9400M, MCP7A) [http://commons.wikimedia.org/wiki/File:ZotacION.jpg] [http://www.coreboot.org/pipermail/flashrom/2010-March/002434.html flashrom/lspci output]


Boards with LPC flash (unconfirmed, guessed from photo):
Boards with LPC flash (unconfirmed, guessed from photo):
Line 31: Line 69:
* Asus M2N-E SLI [http://www.unitycorp.co.jp/asus/motherboard/amd/socket_am2/m2n-e_sli/big_photo.jpg]
* Asus M2N-E SLI [http://www.unitycorp.co.jp/asus/motherboard/amd/socket_am2/m2n-e_sli/big_photo.jpg]
* Asus M2N-DH (nForce 430) [http://images.pcwelt.de/images/pcwelt/bdb/62660/800x.jpg]
* Asus M2N-DH (nForce 430) [http://images.pcwelt.de/images/pcwelt/bdb/62660/800x.jpg]
* Asus M2N-MX (nForce 430/MCP61), (Windbond W39V040C, confirmed) [http://www.flashrom.org/pipermail/flashrom/2010-February/002278.html flashrom output]
* Asrock ALiveNF5SLI-1394 (nForce 560 SLI) [http://www.ocinside.de/assets/mainboard/asrock_alivenf5sli_1394_u_big.jpg]
* Asrock ALiveNF5SLI-1394 (nForce 560 SLI) [http://www.ocinside.de/assets/mainboard/asrock_alivenf5sli_1394_u_big.jpg]
* Asrock ALiveNF5-eSATA2+ (MCP65) [http://www.asrock.com/mb/photo/ALiveNF5-eSATA2+(Enlarge).jpg]
* Asrock ALiveNF5-eSATA2+ (MCP65) [http://www.asrock.com/mb/photo/ALiveNF5-eSATA2+(Enlarge).jpg]
Line 39: Line 78:
  ISA/LPC bridge reg 0x8a contents: 0x.., bit 6 is 1, bit 5 is 0
  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.
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.
--!>

Latest revision as of 13:58, 28 May 2012

Status

Thanks to the efforts of Michael Karcher, we have a clean room reverse engineered doc for the flashing interface, and Carl-Daniel Hailfinger has integrated a patch that supports read and write on most boards. There is no further development at the moment, but we are happy about verbose logs of any board that does (not) work and is not already mentioned at Supported hardware.