"Linux of_match_table" 是 Linux 内核中的一个重要数据结构,用于设备的匹配和初始化。在 Linux 的驱动开发中,设备的匹配是一个关键的步骤,而 of_match_table 的作用就是为了帮助驱动程序找到正确的设备节点,进而初始化设备。在这篇文章中,我们将对 of_match_table 进行详细介绍,并探讨它在 Linux
对于能够支持设备树的platform_driver,需要定义其of_match_table成员。 of_match_table为struct of_device_id数组。该数组必须以空项结尾。而struct of_device_id原型如下 struct of_device_id{char name[32];char type[32];char compatible[128];const void*data;}; 对于某个可以转换为platform_device的设备树节点。
of_match_table = rockchip_dwc3_match, .pm = DEV_PM_OPS, }, }; module_platform_driver(dwc3_rockchip_driver); dwc3_rockchip_probe函数主要的工作如下: (1)获取时钟和使能时钟 (2)将子节点usbdrd_dwc3_0转换为platform_device,并保存子节点对应设备驱动程序的私有数据结构dwc3结构体指针,若获取不...
第11行,设置platform_driver中的of_match_table匹配表为上面创建的leds_of_match,至此就设置好了platform驱动的匹配表了。 最后就是编写驱动程序,基于设备树的platform驱动和上一章无设备树的platform驱动基本一样,都是当驱动和设备匹配成功以后先根据设备树里的pinctrl属性设置PIN的电气特性再去执行probe函数。需要在probe...
.of_match_table = ulpi_phy_table, }, }; module_platform_driver(ulpi_phy_driver); ulpi_phy_probe 加载这个驱动(ulpi_phy_driver)以后,因为设备树中有上述的platform_device,所以会执行对应的probe。 staticintulpi_phy_probe(structplatform_device *pdev){structdevice_node*np=pdev->dev.of_node;struct...
驱动结构体,如果使用设备树的话,需要设置device_driver的of_match_table成员变量,也就是驱动的兼容(compatible)属性。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 const struct i2c_device_id *id_table id_table 是传统的、未使用设备树的设备匹配 ID表 3. I2C设备 I2C设备结构体i2c_client 结构体定义...
device_driver结构体(表示设备驱动)中有个名为of_match_table的成员变量,此成员变量保存着驱动的compatible匹配表,设备树中的每个设备节点的compatible属性会和of_match_table表中的所有成员比较,查看是否有相同的条目,如果有的话就表示设备和此驱动匹配,设备和驱动匹配成功以后probe函数就会执行。 第15-16行,第二种...
⚫ 比较:platform_device.dev.of_node和platform_driver.driver.of_match_table。 由设备树节点转换得来的platform_device中,含有一个结构体:of_node。 它的类型如下: 如果一个platform_driver支持设备树 , 它的platform_driver.driver.of_match_table是一个数组 ...
第642 行,wm8960采用了platform_driver驱动模式,关于platform_driver驱动后面会讲解。此行设置.of_match_table为imx_wm8960_dt_ids,也就是设置这个platform_driver所使用的OF匹配表。 2、model 属性 model属性值也是一个字符串,一般model属性描述设备模块信息,比如名字什么的,比如: ...
.of_match_table = of_match_ptr(spi_gpio_dt_ids), }, .probe = spi_gpio_probe, .remove = spi_gpio_remove, }; module_platform_driver(spi_gpio_driver); 其次在OpenWrt的配置界面中选择Kernel modules–> SPI Support –>kmod-spi-gpio,选中后会自动关联 kmod-spi-bitbang模块。