Problems in Command Completion in SMBus

Hi,

I am writing a kernel mode driver for System
Management Bus(SMB) Controller. In my case, the SMBus
has got SEEPROM attached to it as a Host device. I am
able to locate and allocate the resources for the
SMBus controller properly.

The problem starts when i *write* something to the
SEEPROM. There is a register called SMBHSTS (Smb Host
Status Register) whose bit 0 tells us whether the
SMBus controller host is in the process of completing
the command (write). I check this register for this
bit, to know if the SMB is busy completing this
command. And it happens that it always turns out to be
BUSY. I kept some timeout as well as some retries.
But, of no avail. I haven’t tried if the same thing
happens with *read*.

If someone has written a driver for System Management
Bus, I would appreciate if he/she can provide me any
help.

thanks
__amit


Do You Yahoo!?
Talk to your friends online with Yahoo! Messenger.
http://im.yahoo.com

Amit,
I have written several SMBus drivers (Vxd, NT) for Intel chipsets (PIIX4,
ICH) and I don’t think I have ever run into this problem. Things to
consider:

1> Is the controller actually enabled? Check your chipset datasheet for
details.
2> Try a read operation to your EEPROM and see what happens.
3> Have you tried accessing another device on the bus? If so, what were the
results?
4> Try a different EEPROM. Could be your EEPROM is the culprit.
5> What type of read were you invoking (byte/word data write, block write)?

  • rob

Rob Strong
Platform Components Group/Systems Software Engineering
Intel Corporation

Fax - 916.356.3162
Email - xxxxx@intel.com

-----Original Message-----
From: Amit Kaul [mailto:xxxxx@yahoo.com]
Sent: Thursday, February 24, 2000 7:08 AM
To: NT Developers Interest List
Subject: [ntdev] Problems in Command Completion in SMBus

Hi,

I am writing a kernel mode driver for System
Management Bus(SMB) Controller. In my case, the SMBus
has got SEEPROM attached to it as a Host device. I am
able to locate and allocate the resources for the
SMBus controller properly.

The problem starts when i *write* something to the
SEEPROM. There is a register called SMBHSTS (Smb Host
Status Register) whose bit 0 tells us whether the
SMBus controller host is in the process of completing
the command (write). I check this register for this
bit, to know if the SMB is busy completing this
command. And it happens that it always turns out to be
BUSY. I kept some timeout as well as some retries.
But, of no avail. I haven’t tried if the same thing
happens with *read*.

If someone has written a driver for System Management
Bus, I would appreciate if he/she can provide me any
help.

thanks
__amit


Do You Yahoo!?
Talk to your friends online with Yahoo! Messenger.
http://im.yahoo.com


You are currently subscribed to ntdev as: xxxxx@intel.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)