- 论坛徽章:
- 0
|
这个没执行是不是device没有添加?
板子的描述文件里面添加了at24的device了么?
搜了下内核、mini ...
l2y3n2 发表于 2011-02-22 10:08
非常感谢,如你所讲,我加了如下代码可以执行 probe() 了:
- static struct at24_platform_data at24c02 = {
- .byte_len = SZ_1K * 2 / 8,
- .page_size = 8,
- };
- static struct i2c_board_info __initdata my_i2c_board_info[] = {
- {
- I2C_BOARD_INFO("24c02", 0x50),
- .platform_data = &at24c02,
- },
- };
- static void __init uc2440_machine_init(void)
- {
- printk("%s(%d)::%s()\r\n", __FILE__, __LINE__, __FUNCTION__);
- s3c24xx_fb_set_platdata(&uc2440_fb_info);
- s3c_i2c0_set_platdata(NULL);
- platform_add_devices(uc2440_devices, ARRAY_SIZE(uc2440_devices));
- i2c_register_board_info(0, dot_i2c_board_info, ARRAY_SIZE(my_i2c_board_info)); // add here
- uc_machine_init();
- s3c2410_gpio_setpin(S3C2410_GPG9, 0);
- s3c2410_gpio_cfgpin(S3C2410_GPG9, S3C2410_GPIO_OUTPUT);
- s3c24xx_udc_set_platdata(&uc_udc_cfg);
- }
复制代码 但是:
1. at24.c 中的其他几组 write/read 函数又没有被运行
2. i2c-dev.c 中的 i2cdev_write() 函数的调用流程:
i2c_master_send() -> i2c_transfer() -> adap->algo->master_xfer()
到 adap->algo->master_xfer 处又没办法跟踪了,它返回 EREMOTEIO;
3. 另外,如果加了前面所述代码,再 insmod at24.ko 的话,
应用层中 ioctl(I2C_SLAVE, 0x50) 时会提示 EBUSY,原因是 0x50 这个地址的设备已经存在,
我的理解是启用了 I2C 驱动后,at24.c 根本不需要,这个理解对吗?
对 i2c 的整个体系和工作流程还不清楚,哪位大哥指点一下?万分感谢! |
|