设备树
tegra194-p2888-0001-p2822-0000.dts
路径:Linux_for_Tegra/source/public/hardware/nvidia/platform/t19x/galen/kernel-dts/tegra194-p2888-0001-p2822-0000.dts
增加:
#include "user/user-led.dtsi"
user-led.dtsi
路径:Linux_for_Tegra/source/public/hardware/nvidia/platform/t19x/galen/kernel-dts/user/user-led.dtsi
增加:
#include <dt-bindings/gpio/tegra194-gpio.h>
#define RUN_LED TEGRA194_MAIN_GPIO(N, 0)
#define ALARM_LED TEGRA194_MAIN_GPIO(M, 5)
/ {
leds {
compatible = "gpio-leds";
status = "okay";
run_led: run-led {
label = "run-led";
gpios = <&tegra_main_gpio RUN_LED GPIO_ACTIVE_HIGH>;
linux,default-trigger = "timer";
};
alarm_led: alarm-led {
label = "alarm-led";
gpios = <&tegra_main_gpio ALARM_LED GPIO_ACTIVE_HIGH>;
default-state = "on";
};
};
};
注意: 这里使用 PM_5
和 PN_0
(使用&tegra_main_gpio
而不是&tegra_aon_gpio
), 同时需要注释掉相关的引脚引用:
Linux_for_Tegra/source/public/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-fixed-regulator-p2822-1000.dtsi
p2822_avdd_cam_2v8: regulator@107 {
/*
compatible = "regulator-fixed";
reg = <107>;
regulator-name = "avdd-cam-2v8";
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
gpio = <&tegra_main_gpio TEGRA194_MAIN_GPIO(N, 0) 0>;
enable-active-high;
*/
};
p2822_vdd_sys_en: regulator@113 {
/*
compatible = "regulator-fixed";
reg = <113>;
regulator-name = "vdd_sys_en";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
gpio = <&tegra_main_gpio TEGRA194_MAIN_GPIO(M, 5) 0>;
enable-active-high;
*/
};
驱动配置
Linux_for_Tegra/source/public/kernel/kernel-4.9/arch/arm64/configs/tegra_defconfig
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_ONESHOT=y
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_LEDS_TRIGGER_BACKLIGHT=y
CONFIG_LEDS_TRIGGER_CPU=y
CONFIG_LEDS_TRIGGER_GPIO=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
现象
编译内核后,重新烧写内核与设备树。
进入系统后,在/sys/class/leds
路径可见led。
root@linux:/sys/class/leds/run-led# cat trigger
none bluetooth-power kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock mmc0 mmc1 [timer] oneshot disk-activity ide-disk heartbeat backlight gpio cpu0 cpu1 cpu2 cpu3 cpu4 cpu5 cpu6 cpu7 default-on system-throttle rfkill0
root@linux:/sys/class/leds/run-led#
root@linux:/sys/class/leds/alarm-led# cat trigger
[none] bluetooth-power kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock mmc0 mmc1 timer oneshot disk-activity ide-disk heartbeat backlight gpio cpu0 cpu1 cpu2 cpu3 cpu4 cpu5 cpu6 cpu7 default-on system-throttle rfkill0
root@linux:/sys/class/leds/alarm-led# cat brightness
255
root@linux:/sys/class/leds/alarm-led# echo 0 > brightness
root@linux:/sys/class/leds/alarm-led#
run-led 1s 闪烁.