최신 I2C 바인딩 모델을 사용하기 위해 다른 커널용으로 작성한 일부 I2C 장치 드라이버를 포팅하려고 합니다. 커널 문서에는 이를 수행하는 단계가 자세히 설명되어 있습니다.http://www.mjmwired.net/kernel/Documentation/i2c/upgrading-clients
제가 이해하지 못하는 것은 이 새로운 모델을 사용할 때 장치의 I2C 주소를 어떻게 지정합니까? 이전에는 다음과 같이 수행되었습니다.
static unsigned short normal_i2c[] = { 0x67, I2C_CLIENT_END };
I2C_CLIENT_INSMOD;
내 버스/장치가 감지를 지원하지 않는 것 같습니다.
답변1
결국 모든 I2C 장치를 플랫폼 장치로 등록하게 되었습니다. Board 파일의 항목은 다음과 같습니다.
static struct i2c_board_info __initdata my_i2c_device = {
I2C_BOARD_INFO("my_i2c_device", 0x60)
};
(여기서 I2C 주소 = 0x60)
if (i2c_register_board_info(I2C_MY_BUS_ID, &my_i2c_device, 1) < 0) {
printk(KERN_ERR "i2c_init: cannot register my I2C device\n");
}
바라보다http://www.mjmwired.net/kernel/Documentation/driver-model/platform.txt