1、add gpio-keys.c to build
2、add gpio-keys device in your main dtsi like that:
&soc {
gpio_keys {
compatible = "gpio-keys";
input-name = "gpio-keys";
pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend";
pinctrl-0 = <&gpio_key_active>;
pinctrl-1 = <&gpio_key_suspend>;
vol_up {
label = "volume_up";//key label name
gpios = <&msm_gpio 107 0x1>;//gpio num
linux,input-type = <1>;//don't need modify that
linux,code = <115>;//the key value that you want to use
gpio-key,wakeup;//could wakeup system
debounce-interval = <15>;//the delay time for debounce
};
camera_focus {
label = "camera_focus";
gpios = <&msm_gpio 108 0x1>;
linux,input-type = <1>;
linux,code = <0x210>;
gpio-key,wakeup;
debounce-interval = <15>;
};
};
};
3、add pinctrl in pinctrl.dtsi
tlmm_gpio_key {
qcom,pins = <&gp 107>, <&gp 108>;
qcom,pin-func = <0>;
qcom,num-grp-pins = <2>;
label = "tlmm_gpio_key";
gpio_key_active: gpio_key_active {
drive-strength = <2>;
bias-pull-up;
};
gpio_key_suspend: gpio_key_suspend {
drive-strength = <2>;
bias-pull-up;
};
};
4、than check gpio-keys node.
/sys/devices/soc.0/gpio_keys.*
cat key
and getevent to look the event.
2、add gpio-keys device in your main dtsi like that:
&soc {
gpio_keys {
compatible = "gpio-keys";
input-name = "gpio-keys";
pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend";
pinctrl-0 = <&gpio_key_active>;
pinctrl-1 = <&gpio_key_suspend>;
vol_up {
label = "volume_up";//key label name
gpios = <&msm_gpio 107 0x1>;//gpio num
linux,input-type = <1>;//don't need modify that
linux,code = <115>;//the key value that you want to use
gpio-key,wakeup;//could wakeup system
debounce-interval = <15>;//the delay time for debounce
};
camera_focus {
label = "camera_focus";
gpios = <&msm_gpio 108 0x1>;
linux,input-type = <1>;
linux,code = <0x210>;
gpio-key,wakeup;
debounce-interval = <15>;
};
};
};
3、add pinctrl in pinctrl.dtsi
tlmm_gpio_key {
qcom,pins = <&gp 107>, <&gp 108>;
qcom,pin-func = <0>;
qcom,num-grp-pins = <2>;
label = "tlmm_gpio_key";
gpio_key_active: gpio_key_active {
drive-strength = <2>;
bias-pull-up;
};
gpio_key_suspend: gpio_key_suspend {
drive-strength = <2>;
bias-pull-up;
};
};
4、than check gpio-keys node.
/sys/devices/soc.0/gpio_keys.*
cat key
and getevent to look the event.