From a64838fe3138aa4ea50afe232cda25340adf9737 Mon Sep 17 00:00:00 2001
From: root <root@lw.(none)>
Date: Thu, 30 Jun 2011 19:22:42 +0800
Subject: [PATCH] =?utf8?q?Improve=20something=20for=20A22:=201=E3=80=81use?=
 =?utf8?q?=20SPI0=20init=20LCD=20to=20avoid=20SPI1=20conflict=20between=20?=
 =?utf8?q?WM831X=20and=20lcd=20while=20system=20resume;=202=E3=80=81use=20?=
 =?utf8?q?polling=20instead=20of=20intterupt=20to=20read=20touch=20screen?=
 =?utf8?q?=20data=20to=20reduce=20CPU=20working;=203=E3=80=81reduce=20time?=
 =?utf8?q?=20of=20light=20backlight=20when=20charging=20to=20reduce=20powe?=
 =?utf8?q?r=20consumption;?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

---
 arch/arm/configs/rk29_a22_defconfig    | 30 +++++++++++++++++---------
 drivers/input/touchscreen/ili2102_ts.c | 18 ++++++++++------
 drivers/power/wm831x_charger_display.c |  4 ++--
 3 files changed, 33 insertions(+), 19 deletions(-)

diff --git a/arch/arm/configs/rk29_a22_defconfig b/arch/arm/configs/rk29_a22_defconfig
index dcf596facfc3..c41118ef5b0b 100644
--- a/arch/arm/configs/rk29_a22_defconfig
+++ b/arch/arm/configs/rk29_a22_defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.32.27
-# Thu Jun 16 18:40:20 2011
+# Thu Jun 30 19:14:37 2011
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -203,6 +203,7 @@ CONFIG_WIFI_CONTROL_FUNC=y
 # CONFIG_MACH_RK29_PHONESDK is not set
 CONFIG_MACH_RK29_A22=y
 # CONFIG_MACH_RK29_PHONEPADSDK is not set
+# CONFIG_MACH_RK29_newton is not set
 # CONFIG_DDR_TYPE_DDRII is not set
 CONFIG_DDR_TYPE_LPDDR=y
 # CONFIG_DDR_TYPE_DDR3_800D is not set
@@ -227,6 +228,8 @@ CONFIG_DDR_TYPE_LPDDR=y
 # CONFIG_DDR_TYPE_DDR3_2133M is not set
 # CONFIG_DDR_TYPE_DDR3_2133N is not set
 # CONFIG_DDR_TYPE_DDR3_DEFAULT is not set
+CONFIG_RK29_MEM_SIZE_512M=y
+# CONFIG_RK29_MEM_SIZE_1G is not set
 CONFIG_RK29_MEM_SIZE_M=512
 CONFIG_DDR_SDRAM_FREQ=192
 
@@ -239,8 +242,10 @@ CONFIG_RK29_VPU=y
 CONFIG_RK29_LAST_LOG=y
 
 #
-# The control interface support for RK29 suspend 
+# support for RK29 power manage 
 #
+# CONFIG_RK29_CLK_SWITCH_TO_32K is not set
+# CONFIG_RK29_GPIO_SUSPEND is not set
 CONFIG_RK29_SPI_INSRAM=y
 
 #
@@ -597,6 +602,7 @@ CONFIG_MTD_NAND_IDS=y
 CONFIG_MTD_RKNAND=y
 CONFIG_MTD_NAND_RK29XX=y
 CONFIG_MTD_RKNAND_BUFFER=y
+# CONFIG_MTD_EMMC_CLK_POWER_SAVE is not set
 # CONFIG_MTD_NAND_RK29XX_DEBUG is not set
 # CONFIG_MTD_ONENAND is not set
 
@@ -633,6 +639,7 @@ CONFIG_APANIC_PLABEL="kpanic"
 CONFIG_MTK23D=y
 # CONFIG_FM580X is not set
 # CONFIG_MU509 is not set
+# CONFIG_RK29_NEWTON is not set
 # CONFIG_C2PORT is not set
 
 #
@@ -860,7 +867,9 @@ CONFIG_TOUCHSCREEN_ILI2102_IIC=y
 # CONFIG_EETI_EGALAX is not set
 # CONFIG_TOUCHSCREEN_IT7260 is not set
 # CONFIG_TOUCHSCREEN_GT801_IIC is not set
+# CONFIG_TOUCHSCREEN_GT818_IIC is not set
 # CONFIG_D70_L3188A is not set
+# CONFIG_TOUCHSCREEN_FT5406 is not set
 CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_LPSENSOR_ISL29028 is not set
 # CONFIG_INPUT_LPSENSOR_CM3602 is not set
@@ -916,13 +925,17 @@ CONFIG_DEVKMEM=y
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_SERIAL_RK29=y
+CONFIG_SERIAL_RK29_STANDARD=y
 CONFIG_UART0_RK29=y
 CONFIG_UART0_CTS_RTS_RK29=y
+# CONFIG_UART0_DMA_RK29 is not set
 CONFIG_UART1_RK29=y
 CONFIG_UART2_RK29=y
 CONFIG_UART2_CTS_RTS_RK29=y
+# CONFIG_UART2_DMA_RK29 is not set
 CONFIG_UART3_RK29=y
 # CONFIG_UART3_CTS_RTS_RK29 is not set
+# CONFIG_UART3_DMA_RK29 is not set
 CONFIG_SERIAL_RK29_CONSOLE=y
 # CONFIG_SERIAL_SC8800 is not set
 CONFIG_UNIX98_PTYS=y
@@ -985,6 +998,8 @@ CONFIG_SPIM_RK29=y
 CONFIG_SPIM0_RK29=y
 CONFIG_SPIM1_RK29=y
 CONFIG_LCD_USE_SPIM_CONTROL=y
+CONFIG_LCD_USE_SPI0=y
+# CONFIG_LCD_USE_SPI1 is not set
 
 #
 # SPI Protocol Masters
@@ -1271,6 +1286,7 @@ CONFIG_LCD_NT35510=y
 # CONFIG_LCD_ILI9803_CPT4_3 is not set
 # CONFIG_DEFAULT_OUT_HDMI is not set
 # CONFIG_LCD_AT070TNA2 is not set
+# CONFIG_LCD_AT070TN93 is not set
 
 #
 # HDMI
@@ -1322,6 +1338,7 @@ CONFIG_SND_RK29_SOC_I2S_8CH=y
 # CONFIG_SND_RK29_SOC_alc5631 is not set
 # CONFIG_SND_RK29_SOC_RT5625 is not set
 CONFIG_SND_RK29_SOC_WM8994=y
+# CONFIG_SND_RK29_SOC_CS42L52 is not set
 # CONFIG_SND_RK29_CODEC_SOC_MASTER is not set
 CONFIG_SND_RK29_CODEC_SOC_SLAVE=y
 CONFIG_SND_SOC_I2C_AND_SPI=y
@@ -1471,6 +1488,7 @@ CONFIG_RTC_INTF_ALARM_DEV=y
 # I2C RTC drivers
 #
 # CONFIG_RTC_HYM8563 is not set
+# CONFIG_RTC_M41T66 is not set
 # CONFIG_RTC_DRV_DS1307 is not set
 # CONFIG_RTC_DRV_DS1374 is not set
 # CONFIG_RTC_DRV_DS1672 is not set
@@ -1546,14 +1564,6 @@ CONFIG_ANDROID_RAM_CONSOLE_ERROR_CORRECTION_POLYNOMIAL=0x11d
 CONFIG_ANDROID_TIMED_OUTPUT=y
 CONFIG_ANDROID_TIMED_GPIO=y
 CONFIG_ANDROID_LOW_MEMORY_KILLER=y
-
-#
-# Qualcomm MSM Camera And Video
-#
-
-#
-# Camera Sensor Selection
-#
 # CONFIG_DST is not set
 # CONFIG_POHMELFS is not set
 # CONFIG_PLAN9AUTH is not set
diff --git a/drivers/input/touchscreen/ili2102_ts.c b/drivers/input/touchscreen/ili2102_ts.c
index 099f49fa9731..8bcf073ecad9 100755
--- a/drivers/input/touchscreen/ili2102_ts.c
+++ b/drivers/input/touchscreen/ili2102_ts.c
@@ -26,8 +26,8 @@ static int  ts_dbg_enable = 0;
 		
 #define TOUCH_NUMBER 2
 
-static int touch_state[TOUCH_NUMBER] = {TOUCH_UP,TOUCH_UP};
-static unsigned int g_x[TOUCH_NUMBER] =  {0},g_y[TOUCH_NUMBER] = {0};
+static volatile int touch_state[TOUCH_NUMBER] = {TOUCH_UP,TOUCH_UP};
+static volatile unsigned int g_x[TOUCH_NUMBER] =  {0},g_y[TOUCH_NUMBER] = {0};
 
 struct ili2102_ts_data {
 	u16		model;			/* 801. */	
@@ -316,7 +316,7 @@ static int ili2102_init_panel(struct ili2102_ts_data *ts)
 
 static void ili2102_ts_work_func(struct work_struct *work)
 {
-	int i,ret;
+	int i,ret,num=1;
 	int syn_flag = 0;
 	unsigned int x, y;
 	struct i2c_msg msg[2];
@@ -349,8 +349,12 @@ static void ili2102_ts_work_func(struct work_struct *work)
 		printk("%s:i2c_transfer fail, ret=%d\n",__FUNCTION__,ret);
 		goto out;
 	}
-
-	for(i=0; i<TOUCH_NUMBER; i++)
+	if(buf[0]&0x02 == 0x02)
+		num = 2;
+	else
+		num = 1;
+	
+	for(i=0; i<num; i++)
 	{
 
 		if(!((buf[0]>>i)&0x01))
@@ -404,10 +408,10 @@ static void ili2102_ts_work_func(struct work_struct *work)
 	if(syn_flag)
 	input_sync(ts->input_dev);
 out:   
-#if 0
+#if 1
 	if(ts->pendown)
 	{
-		schedule_delayed_work(&ts->work, msecs_to_jiffies(10));
+		schedule_delayed_work(&ts->work, msecs_to_jiffies(12));
 		ts->pendown = 0;
 	}
 	else
diff --git a/drivers/power/wm831x_charger_display.c b/drivers/power/wm831x_charger_display.c
index d79c80515b3c..36fc26d04f7f 100755
--- a/drivers/power/wm831x_charger_display.c
+++ b/drivers/power/wm831x_charger_display.c
@@ -343,8 +343,8 @@ static int rk29_charger_display(struct wm831x_chg *wm831x_chg)
 			wm831x_check_on_pin(wm831x_chg);
 		}
 		
-		//suspend when timeout(100*200ms)
-		if(wm831x_chg->cnt_disp++ > 100)
+		//suspend when timeout(about 50*200ms)
+		if(wm831x_chg->cnt_disp++ > 50)
 		{
 			if(wm831x_chg->flag_suspend == 0)
 			{
-- 
2.34.1