1、设备树配置
确定三色灯是硬件三色灯还是软件三色灯,查看硬件原理图,根据硬件原理图的设计判断三色灯的挂在,以及确定三色灯是使用什么控制,比如:i2c
2、添加三色灯的驱动,一般目标驱动所放位置kernel/msm-4.14/drivers/leds,不同平台可能不一样,驱动文件需要FAE提供,设备树所配置的compatible需要和驱动文件里面的相匹配
3、把驱动文件加入到编译选项中,在高通平台中是.mk文件或者是Makefile文件,在编译选项中驱动文件所对应的宏加到对应项目的*_perf_defconfig和*_defconfig文件当中,这两个文件一般在kernel/msm-4.14/arch/arm64/configs文件夹下面
4、确定probe成功,可以加一些log查看
5、在probe成功和设备树解析完成等等情况下,对节点进行验证。
brightness,blink,breath等等节点,其中blink节点有的平台可以使用delay_on和delay_off进行控制,不需要再重新添加节点。
验证的方法是:
echo 255 > brightness
echo 0 > brightness
echo 1 > breath
echo 0 > breath
6.创建节点
第一步:
sysfs_create_group(&led→cdev.dev→kobj,&XXX_attr_group); 创建一组节点 led→cdev.dev→kobj这个为创建的节点所在目录即此对应的是sys/class/leds/red、green、blue下面
sysfs_create_files(&led→cdev.dev→kobj,breath_attrs); 创建一个节点
第二步:
static DEVICE_ATTR(ramp_time, 0664, NULL, ramp_time_store); 后面两个参数为show和store
static DEVICE_ATTR(scaling, 0664, NULL, scaling_store);
static DEVICE_ATTR(ontime, 0664, NULL, ontime_store);
static DEVICE_ATTR(period, 0664, NULL, period_store);
static struct attribute *XXX_attrs[] = {
&dev_attr_ramp_time.attr,
&dev_attr_scaling.attr,
&dev_attr_ontime.attr,
&dev_attr_period.attr,
NULL
};
static const struct attribute_group XXX_attr_group = {
.attrs = XXX_attrs,
};
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24699 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!