platform_device_register 和platform_driver_register;有些驱动里没有platform_device_register

介绍

platform_device_register和platform_driver_register是Linux内核中用于注册平台设备和平台驱动程序的函数。
platform_device_register函数用于注册平台设备。它的原型如下:

int platform_device_register(struct platform_device *pdev);

pdev是一个指向platform_device结构体的指针,表示要注册的平台设备。调用该函数将向内核注册指定的平台设备,并将其添加到平台设备列表中,以便与驱动程序进行匹配和加载。

platform_driver_register函数用于注册平台驱动程序。它的原型如下:

int platform_driver_register(struct platform_driver *pdrv);

pdrv是一个指向platform_driver结构体的指针,表示要注册的平台驱动程序。调用该函数将向内核注册指定的平台驱动程序,并将其添加到平台驱动程序列表中,以便与平台设备进行匹配和加载。

platform_driver结构体中包含了驱动程序的回调函数,例如probe用于设备探测和初始化,remove用于设备的卸载,以及其他可选的回调函数。

这两个函数通常在驱动程序的初始化代码中使用。注册平台设备和平台驱动程序后,当平台设备被探测到时,内核会自动调用与之匹配的驱动程序的相关回调函数进行设备的初始化和配置。

需要注意的是,平台设备和平台驱动程序的匹配通常是通过设备树中的匹配信息完成的,例如compatible属性。在设备树中正确配置平台设备和平台驱动程序的匹配信息非常重要,以确保正确加载和使用相应的驱动程序。

为什么很多驱动里没有platform_device_register

在Linux内核中,不是所有的驱动程序都需要显式调用platform_device_register函数来注册平台设备。这是因为设备驱动程序可以通过其他方式来与平台设备进行匹配和加载,而无需显式地注册设备。

以下是一些常见的情况:

使用设备树自动匹配:在设备树中正确配置设备节点的compatible属性,内核会根据设备树信息自动匹配平台设备和平台驱动程序,并在适当的时候自动加载驱动程序。这种情况下,驱动程序不需要显式调用platform_device_register函数。

静态声明设备:有些平台驱动程序可以通过静态声明设备来与平台设备进行匹配。通过在代码中定义一个静态的platform_device结构体,并使用module_platform_driver宏将平台驱动程序与该设备绑定,内核会自动在驱动程序加载时匹配该设备并进行初始化。这种情况下,驱动程序也不需要显式调用platform_device_register函数。

其他匹配方式:有些驱动程序可能使用其他的匹配方式来与平台设备进行匹配,例如通过总线或其他系统提供的机制进行匹配。在这种情况下,驱动程序也不需要调用platform_device_register函数。

需要注意的是,以上只是一些常见的情况,并不是绝对的规则。根据具体的驱动程序和硬件平台,可能会有不同的加载和匹配机制。因此,在编写驱动程序时,需要仔细查阅相关文档和参考代码,了解驱动程序与设备的匹配和加载方式,以便正确地使用相应的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RyanLee90

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值