This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM3352: Setting GPIO0 registers during wakeup

Part Number: AM3352
Other Parts Discussed in Thread: SYSCONFIG

Tool/software: Linux

Hello team,

I'm facing some stability issues during wakeup from deepsleep and hence I want to add some debug points in the resume code. I'm trying to set some GPIOs high during wakeup by directly writing to registers from ti_emif_exit_sr  method in ti-emif-sram-pm.S  . I chose gpio0_2 as I assume gpio0 to be alive during sleep-wakeup scenario since it can be configured as a wakeup source.

I'm adding the below changes in drivers/memory/ti-emif-sram-pm.S 

ENTRY(ti_emif_exit_sr)

// Code to exit self refresh mode

+ /* Enable GPIO0 clock */
+ ldr r2, =0x44E00408 /* CM_WKUP_GPIO0_CLKCTRL */
+ ldr r4, =0x2
+ str r4, [r2]

+ /* Enable GPIO0 module */
+ ldr r2, =0x44E07130 /* GPIO_CTRL */
+ ldr r4, =0x2
+ str r4, [r2]

+ /* Set GPIO0_2 pad configuration */
+ ldr r2, =0x44E10950 /* conf_spi0_sclk */
+ ldr r4, =0x7
+ str r4, [r2]

+ /* Modify GPIO0 sysconfig to no-idle mode */
+ ldr r2, =0x44E07010 /* GPIO_SYSCONFIG */
+ ldr r4, =0xC
+ str r4, [r2]

+ /* Set direction */
+ ldr r2, =0x44E07134
+ ldr r4, =0xFFFFFFDB
+ str r4, [r2]

+ /* Set GPIO high */
+ ldr r2, =0x44E0713C
+ ldr r4, =0x0
+ str r4, [r2]
+ ldr r4, =0x4
+ str r4, [r2]

However the device hangs during wakeup. Can someone tell me what I'm doing wrong here ? I tried the same change from am33xx_resume_from_deep_sleep method in arch/arm/mach-omap2/sleep33xx.S and there also it hanged. 

If anyone could suggest me the best way to do this, that would be really helpful.

Regards,

Jayadev