我正在为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?
答案 0 :(得分:0)
在输出中我看到你正在发送IOCTL 0x03,这是什么?这是一个自定义命令吗?写入/读取的方法之一是I2C_RDWR ioctl命令。您需要在应用程序中构建i2c_msgs并使用ioctl发出I2C_RDWR命令。 I2C_RDWR仅由i2c-dev驱动程序理解,它将调用适配器传输功能。
没有IOCTL命令传递给适配器驱动程序,如果您使用的是i2c-dev驱动程序接口,则无法使用IOCTL与适配器驱动程序通信。
答案 1 :(得分:0)
我找到了通过自己的IOCTL的方法: i2c_algorithm结构中的.algo_control函数指针将处理特殊的ioctl。
i2cdev_ioctl - > (默认) - > i2c_control - > (默认) - > (adap-> algo-> algo_control)