diff options
author | Denys Drozdov <denys.drozdov@toradex.com> | 2021-08-03 20:52:34 +0300 |
---|---|---|
committer | Max Krummenacher <max.krummenacher@toradex.com> | 2021-08-04 16:49:12 +0000 |
commit | 449729b5b8be0665e1059911235781599536b012 (patch) | |
tree | 3a115d246b5a0d6c65739443cce006be5a2651af | |
parent | bb546e72ecef99f2b68c0a658a9558dafa48b162 (diff) |
arm64: dts: apalis-imx8: keep pad-wakeup instead of gpio-keys
Resume from freeze state generated non-assigned gpio interrupt
from the port in S0/S3 mode. Wakeup-source in gpio-keys
doesn’t really work for Apalis imx8qxp and Apalis imx8qm.
These targets should perform wakeup by the means of pad-wakeup
(see CONFIG_GPIO_MXC_PAD_WAKEUP implemented in gpio-mxc driver).
Kernel trace can be easily reproduced with the following scenario:
- echo freeze > /sys/power/state
- Wake the system up connecting MXM3_37 to GND.
[ 141.232366] [<ffff0000084be898>] mx3_gpio_irq_handler+0x38/0xe8
[ 141.238372] [<ffff00000811783c>] generic_handle_irq+0x24/0x38
[ 141.244203] [<ffff000008117ea8>] __handle_domain_irq+0x60/0xb8
[ 141.250122] [<ffff00000808194c>] gic_handle_irq+0x7c/0x178
[ 141.232366] [<ffff0000084be898>] mx3_gpio_irq_handler+0x38/0xe8
[ 141.238372] [<ffff00000811783c>] generic_handle_irq+0x24/0x38
[ 141.244203] [<ffff000008117ea8>] __handle_domain_irq+0x60/0xb8
[ 141.346337] [<ffff000008083230>] el1_irq+0xb0/0x124
[ 141.351300] [<ffff000008085770>] arch_cpu_idle+0x10/0x18
[ 141.356698] [<ffff000008109f94>] do_idle+0x1ac/0x1e0
[ 141.361748] [<ffff00000810a168>] cpu_startup_entry+0x20/0x28
[ 141.367495] [<ffff000008dbb3a8>] rest_init+0xd0/0xdc
[ 141.372545] [<ffff0000093f0b3c>] start_kernel+0x390/0x3a4
Drop gpio-keys support for these targets and keep only pad-wakeup configured
for resume operations. More information can be found on NXP community link
https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/How-to-add-iMX8QXP-PAD-GPIO-Wakeup/ta-p/1120559?attachment-id=32640
Related-to: ELB-1408
Signed-off-by: Denys Drozdov <denys.drozdov@toradex.com>
4 files changed, 5 insertions, 44 deletions
diff --git a/arch/arm64/boot/dts/freescale/imx8-apalis-eval.dtsi b/arch/arm64/boot/dts/freescale/imx8-apalis-eval.dtsi index 4b6d0e846b32..0a4fe3898993 100644 --- a/arch/arm64/boot/dts/freescale/imx8-apalis-eval.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8-apalis-eval.dtsi @@ -361,7 +361,3 @@ status = "okay"; }; -&wakeup_key { - status = "okay"; -}; - diff --git a/arch/arm64/boot/dts/freescale/imx8-apalis-ixora-v1.1.dtsi b/arch/arm64/boot/dts/freescale/imx8-apalis-ixora-v1.1.dtsi index f20fad2a6f40..53f56dc8f536 100644 --- a/arch/arm64/boot/dts/freescale/imx8-apalis-ixora-v1.1.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8-apalis-ixora-v1.1.dtsi @@ -414,6 +414,3 @@ status = "okay"; }; -&wakeup_key { - status = "okay"; -}; diff --git a/arch/arm64/boot/dts/freescale/imx8-apalis-v1.1.dtsi b/arch/arm64/boot/dts/freescale/imx8-apalis-v1.1.dtsi index 64b793e907f8..3a970692aae8 100644 --- a/arch/arm64/boot/dts/freescale/imx8-apalis-v1.1.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8-apalis-v1.1.dtsi @@ -27,22 +27,6 @@ 3000 1>; }; - /* Apalis WAKE1_MICO */ - wakeup_key: gpio-keys { - compatible = "gpio-keys"; - pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_gpio_keys>; - status = "disabled"; - - wakeup-key { - label = "Wake-Up"; - gpios = <&lsio_gpio2 20 GPIO_ACTIVE_LOW>; - linux,code = <KEY_WAKEUP>; - debounce-interval = <10>; - wakeup-source; - }; - }; - panel_lvds: panel-lvds { compatible = "panel-lvds"; backlight = <&backlight>; @@ -450,7 +434,7 @@ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_cam1_gpios>, <&pinctrl_dap1_gpios>, <&pinctrl_esai0_gpios>, <&pinctrl_fec2_gpios>, - <&pinctrl_gpio3>, <&pinctrl_gpio4>, + <&pinctrl_gpio3>, <&pinctrl_gpio4>, <&pinctrl_gpio_keys>, <&pinctrl_gpio_usbh_oc_n>, <&pinctrl_lpuart1ctrl>, <&pinctrl_lvds0_i2c0_gpio>, <&pinctrl_lvds1_i2c0_gpios>, <&pinctrl_mipi_dsi_0_1_en>, <&pinctrl_mipi_dsi1_gpios>, @@ -1419,11 +1403,11 @@ /* * Add GPIO2_20 as a wakeup source: - * Pin: SC_P_SPI3_CS0 (MXM3_37/WAKE1_MICO) - * Type: SC_PAD_WAKEUP_FALL_EDGE + * Pin: 101 SC_P_SPI3_CS0 (MXM3_37/WAKE1_MICO) + * Type: 5 SC_PAD_WAKEUP_FALL_EDGE * Line: 20 */ - pad-wakeup = <101 5 20>; + pad-wakeup = <IMX8QM_SPI3_CS0 5 20>; pad-wakeup-num = <1>; }; diff --git a/arch/arm64/boot/dts/freescale/imx8qxp-apalis.dtsi b/arch/arm64/boot/dts/freescale/imx8qxp-apalis.dtsi index f47ea1c5483d..86927a1b2f3b 100644 --- a/arch/arm64/boot/dts/freescale/imx8qxp-apalis.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8qxp-apalis.dtsi @@ -71,22 +71,6 @@ 3000 1>; }; - /* Apalis WAKE1_MICO */ - gpio-keys { - compatible = "gpio-keys"; - pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_gpio_keys>; - status = "disabled"; - - wakeup_key: wakeup-key { - label = "Wake-Up"; - gpios = <&lsio_gpio1 26 GPIO_ACTIVE_LOW>; - linux,code = <KEY_WAKEUP>; - debounce-interval = <10>; - wakeup-source; - }; - }; - imx8x_cm4: imx8x_cm4@0 { compatible = "fsl,imx8qxp-cm4"; rsc-da = <0x90000000>; @@ -541,7 +525,7 @@ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_dap1_gpios>, <&pinctrl_gpio3>, <&pinctrl_gpio4>, <&pinctrl_gpio5>, - <&pinctrl_gpio6>, <&pinctrl_mmc1_gpios>, + <&pinctrl_gpio6>, <&pinctrl_gpio_keys>, <&pinctrl_mmc1_gpios>, <&pinctrl_qspi0a_gpios>, <&pinctrl_sata1_act>, <&pinctrl_usbh_oc_n>, <&pinctrl_usbo1oc>, <&pinctrl_wifi_sclk>; |