Processors
Intel® Processors, Tools, and Utilities
14506 Discussions

How to use Intel Atom E3800 Windows IO driver for I2C?

SCro
Beginner
2,009 Views

Hi,

after trying to figure out how to communicate with the I2C driver using the Win API for several days, I hope you can help me,.

The problem is that no devices can be found using the global unique identifier I2C_LPSS_INTERFACE_GUID defined in the I2Cpublic.h header file which was included in the driver package and that should be used within the user-mode Win API functions according to the Software Developer's Manual.

To get the device name and create a handle for that device I used the following procedure:

1. Get the device interface class corresponding to that GUID:

hDvcInfoSet = SetupDiGetClassDevs(&I2C_LPSS_INTERFACE_GUID, NULL, NULL, DIGCF_ALLCLASSES)

2. Loop through all the devices information elements, create an interface for each element and get details about each interface:

while (SetupDiEnumDeviceInfo(hDvcInfoSet, i, &devInfo)) {

if (devInfo.ClassGuid == I2C_LPSS_INTERFACE_GUID) {

SetupDiCreateDeviceInterface(hDvcInfoSet, &devInfo, &I2C_LPSS_INTERFACE_GUID, NULL, 0, &dvcInterfaceData)

SetupDiGetDeviceInterfaceDetail(hDvcInfoSet, &dvcInterfaceData, requiredSize, NULL, NULL)

i++;

}

}

In the details of an interface the device path can be found which can be used to create a handle.

The problem was, that there were no device information elements with that GUID, so I took a look into setup information file used to install the I2C controller driver (iaioi2c.inf).

There is also a ClassGuid defined, but it does not correspond to the one in the header file.

Therefore I tried the other GUID and then I could find several device information elements that use this identifier and created an interface for each to get the device paths.

Those paths where either part of root, acpi or pci which already confuses since I thought I was only filtering for I2C devices which should all be part of pci.

Anyway even the devices being part of pci had other hardware Id's than specified in the iaioi2c.inf file and the datasheet of the Intel Atom E3800 family.

There, it says (on page 81 - PCI configuration space) the seven I2C ports have the device IDs 0F41h-0F47h.

Hence, the I2C ports should have HW IDs like that (which are also specified in the iaioi2c.inf file):

PCI\VEN_8086&DEV_0F41

But the output when printing the device path of an device interface I got was something like this:

PCI\VEN_8086&DEV_0F4C&SUBSYS_0F4C8086&REV_11# 3&11583659&0&e2# {}

So my questions are:

1. Why can't I find devices when I follow the software developer's manual procedure?

2. Why do I get other HW IDs of the I2C ports if I use the class GUID defined in the iaioi2c.inf file?

3. Is there a better manual/guide how to use the Intel Atom E3800 I2C controller in Windows?

The driver package including the header files and the software developer's manual can be found here:

https://downloadcenter.intel.com/download/24548 Download Intel® Embedded Drivers for Windows* 7 (32-bit and 64-bit)

Thank you! (Only for reading all this stuff)

Sam

0 Kudos
4 Replies
idata
Employee
1,024 Views

Hello Samcro5C,

I would like to let you know that the right support regarding this Intel® product and your inquiry is provided by the Resource & Design Center, over here you will be able to find in-depth technical documentation, software, tools, and support for hardware developers, please visit the main site here: https://www-ssl.intel.com/content/www/us/en/design/resource-design-center.html Resource & Design Center for Development with Intel. Find the embedded community here: https://embedded.communities.intel.com/community/en Forum: Embedded Community |Embedded Community, there is one more support channel that could help in this case which is the Intel® Developer Zone: https://software.intel.com/en-us/forum Forums

Hope it helps.

Regards,

Amy C.

0 Kudos
SCro
Beginner
1,024 Views

Hi Amy,

Looking at these two threads:

https://software.intel.com/en-us/forums/intel-system-studio/topic/606653 Atom E3800 embedded driver missing library file?

https://embedded.communities.intel.com/thread/12067 Atom E3800 embedded driver missing library file? |Embedded Community

It seems that non of your forums is the right one regarding driver issues.

If there exist some kind of documentation or support, I would appreciate a more specific link regarding my problem.

Regards,

Sam

0 Kudos
idata
Employee
1,024 Views

Thanks Sam.

Please allow me to review this matter and see what I can find from my end. I will update the thread as soon as possible.

Regards,

Amy C.

0 Kudos
Ronny_G_Intel
Moderator
1,024 Views

Hello Samcro5C,

I would recommend to post your request directly at https://embedded.communities.intel.com/community/en Forum: Embedded Community |Embedded Community as mentioned by Amy.

We dont have any other support resource available for this question.

Regards,

Ronny G

0 Kudos
Reply