2011-08-18 2 views
0

SOC 용 I2C 어댑터 드라이버를 쓰고 있습니다. 이 어댑터는 현재 시스템에 있으며 RTC 드라이버는 .master_xfer를 통해 작동합니다.I2C-dev.c에서 IOCTL을 어댑터 드라이버 (i2c-rt3352.c)로 전달하는 방법

/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

출력에서 ​​IOCTL 0x03을 보내고있는 것을 볼 수 있습니다. 무엇입니까? 이건 커스텀 커맨드인가요?. 쓰기/읽기 방법 중 하나는 I2C_RDWR ioctl 명령입니다. 응용 프로그램에서 i2c_msgs를 빌드하고 ioctl을 사용하여 I2C_RDWR 명령을 실행해야합니다. I2C_RDWR은 i2c-dev 드라이버에서만 인식되며 어댑터 전달 함수를 호출합니다.

IOCTL 명령은 어댑터 드라이버로 전달되지 않으므로 i2c-dev 드라이버 인터페이스를 사용하는 경우 IOCTL을 사용하여 어댑터 드라이버와 통신 할 수 없습니다.

+0

예, IOCTL은 0x03 내 자신의 명령입니다. 허용 된 IOCTL 목록이 있습니까? –

0

내 자신의 IOCTL을 전달하는 방법을 찾았습니다. .algo_control 함수 포인터는 i2c_algorithm 구조체에서 특수 ioctl을 처리합니다.

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에 맞게 사용자 정의되었습니다. 업데이트하고 싶지만 많은 작업이 필요합니다. –

관련 문제