2011-08-18 58 views
0

我正在为SOC编写I2C适配器驱动程序。此适配器现在存在于系统中,并且RTC驱动程序通过.master_xfer与它一起工作。如何将IOCTL从i2c-dev.c转发到适配器驱动程序(i2c-rt3352.c)

我想通过/ dev/i2c从应用程序发送IOCTL's。我已经加载了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

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

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

+0

是,IOCTL×03是我自己的命令。有没有允许的IOCTL的列表? –

0

我发现了通过我自己的IOCTL的方法: .algo_control函数指针在i2c_algorithm结构中将处理特殊的ioctl's。

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

+0

你正在谈论哪个内核。我在linux-3.0中看不到i2cdev_ioctl - >(默认) - > i2c_control - >(默认) - >(adap-> algo-> algo_control)接口。我没有看到这个接口,因为linux-2.6.24 – rulingminds

+0

我使用旧的:2.6.21。它是为我的platfom定制的。我想更新它,但这将是很多工作。 –

相关问题