0

我正在为 SOC 编写 I2C 适配器驱动程序。该适配器现在存在于系统中,RTC 驱动程序通过 .master_xfer 使用它。

我想通过 /dev/i2c 从应用程序发送 IOCTL。我已经加载了 i2c_dev 和所有模块。发送 IOCTL 后,我得到以下信息:

#i2ccmd read 0
i2cdev_open[382]
i2c_dev_get_by_minor[54]
i2c_get_adapter[896]
i2cdev_ioctl[186]
ioctl, cmd=0x03, arg=0x00
i2c_control[731]
i2cdev_release[420]
i2c_put_adapter[910]

i2cdev_ioctl 方法不会将 I2C_RDWR IOCT'L 发送到我的适配器驱动程序。如何将这些 IOCTL 转发到 i2c-rt3352.c ?

4

2 回答 2

0

我找到了传递我自己的 IOCTL 的方法: i2c_algorithm 结构中的 .algo_control 函数指针将处理特殊的 ioctl。

i2cdev_ioctl -> (默认) -> i2c_control -> (默认) -> (adap->algo->algo_control)

于 2011-08-23T06:58:24.497 回答
0

在输出中,我看到您正在发送 IOCTL 0x03,这是什么?这是自定义命令吗?写入/读取的方法之一是 I2C_RDWR ioctl 命令。您需要在应用程序中构建 i2c_msgs 并使用 ioctl 发出 I2C_RDWR 命令。I2C_RDWR 只有 i2c-dev 驱动程序才能理解,它会调用适配器传输函数。

没有 IOCTL 命令传递给适配器驱动程序,如果您使用 i2c-dev 驱动程序接口,则无法使用 IOCTL 与适配器驱动程序通信。

于 2011-08-18T11:35:35.907 回答