内容属个人理解



设备树中
compatible = “myvendor,wm5102”
匹配优先级
of_match_table>id_table
of_match_table表中的厂商和设备树中条目compatible(包含供应商字符串) 的厂商“myvendor”不匹配,则会用id_table去匹配设备树条目compatible (不包含供应商字符串)。
添加I2C设备驱动的方法
一、确定I2C总线号的情况
1.1
static struct i2c_board_info h4_i2c_board_info[] __initdata = {
{
I2C_BOARD_INFO("isp1301_omap", 0x2d),
.irq = OMAP_GPIO_IRQ(125),
},
{ /* EEPROM on mainboard */
I2C_BOARD_INFO("24c01", 0x52),
.platform_data = &m24c01,
},
{ /* EEPROM on cpu card */
I2C_BOARD_INFO("24c01", 0x57),
.platform_data = &m24c01,
},
};
static void __init omap_h4_init(void)
{
(...)
i2c_register_board_info(1, h4_i2c_board_info,
ARRAY_SIZE(h4_i2c_board_info));
(...)
}
1.2 通过标题设备树
Example:
i2c1: i2c@400a0000 {
/* ... master properties skipped ... */
clock-frequency = <100000>;
flash@50 {
compatible = "atmel,24c256";
reg = <0x50>;
};
pca9532: gpio@60 {
compatible = "nxp,pca9532";
gpio-controller;
#gpio-cells = <2>;
reg = <0x60>;
};
};
Here, two devices are attached to the bus using a speed of 100kHz. For
additional properties which might be needed to set up the device, please refer
to its devicetree documentation in Documentation/devicetree/bindings/.
1c、通过ACPI
这个地方暂时忽略
二、不确定总线号的情况
static struct i2c_board_info sfe4001_hwmon_info = {
I2C_BOARD_INFO("max6647", 0x4e),
};
int sfe4001_init(struct efx_nic *efx)
{
(...)
efx->board_info.hwmon_client =
i2c_new_device(&efx->i2c_adap, &sfe4001_hwmon_info);
(...)
}
这部分参考:i2c设备驱动示例说明
参考:
1、linux id_table与of_match_table
2、设备树说明文档
添加链接描述
本文探讨Linux驱动中xx_driver结构体的driver.of_match_table和id_table如何与设备树配合工作。当compatible在设备树中为""myvendor,wm5102""时,of_match_table先尝试匹配,若不成功则借助id_table匹配不包含供应商的compatible。内容包括确定I2C总线号情况下的驱动添加方法。"
113683830,7805222,HTML5表单控件:单选、多选与下拉选项解析,"['HTML', '前端开发', 'HTML5', 'CSS3']
96

被折叠的 条评论
为什么被折叠?



