有设备树的plaform驱动注册实验:platform_driver驱动注册思路说明

一.  简介

前面一个实验,我们学习了传统的、未采用设备树的 platform 设备和驱动编写方法。
最新的 Linux 内核已经支持了设备树,因此,在设备树下如何编写 platform 驱动就显得尤为重要,接下来几篇文章,我们就来学习一下如何实现在设备树下 platform 驱动。

二. 有设备树的plaform驱动实验:platform_driver驱动注册思路说明

1. 在设备树中创建 Led设备节点

在前面的 6_gpioled实验中,Led设备节点信息已经创建。

因为这里所使用的开发板是 Nand-Flash版 APHLA开发板,所对应的设备树源文件为 imx6ull-alientek-nand.dts ,(imx6ull-alientek-nand.dts 设备树文件调用了 imx6ull-14x14-evk.dts设备树文件)。

led设备节点信息添加在了imx6ull-alientek-nand.dts文件中, 在设备树根目录下:

/* WeiWuXian/2024/01/25*/
    gpioled{
        compatible = "alientek, gpioled";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_gpioled>;
        led-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
        status = "okay";
    };

这里设备树文件不用重新编译,更新到开发板的操作。因为在 gpio_led实验时已经是这版更改的设备树文件了(imx6ull_alientek_nand.dtb)。

可以在开发板系统目录  /proc/device-tree/ 下查看:

可以看出,存在 gpioled设备节点。

继续可以看出 gpioled设备节点的 compatile属性值,这个值很重要,决定了有设备树时platform设备与驱动匹配条件:

2.  platform_driver驱动注册框架实现

(1) 实现思路

有设备树的时候,设备是由设备(.dts设备树源文件)描述的,因此,不需要向总线注册设备,而是直接修改设备树。所以, 这里只需要做两个工作:

首先,在设备树文件中创建 Led设备节点(platform_device注册设备的工作)

其次,platform_driver驱动注册到 总线的工作。

最后,添加 Led字符设备驱动代码及 Led初始化工作代码(有设备树情况下的Led的IO初始化工作),Led灯 file_operation函数集。

(2) 决定设备与驱动匹配

前面 plaform_driver驱动的文章已经详细的讲解过了,在使用设备树时, platform 驱动会通过 of_match_table 来保存兼容性值,plaform_driver结构体中成员 .driver的 of_match_table 结构中的  compatible与设备树节点信息中的 compatible进行比较,如果相等,说明驱动与设备匹配了。

注意,这里也可以把无设备树时候,驱动与设备的匹配条件写上,以防止无设备树时的支持。

无设备树时,设备与驱动匹配的条件是: platform_driver驱动结构体的成员 .driver的 name 与 platform_device设备结构体的 name 保持一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值