Hi all, I thought the simplest correction is to set GPG[15:13] as input during s3c2410_ts suspending.
And I do the patch and test it. Suspend/resume procedure is OK. TS module worked quite fine after suspend/resume cycle. Like Harald said, I can't sure whether this is an elegant approach. Let me know your opinion. Cheers, Matt
Index: linux-2.6.21/drivers/input/touchscreen/s3c2410_ts.c =================================================================== --- linux-2.6.21.orig/drivers/input/touchscreen/s3c2410_ts.c 2007-05-23 14:13:53.000000000 +0800 +++ linux-2.6.21/drivers/input/touchscreen/s3c2410_ts.c 2007-05-23 14:19:18.000000000 +0800 @@ -333,6 +333,14 @@ clk_disable(adc_clock); +#if defined(CONFIG_CPU_S3C2440) + + /* GPG[15:13] must be set as input for starting up after wakeup from sleep mode. */ + s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_INP); + s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_INP); + s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_INP); + +#endif return 0; } @@ -359,6 +367,13 @@ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC); +#if defined(CONFIG_CPU_S3C2440) + + s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON); + s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON); + s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON); + +#endif return 0; }
