[LinuxBIOS] Asus smbus mux
RusH
citizenr at gmail.com
Wed Apr 4 04:25:10 CEST 2007
On 4/2/07, Jean Delvare <khali at linux-fr.org> wrote:
> > Tamas MIKLOS send me the asus mux code. There are 5 hacks with smbus
> > mux switch on IO, and 3 with smbus mux switch on smbus (lol thats
> > funny), it covers 31 types of asus boards (plus many more subtypes).
> > Oldest board is P3B, newest P4B.
>
> Is this information public? We don't yet support I2C/SMBus
> multiplexing, but when we do, if we have the information, we can add
> support for these boards.
Here it is, pseudocode:
ulong temp, temp2;
'3V4X'
enable SPD
temp = inl_port($e44c);
outl_port ($e44c,(temp & 0xe7ffffff) | 0x08000000);
disable SPD
outl_port($e44c,temp);
----------------------
'K7V'
'A7V'
'A7V133'
'A7P'
'A7M'
enable SPD
temp = inb_port($e44d);
outb_port ($e44d,temp | 0x01);
disable SPD
outb_port($e44d,temp);
This one is tested on A7V133, from DSTD
OperationRegion (\SGPO, SystemIO, 0xE44C, 0x04)
Field (SGPO, ByteAcc, NoLock, Preserve)
{
GPO0, 1,
Offset (0x01),
GPO8, 1, fe
, 2,
GP11, 1,
Offset (0x04)
}
tested
1 1 1 1 0 0 0 0 GPO0
1 0 0 1 1 0 0 1 GPO8
0 1 0 1 1 0 1 0 GP11
s c n n n n c s
s=spd + hwmonitor
c=clock + hwmonitor
n=hwmonitor
----------------------
'P3B'
'CUBX'
enable SPD
temp = inb_port($e437);
outb_port($e437,(temp & 0xe7) | 0x08);
disable SPD
outb_port($e437,temp);
----------------------
'CUPL'
'UV4X'
enable SPD
temp = inl_port($e44c);
outl_port($e44c,(temp & 0xfffff6fff) | 0x100);
disable SPD
outl_port($e44c,temp);
----------------------
'USL2'
'CUC2'
'-A7V266-E'
'-A7V266-M'
'-A7V266'
'WEM'
'-CUW'
'<<CUW>>'
'P3C'
'UEP2'
'TUEG'
'-MEW-'
'<<MEW>>'
'-P3W-E'
'<<P3W>>'
'CUSI'
'CUV2'
'A7S'
enable SPD
outb_port($2e,$87);
outb_port($2e,$87);
outb_port($2e,7);
outb_port($2f,8);
outb_port($2e,$f1);
temp = inb_port($2f);
outb_port($2e,$f1);
outb_port($2f,(temp & 0xe7) | 0x10);
outb_port($2e,$aa);
disable SPD
outb_port($2e,$87);
outb_port($2e,$87);
outb_port($2e,7);
outb_port($2f,8);
outb_port($2e,$f1);
outb_port($2f,temp);
outb_port($2e,$aa);
----------------------
'CUR'
enable SPD
temp = inb_port($ec80);
outb_port($ec80,(temp & 0xef) | 0x10);
temp2 = inb_port($ec84);
outb_port($ec84,(temp2 & 0xef) | 0x10);
disable SPD
outb_port($ec80,temp);
outb_port($ec84,temp2);
----------------------
'A7V333'
enable SPD
outb_port($2E,$87);
outb_port($2E,$87);
outb_port($2E,7);
outb_port($2F,8);
outb_port($2E,$F0);
temp = inb_port($2F);
outb_port($2E,$F0);
outb_port($2F,(temp & 0xE7) | 0x10);
outb_port($2E,$F1);
temp2 = inb_port($2F);
outb_port($2E,$F1);
outb_port($2F,(temp2 & 0xE7) | 0x10);
outb_port($2E,$AA);
disable SPD
outb_port($2E,$87);
outb_port($2E,$87);
outb_port($2E,7);
outb_port($2F,8);
outb_port($2E,$F0);
outb_port($2F,temp);
outb_port($2E,$F1);
outb_port($2F,temp2);
outb_port($2E,$AA);
----------------------
'<P4B>'
enable SPD
outb_port($2E,$87);
outb_port($2E,$87);
outb_port($2E,7);
outb_port($2F,7);
outb_port($2E,$F2);
temp = inb_port($2F);
outb_port($2E,$F2);
outb_port($2F,(temp & 0xFC) | 0x1);
outb_port($2E,2);
temp2 = inb_port($2F);
outb_port($2F,temp2 | 0x2);
outb_port($2E,$AA);
disable SPD
outb_port($2E,$87);
outb_port($2E,$87);
outb_port($2E,7);
outb_port($2F,7);
outb_port($2E,$F2);
outb_port($2F,temp);
outb_port($2E,$AA);
----------------------
--
Who logs in to gdm? Not I, said the duck.
More information about the coreboot
mailing list