<div class="gmail_quote">On Tue, Jan 3, 2012 at 11:59 AM, Carl-Daniel Hailfinger <span dir="ltr"><<a href="mailto:c-d.hailfinger.devel.2006@gmx.net" target="_blank">c-d.hailfinger.devel.2006@gmx.net</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The authoritative svn master tree at <a href="http://flashrom.org" target="_blank">flashrom.org</a> and the Google<br>
ChromiumOS flashrom tree have diverged quite a bit in terms of hardware<br>
support, especially for Embedded Controllers (EC). That is unfortunate<br>
because all interface rework and all cleanups in main flashrom have to<br>
be ported by hand (if they are done at all) to the ChromiumOS tree with<br>
some potential for errors during merge/porting.<br>
<br>
The EC support code in the ChromiumOS tree needs a few cleanups to be<br>
closer to the style and durability requirements we have for <a href="http://flashrom.org" target="_blank">flashrom.org</a><br>
svn, but keeping the code outside our tree won't improve it. The same<br>
argument applies to Nvidia Tegra support.<br>
<br>
<br>
The Linux kernel has a staging directory, I propose we use a similar<br>
mechanism for flashrom (without the special staging/ directory, though):<br>
Merge driver files as-is and clean them up in our tree, but have all<br>
hooks for the staging code inside #ifdef EXPERIMENTAL or somesuch.<br>
Any cleanups for that code can happen in <a href="http://flashrom.org" target="_blank">flashrom.org</a> svn, and whenever<br>
Google wants to merge the cleanups into their tree, they can do so<br>
easily. If code is determined to be ready for inclusion, we can simply<br>
remove #ifdef EXPERIMENTAL from its hooks.<br></blockquote><div><br></div><div>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.</div>


<div><br></div><div>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.</div>


<div><br></div></div>-- <br>David Hendricks (dhendrix)<br>Systems Software Engineer, Google Inc.<br>