Android-led三色灯

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

扫描二维码关注公众号,回复: 12199785 查看本文章

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,

};

 

猜你喜欢

转载自blog.csdn.net/qq_29147303/article/details/112987302