>宋老师,各位朋友大家好: > 由于需要用两个gpio模拟i2c,现在我使用linux自带的i2c-gpio.c,我的注册信息如下: > static struct i2c_gpio_platform_data i2c3_data = { > .sda_pin = GPIO_F7, > .scl_pin = GPIO_F8, > .udelay = 0, > .timeout = 0, > .sda_is_open_drain = 1, > .scl_is_open_drain = 1, > .scl_is_output_only = 0, > >}; > >static struct platform_device i2c3_device = { > .name = "i2c-gpio", > .id = 2, > .dev = { > .platform_data = &i2c3_data, > }, >}; >static struct platform_device *platform_devs_pre[] __initdata = { > &pnx_wavex_gpio_device, > & i2c3_device,//注册 >}; >static struct i2c_board_info i2c_devices[] = { > { > I2C_BOARD_INFO("lis35de", 0x1C), > }, > >}; >int __init pnx67xx_devices_init(void) >{ > pr_debug("%s()\n", __func__); > platform_add_devices(platform_devs_pre, >ARRAY_SIZE(platform_devs_post)); > i2c_register_board_info(1, i2c_devices, ARRAY_SIZE(i2c_devices)); > return 0; >} >在我的lis35de驱动中: >static const struct i2c_device_id lis35de_id[] = { > { "lis35de", 0 }, > { } >}; > >static struct i2c_driver st_lis35de_driver = { > .probe = st_lis35de_probe, > .remove = st_lis35de_remove, > .suspend = st_lis35de_suspend, > .resume = st_lis35de_resume, > .id_table = lis35de_id, > .driver = { > .name = "lis35de", > }, >}; > >static int __devinit st_lis35de_init(void) >{ > printk(KERN_INFO "st_lis35de_init\n"); > return i2c_add_driver(&st_lis35de_driver); >} > >static void __exit st_lis35de_exit(void) >{ > i2c_del_driver(&st_lis35de_driver); >} > >module_init(st_lis35de_init); >module_exit(st_lis35de_exit); >,现在我在我的st_lis35de_probe中我该如何初始化i2c_client,然后使用i2c_transfer或 >i2c_master_send发送数据啊。i2c_transfer或i2c_master_send有什么区别啊?请教宋老师 > >-- >_______________________________________________ >Linux设备驱动开发邮件列表 linux...@googlegroups.com >http://groups.google.gr/group/linuxdriver?hl=zh-CN >退订请使用原订阅邮箱发邮件至:linuxdriver...@googlegroups.com
>退订请使用原订阅邮箱发邮件至:linuxdriver+unsub...@googlegroups.com
--
_______________________________________________
Linux设备驱动开发邮件列表 linux...@googlegroups.com
http://groups.google.gr/group/linuxdriver?hl=zh-CN
退订请使用原订阅邮箱发邮件至:linuxdriver+unsub...@googlegroups.com
"现在我在我的st_lis35de_probe中我该如何初始化i2c_client,然后使用i2c_transfer或
i2c_master_send发送数据啊。i2c_transfer或i2c_master_send有什么区别啊?请教宋老师"这两个的程序在什么地方呀,你不写出来怎么分析呀!!!i2c的协议看了吗?不是很难吧,
>宋老师,各位朋友大家好: > 由于需要用两个gpio模拟i2c,现在我使用linux自带的i2c-gpio.c,我的注册信息如下: > static struct i2c_gpio_platform_data i2c3_data = { > .sda_pin = GPIO_F7, > .scl_pin = GPIO_F8, > .udelay = 0, > .timeout = 0, > .sda_is_open_drain = 1, > .scl_is_open_drain = 1, > .scl_is_output_only = 0, > >}; > >static struct platform_device i2c3_device = { > .name = "i2c-gpio", > .id = 2, > .dev = { > .platform_data = &i2c3_data, > }, >}; >static struct platform_device *platform_devs_pre[] __initdata = { > &pnx_wavex_gpio_device, > & i2c3_device,//注册 >}; >static struct i2c_board_info i2c_devices[] = { > { > I2C_BOARD_INFO("lis35de", 0x1C), > }, > >}; >int __init pnx67xx_devices_init(void) >{ > pr_debug("%s()\n", __func__); > platform_add_devices(platform_devs_pre, >ARRAY_SIZE(platform_devs_post)); > i2c_register_board_info(1, i2c_devices, ARRAY_SIZE(i2c_devices)); > return 0; >} >在我的lis35de驱动中: >static const struct i2c_device_id lis35de_id[] = { > { "lis35de", 0 }, > { } >}; > >static struct i2c_driver st_lis35de_driver = { > .probe = st_lis35de_probe, > .remove = st_lis35de_remove, > .suspend = st_lis35de_suspend, > .resume = st_lis35de_resume, > .id_table = lis35de_id, > .driver = { > .name = "lis35de", > }, >}; > >static int __devinit st_lis35de_init(void) >{ > printk(KERN_INFO "st_lis35de_init\n"); > return i2c_add_driver(&st_lis35de_driver); >} > >static void __exit st_lis35de_exit(void) >{ > i2c_del_driver(&st_lis35de_driver); >} >
> >-- >_______________________________________________ >Linux设备驱动开发邮件列表 linux...@googlegroups.com >http://groups.google.gr/group/linuxdriver?hl=zh-CN >退订请使用原订阅邮箱发邮件至:linuxdriver+unsub...@googlegroups.com
--
_______________________________________________
Linux设备驱动开发邮件列表 linux...@googlegroups.com
http://groups.google.gr/group/linuxdriver?hl=zh-CN
退订请使用原订阅邮箱发邮件至:linuxdriver+unsub...@googlegroups.com