From dd472e17e40da52213619b33a9c439cc89287f68 Mon Sep 17 00:00:00 2001
From: lw <lw@rock-chips.com>
Date: Mon, 17 Sep 2012 18:30:18 +0800
Subject: [PATCH] phonepad:add gt2005 and gc0308 support

---
 .../arm/configs/rk30_phonepad_c8003_defconfig |  4 +-
 arch/arm/mach-rk30/board-rk30-phonepad.c      | 89 +++++++++++++++++++
 2 files changed, 91 insertions(+), 2 deletions(-)

diff --git a/arch/arm/configs/rk30_phonepad_c8003_defconfig b/arch/arm/configs/rk30_phonepad_c8003_defconfig
index 2f825b958c0c..57924ec53264 100755
--- a/arch/arm/configs/rk30_phonepad_c8003_defconfig
+++ b/arch/arm/configs/rk30_phonepad_c8003_defconfig
@@ -297,8 +297,8 @@ CONFIG_RK30_PWM_REGULATOR=y
 CONFIG_MEDIA_SUPPORT=y
 CONFIG_VIDEO_DEV=y
 CONFIG_SOC_CAMERA=y
-CONFIG_SOC_CAMERA_SIV121D=y
-CONFIG_SOC_CAMERA_SID130B=y
+CONFIG_SOC_CAMERA_GT2005=y
+CONFIG_SOC_CAMERA_GC0308=y
 CONFIG_VIDEO_RK29=y
 CONFIG_VIDEO_RK29_CAMMEM_ION=y
 CONFIG_ION=y
diff --git a/arch/arm/mach-rk30/board-rk30-phonepad.c b/arch/arm/mach-rk30/board-rk30-phonepad.c
index a784b2be7c02..c612ecf3dd74 100755
--- a/arch/arm/mach-rk30/board-rk30-phonepad.c
+++ b/arch/arm/mach-rk30/board-rk30-phonepad.c
@@ -98,6 +98,7 @@
 #ifdef CONFIG_VIDEO_RK29
 /*---------------- Camera Sensor Macro Define Begin  ------------------------*/
 /*---------------- Camera Sensor Configuration Macro Begin ------------------------*/
+#if defined(CONFIG_SOC_CAMERA_SID130B)
 #define CONFIG_SENSOR_0 RK29_CAM_SENSOR_SID130B						/* back camera sensor */
 #define CONFIG_SENSOR_IIC_ADDR_0		0x6e
 #define CONFIG_SENSOR_IIC_ADAPTER_ID_0	  3
@@ -120,6 +121,33 @@
 #define CONFIG_SENSOR_480P_FPS_FIXED_0		15000
 #define CONFIG_SENSOR_SVGA_FPS_FIXED_0		15000
 #define CONFIG_SENSOR_720P_FPS_FIXED_0		30000
+#endif
+
+#if defined(CONFIG_SOC_CAMERA_GT2005)
+#define CONFIG_SENSOR_0 RK29_CAM_SENSOR_GT2005						/* back camera sensor */
+#define CONFIG_SENSOR_IIC_ADDR_0		0x78
+#define CONFIG_SENSOR_IIC_ADAPTER_ID_0	  3
+#define CONFIG_SENSOR_CIF_INDEX_0          0         // 1
+#define CONFIG_SENSOR_ORIENTATION_0 	  90
+#define CONFIG_SENSOR_POWER_PIN_0		  INVALID_GPIO
+#define CONFIG_SENSOR_RESET_PIN_0		  INVALID_GPIO
+#define CONFIG_SENSOR_POWERDN_PIN_0 	  RK30_PIN1_PB7
+#define CONFIG_SENSOR_FALSH_PIN_0		  INVALID_GPIO
+#define CONFIG_SENSOR_POWERACTIVE_LEVEL_0 RK29_CAM_POWERACTIVE_H
+#define CONFIG_SENSOR_RESETACTIVE_LEVEL_0 RK29_CAM_RESETACTIVE_L
+#define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_0 RK29_CAM_POWERDNACTIVE_L
+#define CONFIG_SENSOR_FLASHACTIVE_LEVEL_0 RK29_CAM_FLASHACTIVE_L
+
+
+#define CONFIG_SENSOR_QCIF_FPS_FIXED_0		15000
+#define CONFIG_SENSOR_240X160_FPS_FIXED_0   15000
+#define CONFIG_SENSOR_QVGA_FPS_FIXED_0		15000
+#define CONFIG_SENSOR_CIF_FPS_FIXED_0		15000
+#define CONFIG_SENSOR_VGA_FPS_FIXED_0		15000
+#define CONFIG_SENSOR_480P_FPS_FIXED_0		15000
+#define CONFIG_SENSOR_SVGA_FPS_FIXED_0		15000
+#define CONFIG_SENSOR_720P_FPS_FIXED_0		30000
+#endif
 
 #define CONFIG_SENSOR_01  RK29_CAM_SENSOR_OV5642                   /* back camera sensor 1 */
 #define CONFIG_SENSOR_IIC_ADDR_01 	    0x00
@@ -167,6 +195,7 @@
 #define CONFIG_SENSOR_SVGA_FPS_FIXED_02      15000
 #define CONFIG_SENSOR_720P_FPS_FIXED_02      30000
 
+#if defined(CONFIG_SOC_CAMERA_SIV121D)
 #define CONFIG_SENSOR_1 RK29_CAM_SENSOR_SIV121D                      /* front camera sensor 0 */
 #define CONFIG_SENSOR_IIC_ADDR_1 	    0x66
 #define CONFIG_SENSOR_IIC_ADAPTER_ID_1	  3
@@ -189,6 +218,33 @@
 #define CONFIG_SENSOR_480P_FPS_FIXED_1		15000
 #define CONFIG_SENSOR_SVGA_FPS_FIXED_1		15000
 #define CONFIG_SENSOR_720P_FPS_FIXED_1		30000
+#endif
+
+#if defined(CONFIG_SOC_CAMERA_GC0308)
+#define CONFIG_SENSOR_1 RK29_CAM_SENSOR_GC0308		/* front camera sensor 0 */
+#define CONFIG_SENSOR_IIC_ADDR_1 	    0x42
+#define CONFIG_SENSOR_IIC_ADAPTER_ID_1	  3
+#define CONFIG_SENSOR_CIF_INDEX_1			0	
+#define CONFIG_SENSOR_ORIENTATION_1       270
+#define CONFIG_SENSOR_POWER_PIN_1         INVALID_GPIO
+#define CONFIG_SENSOR_RESET_PIN_1         INVALID_GPIO
+#define CONFIG_SENSOR_POWERDN_PIN_1 	  RK30_PIN1_PB6
+#define CONFIG_SENSOR_FALSH_PIN_1         INVALID_GPIO
+#define CONFIG_SENSOR_POWERACTIVE_LEVEL_1 RK29_CAM_POWERACTIVE_L
+#define CONFIG_SENSOR_RESETACTIVE_LEVEL_1 RK29_CAM_RESETACTIVE_L
+#define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_1 RK29_CAM_POWERDNACTIVE_H
+#define CONFIG_SENSOR_FLASHACTIVE_LEVEL_1 RK29_CAM_FLASHACTIVE_L
+
+
+#define CONFIG_SENSOR_QCIF_FPS_FIXED_1		15000
+#define CONFIG_SENSOR_240X160_FPS_FIXED_1   15000
+#define CONFIG_SENSOR_QVGA_FPS_FIXED_1		15000
+#define CONFIG_SENSOR_CIF_FPS_FIXED_1		15000
+#define CONFIG_SENSOR_VGA_FPS_FIXED_1		15000
+#define CONFIG_SENSOR_480P_FPS_FIXED_1		15000
+#define CONFIG_SENSOR_SVGA_FPS_FIXED_1		15000
+#define CONFIG_SENSOR_720P_FPS_FIXED_1		30000
+#endif
 
 #define CONFIG_SENSOR_11 RK29_CAM_SENSOR_OV2659                      /* front camera sensor 1 */
 #define CONFIG_SENSOR_IIC_ADDR_11 	    0x00
@@ -1362,6 +1418,11 @@ static struct sensor_platform_data light_stk3171_info = {
 #define LCD_CS_PIN         RK30_PIN4_PC7
 #define LCD_CS_VALUE       GPIO_HIGH
 
+#define LCD_STANDBY_MUX_NAME    GPIO4D2_SMCDATA10_TRACEDATA10_NAME
+#define LCD_STANDBY_PIN         RK30_PIN4_PD2
+#define LCD_STANDBY_VALUE       GPIO_HIGH
+
+
 #define LCD_EN_MUX_NAME    GPIO4C7_SMCDATA7_TRACEDATA7_NAME
 #define LCD_EN_PIN         RK30_PIN6_PB4
 #define LCD_EN_VALUE       GPIO_LOW
@@ -1375,6 +1436,19 @@ static int rk_fb_io_init(struct rk29_fb_setting_info *fb_setting)
 {
 	int ret = 0;
 
+	rk30_mux_api_set(LCD_STANDBY_MUX_NAME, GPIO4D_GPIO4D2);
+	ret = gpio_request(LCD_STANDBY_PIN, NULL);
+	if (ret != 0)
+	{
+		gpio_free(LCD_STANDBY_PIN);
+		printk(KERN_ERR "request lcd cs pin fail!\n");
+		return -1;
+	}
+	else
+	{
+		gpio_direction_output(LCD_STANDBY_PIN, LCD_STANDBY_VALUE);
+	}
+
 	rk30_mux_api_set(GPIO3A6_SDMMC0RSTNOUT_NAME, GPIO3A_GPIO3A6);
 	ret = gpio_request(HDMI11_EN_PIN, NULL);
 	if (ret != 0)
@@ -2489,6 +2563,21 @@ static void __init machine_rk30_board_init(void)
 	rk30_mux_api_set(GPIO4D7_SMCDATA15_TRACEDATA15_NAME, GPIO4D_GPIO4D7);
 	gpio_direction_output(RK30_PIN4_PD7, GPIO_HIGH);
 	
+#if defined(CONFIG_RKWIFI)
+	//for c8003
+	rk30_mux_api_set(GPIO3D0_SDMMC1PWREN_NAME, GPIO3D_GPIO3D0);
+	gpio_request(RK30_PIN3_PD0, "wifi_on");
+	gpio_direction_output(RK30_PIN3_PD0, GPIO_HIGH);
+
+	gpio_request(RK30_PIN3_PC0, "mmc1-cmd");
+	gpio_request(RK30_PIN3_PC1, "mmc1-clk");
+	gpio_request(RK30_PIN3_PC2, "mmc1-data0");
+	gpio_request(RK30_PIN3_PC3, "mmc1-data1");
+	gpio_request(RK30_PIN3_PC4, "mmc1-data2");
+	gpio_request(RK30_PIN3_PC5, "mmc1-data3");
+	       
+#endif
+
 	pm_power_off = rk30_pm_power_off;
 	
 	rk30_i2c_register_board_info();
-- 
2.34.1