...
...
| Code Block | ||
|---|---|---|
| ||
→ Added configurations for support of gpio_keys module and evtest - https://github.com/rdkcentral/meta-cmf-bananapi/pull/98 → load the gpio-key module root@Filogic-GW:/lib/modules/5.4.271-yocto-standard/kernel/drivers/input/keyboard# modprobe gpio_keys root@Filogic-GW:/lib/modules/5.4.271-yocto-standard/kernel/drivers/input/keyboard# dmesg | grep gpio [ 163.696818] input: gpio-keys as /devices/platform/gpio-keys/input/input0 root@Filogic-GW:/lib/modules/5.4.271-yocto-standard/kernel/drivers/input/keyboard# cat /sys/kernel/debug/gpio gpiochip0: GPIOs 428-511, parent: platform/1001f000.pinctrl, pinctrl_moore: gpio-428 ( |tx-disable ) in lo gpio-430 ( |los ) in hi IRQ gpio-432 ( |asm_sel ) in hi gpio-433 ( |pca9545_rst ) in hi gpio-441 ( |reset ) in lo IRQ ACTIVE LOW gpio-442 ( |wps ) in hi IRQ ACTIVE LOW gpio-482 ( |los ) in hi IRQ gpio-498 ( |tx-disable ) in lo gpio-510 ( |mod-def0 ) in hi IRQ ACTIVE LOW gpio-511 ( |mod-def0 ) in hi IRQ ACTIVE LOW → run the evtest root@Filogic-GW:/lib/modules/5.4.271-yocto-standard/kernel/drivers/input/keyboard# evtest No device specified, trying to scan all of /dev/input/event* Available devices: /dev/input/event0: gpio-keys Select the device event number [0-0]: 0 Input driver version is 1.0.1 Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100 Input device name: "gpio-keys" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 256 (BTN_0) Event code 529 (KEY_WPS_BUTTON) Properties: Testing ... (interrupt to exit) Event: time 1739261802.084437, type 1 (EV_KEY), code 529 (KEY_WPS_BUTTON), value 1 # when HW WPS button pushed Event: time 1739261802.084437, -------------- SYN_REPORT ------------ Event: time 1739261802.282856, type 1 (EV_KEY), code 529 (KEY_WPS_BUTTON), value 0 # when HW WPS button released |
...
| Code Block | ||
|---|---|---|
| ||
since buttons are associated with GPIO, we can do the export wps gpio using its number
→ In mt7988a-bananapi-bpi-r4-nand.dts file, we can see WPS is defined with 14
wps {
label = "wps";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&pio 14 GPIO_ACTIVE_LOW>;
};
root@Filogic-GW:~# cd /sys/class/gpio/
export gpiochip428/ unexport
→ Here by using 14+428=442, 428 (gpiochip428 refers to a GPIO controller that manages GPIO pins, starting from GPIO number 428.)
→ export the WPS pin number
root@Filogic-GW:/sys/class/gpio# echo 442 > /sys/class/gpio/export
root@Filogic-GW:/sys/class/gpio/gpio442# cat value
1
→ Whenever we press the WPS, this gpio442 value is changed to 0
root@Filogic-GW:/sys/class/gpio/gpio442# cat value
0 |
...