linux背光命令,linux背光驱动解析

linux背光命令,linux背光驱动解析
⼀、内核驱动相应的代码:kernel/drivers/video/backlight/backlight.c
精密触发器1、驱动初始化基本流程及关键信息
postcore_initcall(backlight_class_init);//初始化backlight类
module_exit(backlight_class_exit);
》》》》初始化
static int __init backlight_class_init(void)
{
backlight_class = class_create(THIS_MODULE, “backlight”);//创建backlight类
仿形车床
if (IS_ERR(backlight_class)) {
printk(KERN_WARNING “Unable to create backlight class; errno = %ld\n”,
PTR_ERR(backlight_class));
return PTR_ERR(backlight_class);
}
backlight_class->dev_attrs = bl_device_attributes;//backlight设备属性
backlight_class->suspend = backlight_suspend;
backlight_class->resume = backlight_resume;
return 0;
}
》》》》设备属性
static struct device_attribute bl_device_attributes[] = {
__ATTR(bl_power, 0644, backlight_show_power, backlight_store_power),
__ATTR(brightness, 0644, backlight_show_brightness,
backlight_store_brightness),
__ATTR(actual_brightness, 0444, backlight_show_actual_brightness,
NULL),
__ATTR(max_brightness, 0444, backlight_show_max_brightness, NULL),
__ATTR(type, 0444, backlight_show_type, NULL),
__ATTR_NULL,
};
内核初始化时将在/sys/class/backlight/下建⽴bl_power、brightness、actual_brightness、max_brightness、type等属性⽂件。命令⾏:echo 1 > /sys/class/backlight/bl_power //关闭背光
cat 时内核会调⽤xxx_show_xxx()函数,例如backlight_show_power()
echo 时内核会调⽤xxx_store_xxx()函数,例如backlight_store_power()
湿法炼锌内核调⽤这些xxx_store_xxx()函数时都会调⽤backlight_update_status(bd);
》》》》
//这个函数在/kernel/include/linux/backlight.h
static inline void backlight_update_status(struct backlight_device *bd)
{
HOST 格式mutex_lock(&bd->update_lock);
if (bd->ops && bd->ops->update_status)覆膜胶
bd->ops->update_status(bd);
mutex_unlock(&bd->update_lock);
}
》》》》
static const struct backlight_ops act_pwm_bl_ops = {
.update_status = act_pwm_bl_update_status,//调节背光的函数
.get_brightness = act_pwm_bl_get_brightness,//获取当前背光的函数
};
⼆、
在内核源代码中,platform 设备的初始化(注册)⽤arch_initcall()调⽤,它的initcall 的level为3;
⽽驱动的注册⽤module_init()调⽤,即device_initcall(),它的initcall 的level为6。
野外焊接钢轨
kernel 初始化时(kernel_init@init/main.c),按照内核链接⽂件中(arm系统:kernel/arch/arm/vmlinux.lds)的__init call_start段的序列依次执⾏,
这样level⼩的初始化函数先于level⼤的初始化函数被调⽤。
所以platform设备先被注册,驱动加载时会调⽤驱动程序中的probe(),扫描系统中已注册的设备,到匹配设备后将驱动和设备绑定。

本文发布于:2024-09-20 14:20:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/99351.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:驱动   设备   背光   注册   函数   内核   钢轨
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议