AnsweredAssumed Answered

Android Buttons - IOMUX - safeMode

Question asked by jeromeolivier on Jun 26, 2013

Hello everybody,

 

I am now working on the BD-SL-i.MX6.

I need to use the GPIO_19 PAD for another use than KEY_VOLUME_DOWN and that is why I changed the IOMUX config of this pad in the kernel (arch/arm/mach-mx6/pads-mx6_sabrelite.h).
Since then Android start on Safe Mode and I haven't since yet something useful in the logcat. Moreover, according to the Android Compatibility Definition for ICS/4.0.4, VOLUME DOWN key is not mandatory.
So I decided to move the VOLUME DOWN function to another GPIO on another PAD. I chose :

MX6PAD(EIM_A24__GPIO_5_4),   /* GPIO5[4] - unused */

And in arch/arm/mach-mx6/board-mx6q_sabrelite.c I've done :

-#define MX6_SABRELITE_VOL_DOWN_KEY    IMX_GPIO_NR(4, 5)

+//#define MX6_SABRELITE_VOL_DOWN_KEY    IMX_GPIO_NR(4, 5)

+#define MX6_SABRELITE_VOL_DOWN_KEY    IMX_GPIO_NR(5, 4)


Eventually there is a need for PAD control in arch/arm/plat-mxc/include/mach/iomux-mx6q.h (although for the original GPIO_19 there is no control) :

+#define MX6Q_EIM_24_PAD_CTRL PAD_CTL_PUS_47K_UP

 

#define  MX6Q_PAD_EIM_A24__GPIO_5_4   \
-   (_MX6Q_PAD_EIM_A24__GPIO_5_4 | MUX_PAD_CTRL(NO_PAD_CTRL))
+   (_MX6Q_PAD_EIM_A24__GPIO_5_4 | MUX_PAD_CTRL(MX6Q_EIM_24_PAD_CTRL)

 

Then Android STILL boot in Safe Mode.

I wonder how Android can be aware that the VOLUME_DOWN is linked on another PADS...

 

I looked into U-boot configuration and I changed  : board/boundary/nitrogen6x/nitrogen6x.c

@@ -228,7 +228,8 @@ static iomux_v3_cfg_t const button_pads[] = {
        /* Home */
        MX6_PAD_NANDF_D4__GPIO_2_4      | MUX_PAD_CTRL(BUTTON_PAD_CTRL),
        /* Volume Down */
-       MX6_PAD_GPIO_19__GPIO_4_5       | MUX_PAD_CTRL(BUTTON_PAD_CTRL),
+//     MX6_PAD_GPIO_19__GPIO_4_5       | MUX_PAD_CTRL(BUTTON_PAD_CTRL),
+       MX6_PAD_EIM_A24__GPIO_5_4       | MUX_PAD_CTRL(BUTTON_PAD_CTRL),

 

But still Safe Mode.

So I looked up in /proc/cmdline but U-boot give nothing to the kernel about GPIO-keys

 

I am quite lost about in which case Android boot into safeMode by itself and how Android "knows" that I changed the IOMUX-ing.m

 

I hope I was enough clear about the problem I am encountering,
Thanks
Jerome Olivier

Outcomes