10 Replies Latest reply on Aug 30, 2017 11:39 AM by Carlos_A

    How to use the I2C on ATOM Bay trail Board?

    suipingli Green Belt

      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!

        • Re: How to use the I2C on ATOM Bay trail Board?
          Carlos_A Brown Belt

          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.

            • Re: How to use the I2C on ATOM Bay trail Board?
              suipingli Green Belt

              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 <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.

               

              1.bmp

               

              2.bmp

                • Re: How to use the I2C on ATOM Bay trail Board?
                  Carlos_A Brown Belt

                  Hello, suipingli:

                   

                  Thanks for your clarification.

                   

                  The 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 

                   

                  We hope that this information may help you.

                   

                  Best regards,

                  Carlos_A.

                    • Re: How to use the I2C on ATOM Bay trail Board?
                      suipingli Green Belt

                      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 <linux/init.h>
                      #include <linux/i2c.h>
                      #include <linux/i2c/pca953x.h>
                      #include <linux/i2c/at24.h>

                      #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);

                        • Re: How to use the I2C on ATOM Bay trail Board?
                          Carlos_A Brown Belt

                          Hello, suipingli:

                           

                          Thanks for your update.

                           

                          In order to help you, we suggest you address your last request to the Intel(R) Developer Zone: Forums.

                           

                          We hope that this information may help you.

                           

                          Best regards,

                          Carlos_A.

                            • Re: How to use the I2C on ATOM Bay trail Board?
                              suipingli Green Belt

                              hi,Carlos_A.

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

                                   Thanks!

                              • Re: How to use the I2C on ATOM Bay trail Board?
                                suipingli Green Belt

                                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)