On Tue, Jan 3, 2012 at 11:59 AM, Carl-Daniel Hailfinger < c-d.hailfinger.devel.2006@gmx.net> wrote:
The authoritative svn master tree at flashrom.org and the Google ChromiumOS flashrom tree have diverged quite a bit in terms of hardware support, especially for Embedded Controllers (EC). That is unfortunate because all interface rework and all cleanups in main flashrom have to be ported by hand (if they are done at all) to the ChromiumOS tree with some potential for errors during merge/porting.
The EC support code in the ChromiumOS tree needs a few cleanups to be closer to the style and durability requirements we have for flashrom.org svn, but keeping the code outside our tree won't improve it. The same argument applies to Nvidia Tegra support.
The Linux kernel has a staging directory, I propose we use a similar mechanism for flashrom (without the special staging/ directory, though): Merge driver files as-is and clean them up in our tree, but have all hooks for the staging code inside #ifdef EXPERIMENTAL or somesuch. Any cleanups for that code can happen in flashrom.org svn, and whenever Google wants to merge the cleanups into their tree, they can do so easily. If code is determined to be ready for inclusion, we can simply remove #ifdef EXPERIMENTAL from its hooks.
Sounds good to me! This seems like a much better approach to help the code developed for Chrome/Chromium OS keep pace with upstream, and help us test upstream code and get it merged more frequently.
Note that in addition to the EC code itself, we'll also need to add the command-line processing to switch between SPI/LPC targets on the fly. This is the "-p internal:bus=" stuff we currently have in the chromium os branch.