Thanks for pointing out layout option. But it still accepts 16MB image as argument.
  Is there a way where i can select the second chip and give only 8MB image file ?.

Just curious:

  How to select the SPI flash chip using CS on ICH9 ? ICH9 doc states that CS can used to select the chip but
  didn't have enough information on how to program CS.

  Is hwseq only solution for accessing multiple chips ?.

On Tue, Mar 27, 2012 at 4:04 AM, Stefan Tauner <stefan.tauner@student.tuwien.ac.at> wrote:
On Tue, 27 Mar 2012 01:40:30 +0530
narayanan best <narayananbest@gmail.com> wrote:

> > > I believe the cause is due to hardware sequencing write does not disable
> > > SRPL (sector protection register lock). I used -p
> > > internal:ich_spi_force=yes option which didn't help.
> > >
> > > This was confirmed when i gave ich_spi_mode=swseq (read or write) as
> > > parameter, it disables the SRPL and next write of 16MB with hardware
> > > sequencing succeeded.

you are right with your diagnosis afaics. when i implemented hwseq i
was not thinking about setups like yours. hwseq abstracts away so many
aspects of the write process that it did not make a lot of sense to
think about chip-specific write protections. but in the case hwseq is
only used to be able to access two flash chips, it is (apparently) a
viable use case for some.

are you involved in the design of that specific machine and are you
able to change the firmware? in that case i wonder why you made the
design choice to use chip-specific write protections instead of the
ones provided by the chipset.

if you bought it completely i would like to know which board that is.

in any case, changing flashrom to unlock the first flash chip with sw
sequencing and then doing the rest of the process with hwseq would be a
major effort. a possible workaround is to use swseq to access the first
chip and hwseq for the other half. this could be done with layout
files, see manpage for details please (layout files do only work for
writing at the moment. patches exist for the other operation modes too,
but they are not committed yet. this does not really affect you,
because you only need a workaround for writing anyway).

i also spotted a bug in ich_descriptors.c that showed up in your log.
line 822 should be
"       if (nr > 5) {"
instead of
"       if (nr >= 5) {"


   I will get back on this in my next mail.
 
would be nice if you could recompile with that change and post another
log.
--
Kind regards/Mit freundlichen Grüßen, Stefan Tauner