My GSoC 2010 flashrom project has been a full success, and I managed to add lots of features to flashrom which were not part of the original requirements as well.
The proposal had:the dozens
- Partial flashing. Patches were posted to the list, and they work. Merging has been postponed until after flashrom 0.9.3 to get a feature release which still has all flash chips marked as tested. Once partial flashing is merged, all erase functions and all write functions need to be retested again because they are changed by the patch to give you bytewise (and bitwise) granularity.
- Support for MCP6x/MCP7x SPI. Merged, and a speedup patch (not part of the original proposal) is pending.
- Support for multiple flash chips on the same board. Patches were posted to the list and work, but there is no consensus about the final user interface yet because reviewers are swamped with work.
- Support for non-x86 architectures. Merged, and on top of that (not part of the original proposal) there is a pending patch which allows even onboard flashing for the MIPS-based Lemote Yeeloong laptop.
- Support more external programmers. The RayeR SPIPGM patch (all operating systems instead of the proposed DOS-only implementation) is merged, and additionally I created a first draft driver for EZoflash (Willem clone) and collaborated with Idwer Vollering to create a patch for modern Intel NICs with SPI flash.
- Automatic chip test mode. Patch was posted to the list, needs partial write to be merged before it can be merged. Works, will be committed after flashrom 0.9.3 is released.
- Assisted recovery. Patch was posted to the list, works. This feature requires a full chip read before any write operation happens, and users of slow external programmers are concerned about the additional time this takes. Due to that, a final inclusion decision has not been made yet. We will likely allow disabling this feature with –noverify.
Optional features:
- Ability to run flashrom on top of libpayload. I was lucky to be able to work with Patrick Georgi who took care of the necessary libpayload changes to make the flashrom patch minimally invasive. I cleaned up the flashrom side to make the merge easier. Patch by Patrick was sent to the list, will be merged soon.
- Remote flashing. My proposal had a choice between two optional features, and libpayload support won against remote flashing. That said, a remote flashing design doc exists, and my libhwremotecontrol will be released soon.
I wish to thank Google, my mentor Stefan Reinauer, the other flashrom developers who had to review a boatload of patches I sent for GSoC related features (and cool extra features), and the users who were willing to test my code.
I am confident that all of my patches will be merged eventually (most pending patches will have to wait until 0.9.3 is out), and I will continue to work towards that goal. Now that GSoC is over, I can finally focus on wrapping up the flashrom 0.9.3 release with lots of cool new features.