changes today.
YhLu
YhLu at tyan.com
Thu Sep 30 12:14:01 CEST 2004
I guess 82801er need that too.
YH
-----Original Message-----
From: Ronald G. Minnich [mailto:rminnich at lanl.gov]
Sent: Thursday, September 30, 2004 9:38 AM
To: linuxbios at clustermatic.org
Subject: changes today.
A few changes that are important to some of you.
First, I found a fun problem in the i82801dbm early smbus code. It starts
an op, then waits for the 'active' bit to go to zero. The CPU is so fast
that it polls before the bit goes to one, sees that it is zero, says 'the
op is done', then gets an error because the right done bit is not set. The
result on the digital Logic adl855pc was that it would not reliably read
the smbus.
So I've added, to this file:
southbridge/intel/i82801dbm/i82801dbm_early_smbus.c
this function:
> static int smbus_wait_until_active(void)
> {
> unsigned long loops;
> loops = SMBUS_TIMEOUT;
> do {
> unsigned char val;
> smbus_delay();
> val = inb(SMBUS_IO_BASE + SMBHSTSTAT);
> if ((val & 1)) {
> break;
> }
> } while(--loops);
> return loops?0:-4;
> }
which I hope is the right way to do this :-)
And in the smbus_read_byte, it now calls the function in this manner:
> /* poll for it to start */
> if (smbus_wait_until_active() < 0) {
> return -4;
> }
in other words, wait until it is started BEFORE you see if it is done :-)
This affects all mobos using this part; let me know if it is trouble for
you. It should not be.
Next, flash_and_burn now has an erase_block_jedec function, and I have
added support for the SST firmware hub parts. Tested and working on the 1
MBYTE SST part (49LF008A)
ron
_______________________________________________
Linuxbios mailing list
Linuxbios at clustermatic.org
http://www.clustermatic.org/mailman/listinfo/linuxbios
More information about the coreboot
mailing list