Power button with LTC2954 on Colibri IMX8X

I am using a colibri-imx8x module with a custom carrier board. On the carrier board I am using a LTC2954 for push button detection. As per the LT2954 data sheet the KILL pin must be pulled high within 512ms of system boot-up.

To achieve this I updated uboot to pull the gpio pin high in the board_init function:

diff --git a/board/toradex/colibri-imx8x/colibri-imx8x.c b/board/toradex/colibri-imx8x/colibri-imx8x.c
index 36bc85fdf0..77b678a1a2 100644
--- a/board/toradex/colibri-imx8x/colibri-imx8x.c
+++ b/board/toradex/colibri-imx8x/colibri-imx8x.c
@@ -176,6 +176,11 @@ int board_init(void)
 			return ret;
 	}
 
+    // Set COLIBRI_PWR_nKILL to 1 //
+    unsigned int gpioNo = IMX_GPIO_NR(3, 11) + 8;
+    gpio_request(gpioNo, "SODIMM_PIN_69");
+    gpio_direction_output(gpioNo, 1);
+
 	return 0;
 }

With this update the pin goes high after about ~800ms. Is it possible to control that GPIO pin earlier such that I meet the 512ms requirement of the LTC2954 ?

Hey @nmohan86,

I don’t think it’s likely you will get the kill# pulled high via software fast enough, you can see on our Ixora boards we have the LTC2954 and it is pulled up via hardware. I believe this is the more viable option.

Here is the same question answered (for a different module) with a bit more details, but the same topic.

schematics of the Ixora board showing the LTC2954[…] being pulled by 3.3V

-Eric

I saw that post after I already posted my question and realized we will need a pull up on the KILL line.