Maybe Nvidia fixed the bug in mcp55. AMD8111 is using DAT0...
It should use SMBHDTCMD for val with send/receive byte.
Serverworks chipset already use CMD.
YH
________________________________
From: linuxbios-bounces@linuxbios.org [mailto:linuxbios-bounces@linuxbios.org] On Behalf Of bxshi Sent: Tuesday, January 23, 2007 5:08 PM To: Lu, Yinghai Cc: linuxbios@linuxbios.org Subject: Re: [LinuxBIOS] MCP55 LinuxBIOS with USB debug
You may need to use
smbus_send_byte(hub_address, hub_channel);
or
smbus_write_byte(hub_address, hub_channel);
smbus_write_byte may need three parametres, smbus_write_byte(device ,address ,val).
for PCA9545 to enable one channel need four steps ,
1. outb(hub_address, base_io+02)
2. outb(hub_channel, base_io +03)
3. outb(0x04, base_io + 00)
4. test inb(base_io+01)
it is a little different from PCA9556/PCA9557. as I look at the code , use smbus_write_byte may not make pca9545 work .
use smbus_send_byte(device,val) , I get the output:
No memory for this cpu
No memory
so I change below
outb(val, smbus_io_base + SMBHSTCMD);
then everything works fine.
so I think smbus_send_byte(device,val) ,device should be the HUB_ADDRESS , and val is the HUB_CHANNEL. is it right?
bxshi