RK3568系列9——按键与工作灯配置

  简单的gpio-keys按键和gpio-leds工作灯配置。

GPIO按键

配置要点

  • 按键端子在按键按下时,将GPIO与地短路,因此低电平有效,默认拉高

DTS配置

  • autorepeat: 一直按着按键时,不断重复触发
  • label: 显示的按键名称
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/ {
gpio-keys {
compatible = "gpio-keys";
autorepeat;
pinctrl-names = "default";
pinctrl-0 = <&gpio_keys>;

volume-up {
label = "volume up";
gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_LOW>;
linux,code = <KEY_VOLUMEUP>;
};

volume-down {
label = "volume down";
gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_LOW>;
linux,code = <KEY_VOLUMEDOWN>;
};
};
};

&pinctrl {
gpio-group {
gpio_keys: gpio-keys {
rockchip,pins = <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>,
<3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
};

板载状态灯

  • 其他触发器可以从sdk/kernel/Documentation/devicetree/bindings/leds/common.txt中查找
  • Android 8.1默认没加载驱动,要手动加一下CONFIG_LEDS_TRIGGER_HEARTBEAT=y
1
2
3
4
5
6
7
8
9
10
11
12
&work_led {
gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat"; # 默认是根据CPU的负载改变频率的呼吸灯
};

# 添加新的状态灯
&leds {
disk_led: disk {
gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "disk-activity";
};
};