Embedded Intel Atom® Processors
Intel Atom® Hardware, Software, Firmware, Graphics
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!
968 Discussions

How to use the I2C on ATOM Bay trail Board?

PSui1
Novice
3,810 Views

My board used E3845 and I used I2C0 to link one pca9534 to be used as an I2c to GPIO and one AT24HC04B to be used to save something important. The other I2Cs are not linked any devices.

I download the linux-stable kernel as the document tizen-ivi-m2-kernel-ltsi-linux-support-package-atom-e3800-gsg.pdf described. Made and updated the linux kernel.

[root@localhost /]# uname -a

Linux localhost.localdomain 3.10.28-03142014-ltsi+ # 2 SMP Fri Aug 4 16:44:39 CST 2017 x86_64 x86_64 x86_64 GNU/Linux

[root@localhost /]# i2cdetect -l

i2c-0 i2c i915 gmbus ssc I2C adapter

i2c-1 i2c i915 gmbus vga I2C adapter

i2c-2 i2c i915 gmbus panel I2C adapter

i2c-3 i2c i915 gmbus dpc I2C adapter

i2c-4 i2c i915 gmbus dpb I2C adapter

i2c-5 i2c i915 gmbus dpd I2C adapter

i2c-6 i2c DPDDC-B I2C adapter

[root@localhost /]# i2cdetect -y -r 0

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

[root@localhost /]# i2cdetect -y -r 1

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

[root@localhost /]# i2cdetect -y -r 2

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

[root@localhost /]# i2cdetect -y -r 3

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f

10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f

20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f

30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f

40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f

50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f

60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f

70: 70 71 72 73 74 75 76 77

[root@localhost /]# i2cdetect -y -r 4

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- 37 -- -- 3a -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- 4a 4b -- -- -- --

50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

[root@localhost /]# i2cdetect -y -r 5

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

[root@localhost /]# i2cdetect -y -r 6

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- --

-- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

[root@localhost /]#

Can anybody tell me how to use Baytrail's I2c? Please give me some advices or some source code for my reference.

Thank you!

0 Kudos
10 Replies
CarlosAM_INTEL
Moderator
588 Views

Hello, suipingli:

Thank you for contacting Intel Embedded Community.

In order to better understand your consultation, we want to address the following questions:

Could you please tell us if the affected project is a third party one or it has been developed by you? In case that it is a third party design, please give us all the information related to it.

Could you please inform us the Operating System (OS) related to this situation?

Could you please let us know where do you download the driver related to this condition?

Please let us know all the information that should answer our questions.

Waiting for your update.

Best regards,

Carlos_A.

PSui1
Novice
588 Views

Hi, Carlos A,

The first , this project is developed by ourselves.

The second and third, the OS is Linux, the version is Linux localhost.localdomain 3.10.28-03142014-ltsi+ # 2 SMP Fri Aug 4 16:44:39 CST 2017 x86_64 x86_64 x86_64 GNU/Linux. I download the linux-stable kernel as the document <<strong>tizen-ivi-m2-kernel-ltsi-linux-support-package-atom-e3800-gsg.pdf > described and updated the linux kernel by myself.

For the project used as an embedded plan, I deleted the i915 driver,then I can not find anything through i2cdetect tool. I found that x86 baytrail board do not use pure i2c, it uses i2c through gpio.

Can you tell me how to use pure i2c?

Thanks.

CarlosAM_INTEL
Moderator
588 Views

Hello, suipingli:

Thanks for your clarification.

The https://cdrd.intel.com/v1/dl/getContent/560112 Intel(R) Atom(TM) Processor E38XX I2C Module Software Driver Design Specification document # 560112 has the information that may help you.

This document is classified as Intel confidential, which requires a CDNA between your company and Intel as well as a Privileged Resource & Design Center (RDC) account. It can be requested by filling out the form stated at the following website:

https://www-ssl.intel.com/content/www/us/en/forms/design/registration-privileged.html https://www-ssl.intel.com/content/www/us/en/forms/design/registration-privileged.html

We hope that this information may help you.

Best regards,

Carlos_A.

PSui1
Novice
588 Views

hi, Carlos A,

I referenced the document which you toled me. And I writed the byt-i2c.c driver, but it still not worked right.

I'll past my code below, please tell me what matter about it, thanks.

# include

 

# include

 

# include

 

# include

# define SLAVE_ADDRESS 0xff

 

# define BUS_NUMBER 0

static const struct i2c_board_info i2c_bus_info[] = {

 

{

 

I2C_BOARD_INFO("dwecore0", 0xff)},

 

};

static struct at24_platform_data board_eeprom = {

 

.byte_len = 4096,

 

.page_size = 32,

 

.flags = AT24_FLAG_ADDR16,

 

};

static struct __init i2c_board_info byt_i2c0_board_info[] = {

 

{

 

I2C_BOARD_INFO("pca953x", 0x24),

 

},

 

{

 

I2C_BOARD_INFO("at24", 0x50), //AT24HC04B

 

.platform_data = &board_eeprom,

 

},

 

};

static int __init byt_i2c_board_setup(void){

 

i2c_register_board_info(BUS_NUMBER, byt_i2c0_board_info, ARRAY_SIZE(byt_i2c0_board_info));

return 0;

 

}

arch_initcall(byt_i2c_board_setup);

CarlosAM_INTEL
Moderator
588 Views

Hello, suipingli:

Thanks for your update.

In order to help you, we suggest you address your last request to the https://software.intel.com/en-us/forum Intel(R) Developer Zone: Forums.

We hope that this information may help you.

Best regards,

Carlos_A.

PSui1
Novice
588 Views

hi, Carlos_A.

Can you tell me where and how to set the Baytrail Board's I2c clock?

Thanks!

PSui1
Novice
588 Views

hi Carlos A,

Another question about this. When I input lspci command, I got the message like follows. I can not get the information of SIO( BUS:0, Device:24, Fun:0~7, DeviceID: 0F40~0F47) from PCI. I wondered whether this is right or not?

[root@localhost ~]# lspci

00:00.0 Host bridge: Intel Corporation Atom Processor Z36xxx/Z37xxx Series SoC Transaction Register (rev 11)

00:02.0 VGA compatible controller: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Graphics & Display (rev 11)

00:13.0 SATA controller: Intel Corporation Atom Processor E3800 Series SATA AHCI Controller (rev 11)

00:1a.0 Encryption controller: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Trusted Execution Engine (rev 11)

00:1b.0 Audio device: Intel Corporation Atom Processor Z36xxx/Z37xxx Series High Definition Audio Controller (rev 11)

00:1c.0 PCI bridge: Intel Corporation Atom Processor E3800 Series PCI Express Root Port 1 (rev 11)

00:1c.1 PCI bridge: Intel Corporation Atom Processor E3800 Series PCI Express Root Port 2 (rev 11)

00:1c.2 PCI bridge: Intel Corporation Atom Processor E3800 Series PCI Express Root Port 3 (rev 11)

00:1c.3 PCI bridge: Intel Corporation Atom Processor E3800 Series PCI Express Root Port 4 (rev 11)

00:1d.0 USB controller: Intel Corporation Atom Processor Z36xxx/Z37xxx Series USB EHCI (rev 11)

00:1f.0 ISA bridge: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Power Control Unit (rev 11)

00:1f.3 SMBus: Intel Corporation Atom Processor E3800 Series SMBus Controller (rev 11)

01:00.0 Serial controller: Exar Corp. Device 0358 (rev 03)

02:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

03:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

04:00.0 PCI bridge: Pericom Semiconductor Device 2608

05:01.0 PCI bridge: Pericom Semiconductor Device 2608

05:02.0 PCI bridge: Pericom Semiconductor Device 2608

05:03.0 PCI bridge: Pericom Semiconductor Device 2608

05:04.0 PCI bridge: Pericom Semiconductor Device 2608

05:05.0 PCI bridge: Pericom Semiconductor Device 2608

06:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

07:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

08:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

09:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

CarlosAM_INTEL
Moderator
588 Views

Hello, suipingli:

Thanks for your update.

In order to set the I2C clocks, please review with the assistance of your BIOS developer the information stated in sections from 38.4.6 to 38.4.12, on pages 259 and 260 of the Intel(R) Atom(TM) processor E3800-M/D SoC: BIOS Writer's Guide [Volume 2 of 2] document # 514148. This document can be found at the following website if you follow the suggested procedure stated in our communication of the past August 22nd, 2017:

https://cdrd.intel.com/v1/dl/getContent/514148?wapkw=514148 https://cdrd.intel.com/v1/dl/getContent/514148

On the other hand, we suggest you review as a reference the information stated at the following website to answer your last communication:

https://github.com/01org/edison-linux/blob/master/Documentation/i2c/busses/i2c-i801 https://github.com/01org/edison-linux/blob/master/Documentation/i2c/busses/i2c-i801

In case that you have questions about the previously recommended website, they should be addressed as a reference as well to the https://github.com/01org/edison-linux/issues Issues · 01org/edison-linux · GitHub site.

We hope that this information may help you.

Best regards,

Carlos_A.

PSui1
Novice
588 Views

hi, Carlos A

I want to know if there is new linux-kernel version for atom baytrail board? If there it is, please tell me how to get it.

Thanks.

CarlosAM_INTEL
Moderator
588 Views
Reply