On Wed, 4 Apr 2007 04:25:10 +0200, RusH wrote: > > 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); > Thanks for the information. I really wonder why Asus tries that hard to hide some I2C/SMBus devices behind gates. I fail to see any benefit in doing so, and it makes both the hardware more expensive and the code more complex. -- Jean Delvare