设备树OF函数操作实验-读取设备节点backlight的整型属性

本文介绍了如何在Linux设备树中,通过OF函数读取imx6ull-14x14-evk.dts文件中backlight设备节点的default-brightness-level整型属性,包括设备节点信息获取和属性读取的代码实现以及驱动的编译和加载过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 简介

本文学习使用设备树操作 OF函数,读取设备节点的整型的属性值。

读取设备树文件 imx6ull-14x14-evk.dts 中一个设备节点的信息。这里读取 backlight设备节点的属性值:读取整型的属性。

注意:这里的整型数据都是 32位的数据。而非 8位的数据!!

二.  读取设备节点backlight的整型属性值

1.  backlight设备节点信息

imx6ull-14x14-evk.dts文件中 backlight设备节点信息如下:

backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm1 0 5000000>;
		brightness-levels = <0 4 8 16 32 64 128 255>;
		default-brightness-level = <6>;
		status = "okay";
	};

这里准备读取 imx6ull-14x14-evk.dts 设备树文件中 default-brightness-level属性的值。

主要使用到两个OF函数:

struct device_node *of_find_node_by_path(const char *path);  //获取设备节点
static inline int of_property_read_u32(const struct device_node *np,
				       const char *propname,
				       u32 *out_value);  //读取 32位整型的属性

2.  代码实现

代码实现如下:

#include <linux/module.h>
#include <linux/of.h>

/*模块入口*/
static int __init dtsof_init(void)
{
    int ret = 0;
    struct device_node * dev_node = NULL;
    u32 value = 0;
    //1. 读取设备节点
    dev_node = of_find_node_by_path("/backlight");
	if(NULL == dev_node)
    {
        ret = -EINVAL;
        goto find_dev_node_failed;
    }

    //2. 读取整形类型的属性值
    ret = of_property_read_u32(dev_node, "default-brightness-level", &value);
	if(ret != 0)
    {
        ret = -EINVAL;
        goto read_property_failed;
    }			       
	printk("default-brightness-level: %d\r\n", value);			       

read_property_failed:
find_dev_node_failed:
    return ret;
}

/*模块出口*/
static void __exit dtsof_exit(void)
{

}

/*模块入口与出口*/
module_init(dtsof_init); 
module_exit(dtsof_exit);

/*模块 Licence*/
MODULE_LICENSE("GPL");
/*模块作者*/
MODULE_AUTHOR("LingXueWu");

三.  编译驱动与加载

  1.  编译程序

ubuntu 终端进入 4_dtsof工程根目录下编译工程:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/4_dtsof$ make

编译后,生成驱动文件 dtsof.ko。

将 dtsof.ko拷贝到开发板系统下 /lib/modules/4.1.15/目录下:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/4_dtsof$ sudo cp dtsof.ko /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f

2.  加载驱动

这里不需要先运行 depmod命令。因为前面已经运行过一次。

开发板上电进入系统 /lib/modules/4.1.15/目录下,加载 dtsof.ko 驱动模块:

/ # cd /lib/modules/4.1.15/
/lib/modules/4.1.15 # modprobe dtsof.ko 
default-brightness-level: 6

 测试结束后,卸载驱动模块,输入如下命令:

/lib/modules/4.1.15 # rmmod dtsof.ko 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值