[coreboot] Flashrom problems on SB600
Carl-Daniel Hailfinger
c-d.hailfinger.devel.2006 at gmx.net
Tue Mar 17 00:45:17 CET 2009
On 17.03.2009 00:24, Peter Stuge wrote:
> Carl-Daniel Hailfinger wrote:
>
>> Can't we just rely on the SPI/LPC selection register to be
>> unchanged after boot?
>>
>
> That would be perfect.
>
This hunk does it, it even explains what is being done.
--- chipset_enable.c (revision 312)
+++ chipset_enable.c (working copy)
@@ -680,8 +680,16 @@
flashbus = BUS_TYPE_SB600_SPI;
/* Enable SPI ROM in SB600 PM register. */
+ /* If we enable SPI ROM here, we have to disable it after we leave.
+ * But how can we know which ROM we are going to handle? So we have
+ * to trade off. We only access LPC ROM if we boot via LPC ROM. And
+ * only SPI ROM if we boot via SPI ROM. If you want to do it crossly,
+ * you have to use the code below.
+ */
+ /*
OUTB(0x8f, 0xcd6);
OUTB(0x0e, 0xcd7);
+ */
return 0;
}
>> If someone deliberately changes that register,
>>
>
> Which register? I couldn't find one. :\
>
See the patch hunk above. Look for CD6 in the SB600 RRG. Notice CD6 is
PM_INDEX. CD7 is PM_DATA. Look at section 2.3.3.2 Power Management (PM)
Registers. 8F is FakeAsrEn.
FakeAsrEn has two interesting fields: UseBypassRom and BypassRomSel.
Basically, the patch hunk above does simply remove the forcing of SPI
access and relies on the default boot-up method. Back when you NAKed
that change, I wondered why but I assumed you wanted some more design to
go into it.
Other parts of the patch introduce timeout handling to the SB600 SPI
functions and change the programming interface a bit.
I think the patch is committable, but it should be split into multiple
pieces with one conceptual change each.
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Regards,
Carl-Daniel
--
http://www.hailfinger.org/
More information about the coreboot
mailing list