本帖最后由 chenyuanwei 于 2024-10-28 17:52 编辑
背景: 平台:MT6768 内核版本:kernel-5.10
一、配置流程device/agenew/($project) - ProjectConfig.mk
- +AGN_MMITEST_KEYBOARDLED = yes
复制代码 1.2、添加节点权限
- AGN_4313R_RD_MX12832_69U/init.project.rc
- #keyled
- chmod 0664 /sys/class/leds/button-backlight/brightness
- chown system system /sys/class/leds/button-backlight/brightness
复制代码 1.3、leds-gpio ko文件加载 位置要放在leds-mtk 后面
- AGN_4313R_RD_MX12832_69U/ko_order_table.csv
- leds-mtk-disp.ko,/drivers/leds/leds-mtk-disp.ko,ramdisk,Y,Y,user/userdebug/eng
- leds-mtk-pwm.ko,/drivers/leds/leds-mtk-pwm.ko,ramdisk,Y,Y,user/userdebug/eng
- leds-aw2023.ko,/drivers/leds/leds-aw2023.ko,ramdisk,Y,Y,user/userdebug/eng
- +leds-gpio.ko,/drivers/leds/leds-gpio.ko,ramdisk,Y,Y,user/userdebug/eng
复制代码
1.4、kernel-5.10 - arch/arm64/boot/dts/mediatek/AGN_4313R_RD_MX12832_69U/mt6768.dts
- //平台设备节点
- leds {
- compatible = "gpio-leds";
- status = "okay";
- button-backlight {
- label = "button-backlight"; //生成设备对应名字
- gpios = <&pio 78 0>;//按键灯的gpio
- default-state = "off";
- linux,default-trigger = "none";
- retain-state-suspended;
- status = "okay";
- };
- };
复制代码 1.5、对应defconfig文件添加编译条件
- arch/arm64/configs/AGN_4313R_RD_MX12832_69U_defconfig
复制代码
二、测试
2.1、使用adb 测试 先adb root+adb shell进入命令 - ls -l sys/class/leds/button-backlight/
- 可以看到下面这些节点(这个设备是继承kernel-5.10\drivers\leds\led-class.c 的class)
- brightness device max_brightness power subsystem trigger uevent
- 正常来说leds底下有button-backlight设备节点生成功能就基本跑通
复制代码- 可以对其brightness输入255 表示打开 输入 0 表示关闭按键灯
- 例如:
- /sys/class/leds/button-backlight # echo 255 > brightness
复制代码 三、注意事项ls -l 后brightness 的权限不是system(下面图示),节点可能打不开 在main log 可以看到 - Svstemerr:java.io.FileNotFoundException: /sys/class/1eds/button-backlight/brightnessopen failed: EACCES (Permission denied)
复制代码
那就是device/agenew 底下的init.project.rc没有给对应的权限
|