d->name) == 0) return id; id++; } return null; } 可以看出是利用i2c_client的名称和id_table中的名称做匹配的。本驱动中的id_table为 static const struct i2c_device_id pca953x_id[] = { { "pca9534", 8, }, { "pca9535", 16, }, { "pca9536", 4, }, { "pca9537", 4, }, { "pca9538", 8, }, { "pca9539", 16, }, { "pca9554", 8, }, { "pca9555", 16, }, { "pca9557", 8, }, { "max7310", 8, }, { } }; 看到现在我们应该会有这样的疑问,在adapter模式中,i2c_client是我们自己构造出来的,而现在的i2c_client是从哪来的呢?看看下面的解释 ● 注册i2c
4位的I2C GPIO具有中断和复位,操作供电电压范围为2.3~5.5V;5V容错I/O;极性反转寄存器;放射性低中断输出;低待机电流;噪声滤波器在SCL/SDA输入;上电无干扰;内部上电复位;4个输入/输出引脚,其中默认为4个输入;0~400kHz时钟频率;ESD保护超过2000V HBM每JESD22-A114,200V MM每JESD22-A115,和1000V CDM每JESD22-C101