imx53 QSB添加模拟I2C

来源:互联网 发布:床垫哪个好 知乎 编辑:程序博客网 时间:2024/06/05 18:08

修改在文件/arch/arm/freescale/mach-mx5/mx53_loco.c


    A,在此文件中添加头文件 #include <linux/i2c-gpio.h>


    B,根据自己的板,选择没有使用的GPIO口:
      #define GPIO_I2C4_SDA_3_28  (2*32+28)
      #define GPIO_I2C4_SCL_3_21  (2*32+21)


   C,在mx53_loco_pads[]中添加这两个GPIO口的定义宏:
     MX53_PAD_EIM_D28__GPIO3_28,
     MX53_PAD_EIM_D21__GPIO3_21,
     
  D,添加如下代码:
    /*GPIO_I2C*/
   static struct platform_device mxc_gpio_i2c_device = 
   { 
    .name = "i2c-gpio", //这里一定是i2c-gpio不能是别的
    .id = 3, //这里id为3 那么说明前面还有其他的i2c设备 从0开始
   };
  
   static struct i2c_gpio_platform_data mxc_gpio_i2c_data = 
   { 
    .sda_pin = GPIO_I2C4_SDA_3_28,
    .scl_pin = GPIO_I2C4_SCL_3_21,
    .udelay = 5,
    .sda_is_open_drain = 0,    //如果没有效把0 设置为1试试
    .scl_is_open_drain = 0,    //同上
    .scl_is_output_only = 0,
   };
  static struct i2c_board_info mxc_i2c3_board_info[] __initdata = {
  //这里就是跟3对应 第4个i2c 设备
   /*{
   .type = "xxx",//设备驱动名 
   .addr = 0x12, //地址
   ...
    },
    */
  
  };   
   
   E,在函数mxc_board_init中添加:和硬I2C一样的注册。
      mxc_register_device(&mxc_gpio_i2c_device, &mxc_gpio_i2c_data);  
      i2c_register_board_info(3, mxc_i2c3_board_info,
      ARRAY_SIZE(mxc_i2c3_board_info));


原文地址

http://blog.csdn.net/hp_2008/article/details/7783363

原创粉丝点击