Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Home NTDEV

Before Posting...

Please check out the Community Guidelines in the Announcements and Administration Category.

More Info on Driver Writing and Debugging


The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.


Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/


Problems in Command Completion in SMBus

amitamit Member Posts: 1
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

Comments

  • OSR_Community_UserOSR_Community_User Member Posts: 110,217
    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 - [email protected]
    > -------------------------------------------
    >
    >


    -----Original Message-----
    From: Amit Kaul [mailto:[email protected]]
    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: [email protected]
    To unsubscribe send a blank email to $subst('Email.Unsub')
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

Upcoming OSR Seminars
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!
Kernel Debugging 30 January 2023 Live, Online
Developing Minifilters 20 March 2023 Live, Online
Internals & Software Drivers 17 April 2023 Live, Online
Writing WDF Drivers 22 May 2023 Live, Online