rendered paste bodydiff --git a/arch/arm/mach-msm/board-htcblackstone-panel.c b/arch/arm/mach-msm/board-htcblackstone-panel.cindex 827c1fb..5007ccb 100644--- a/arch/arm/mach-msm/board-htcblackstone-panel.c+++ b/arch/arm/mach-msm/board-htcblackstone-panel.c@@ -349,10 +349,67 @@ static void htcraphael_process_mddi_table(struct msm_mddi_client_data *client_da static struct vreg *vreg_mddi_1v5; static struct vreg *vreg_lcm_2v85;+extern void micropklt_lcd_ctrl(int); static void htcraphael_mddi_power_client(struct msm_mddi_client_data *client_data, int on) {++ struct msm_dex_command dex;+ int i;+ + printk("htcdiamond_mddi_power_client(%d)\n", on);+ + if(on) {+ msm_gpio_set_function(DEX_GPIO_CFG(RAPH100_LCD_PWR1,0,GPIO_OUTPUT,GPIO_NO_PULL,GPIO_2MA,1));+ micropklt_lcd_ctrl(1);+ dex.cmd=PCOM_PMIC_REG_ON;+ dex.has_data=1;+ dex.data=0x800;+ msm_proc_comm_wince(&dex,0);+ mdelay(40);++ msm_gpio_set_function(DEX_GPIO_CFG(0x3c,0,GPIO_OUTPUT,GPIO_NO_PULL,GPIO_2MA,1));+ msm_gpio_set_function(DEX_GPIO_CFG(0x3d,0,GPIO_OUTPUT,GPIO_NO_PULL,GPIO_2MA,1));+ gpio_set_value(0x3d,0);+ udelay(10);+ gpio_set_value(0x3d,1);+ gpio_set_value(31, 1);+ udelay(10);+ msm_gpio_set_function(DEX_GPIO_CFG(0x3d,0,GPIO_INPUT,GPIO_NO_PULL,GPIO_2MA,0));+ for(i=0;i<10;i++) {+ gpio_set_value(0x3c,0);+ udelay(10);+ gpio_set_value(0x3c,1);+ udelay(10);+ }+ msm_gpio_set_function(DEX_GPIO_CFG(0x3c,1,GPIO_OUTPUT,GPIO_NO_PULL,GPIO_2MA,1));+ msm_gpio_set_function(DEX_GPIO_CFG(0x3d,1,GPIO_OUTPUT,GPIO_NO_PULL,GPIO_2MA,1));+ msm_gpio_set_function(DEX_GPIO_CFG(0x1b,1,GPIO_OUTPUT,GPIO_NO_PULL,GPIO_2MA,0));++ micropklt_lcd_ctrl(2);+ dex.data=0x2000;+ msm_proc_comm_wince(&dex,0);+ mdelay(50);+ msm_gpio_set_function(DEX_GPIO_CFG(RAPH100_LCD_PWR2,0,GPIO_OUTPUT,GPIO_NO_PULL,GPIO_2MA,1));+ mdelay(200);+ } else {+ gpio_set_value(RAPH100_LCD_PWR2, 0);+ mdelay(1);+ dex.cmd=PCOM_PMIC_REG_OFF;+ dex.has_data=1;+ dex.data=0x2000;+ msm_proc_comm_wince(&dex,0);+ mdelay(7);+ msm_gpio_set_function(DEX_GPIO_CFG(0x1b,0,GPIO_OUTPUT,GPIO_NO_PULL,GPIO_2MA,0));+ dex.data=0x800;+ micropklt_lcd_ctrl(5);+ msm_proc_comm_wince(&dex,0);+ mdelay(3);+ gpio_set_value(RAPH100_LCD_PWR1, 0);+ gpio_set_value(31, 0);+ mdelay(10);+ } printk("htcraphael_mddi_power_client(%d)\n", on); #if 0 #warning htcraphael_mddi_power_client not yet implementeddiff --git a/arch/arm/mach-msm/board-htcblackstone.c b/arch/arm/mach-msm/board-htcblackstone.cindex 6bb94e3..17b5063 100644--- a/arch/arm/mach-msm/board-htcblackstone.c+++ b/arch/arm/mach-msm/board-htcblackstone.c@@ -334,7 +334,7 @@ static struct platform_device *devices[] __initdata = { &msm_device_htc_battery, &gpio_keys, &blac_snd,- &raphael_gps,+ //&raphael_gps, }; extern struct sys_timer msm_timer;diff --git a/arch/arm/mach-msm/board-htcdiamond.c b/arch/arm/mach-msm/board-htcdiamond.cindex f427294..2fedb13 100644--- a/arch/arm/mach-msm/board-htcdiamond.c+++ b/arch/arm/mach-msm/board-htcdiamond.c@@ -146,17 +146,85 @@ static struct msm_hsusb_platform_data msm_hsusb_pdata_adb = { .num_products = 0, }; ++#define PCOM_GPIO_CFG(a,b,c,d,e) DEX_GPIO_CFG(a,b,c,d,e,0)+static struct msm_gpio_config camera_off_gpio_table[] = {+ /* CAMERA */+ PCOM_GPIO_CFG(2, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* DAT2 */+ PCOM_GPIO_CFG(3, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* DAT3 */+ PCOM_GPIO_CFG(4, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* DAT4 */+ PCOM_GPIO_CFG(5, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* DAT5 */+ PCOM_GPIO_CFG(6, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* DAT6 */+ PCOM_GPIO_CFG(7, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* DAT7 */+ PCOM_GPIO_CFG(8, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* DAT8 */+ PCOM_GPIO_CFG(9, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* DAT9 */+ PCOM_GPIO_CFG(10, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* DAT10 */+ PCOM_GPIO_CFG(11, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* DAT11 */+ PCOM_GPIO_CFG(12, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* PCLK */+ PCOM_GPIO_CFG(13, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* HSYNC_IN */+ PCOM_GPIO_CFG(14, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* VSYNC_IN */+ PCOM_GPIO_CFG(15, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_4MA), /* MCLK */+};++static struct msm_gpio_config camera_on_gpio_table[] = {+ /* CAMERA */+ PCOM_GPIO_CFG(2, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), /* DAT2 */+ PCOM_GPIO_CFG(3, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), /* DAT3 */+ PCOM_GPIO_CFG(4, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), /* DAT4 */+ PCOM_GPIO_CFG(5, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), /* DAT5 */+ PCOM_GPIO_CFG(6, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), /* DAT6 */+ PCOM_GPIO_CFG(7, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), /* DAT7 */+ PCOM_GPIO_CFG(8, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), /* DAT8 */+ PCOM_GPIO_CFG(9, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), /* DAT9 */+ PCOM_GPIO_CFG(10, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), /* DAT10 */+ PCOM_GPIO_CFG(11, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), /* DAT11 */+ PCOM_GPIO_CFG(12, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_16MA), /* PCLK */+ PCOM_GPIO_CFG(13, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), /* HSYNC_IN */+ PCOM_GPIO_CFG(14, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), /* VSYNC_IN */+ PCOM_GPIO_CFG(15, 1, GPIO_OUTPUT, GPIO_PULL_DOWN, GPIO_16MA), /* MCLK */+};++static void config_gpio_table(struct msm_gpio_config *table, int len)+{+ int n;+ struct msm_gpio_config id;+ for(n = 0; n < len; n++) {+ id = table[n];+ msm_gpio_set_function( id );+ }+}++static void config_camera_on_gpios(void)+{+ config_gpio_table(camera_on_gpio_table,+ ARRAY_SIZE(camera_on_gpio_table));+}++static void config_camera_off_gpios(void)+{+ config_gpio_table(camera_off_gpio_table,+ ARRAY_SIZE(camera_off_gpio_table));+}++static struct msm_camera_sensor_info msm_camera_device = {+ .sensor_reset = RAPH100_CAM1_RST,+ .sensor_pwd = RAPH100_CAM_PWR1,+ //.vcm_pwd = VCM_PWDN;+ .config_gpio_on = config_camera_on_gpios,+ .config_gpio_off = config_camera_off_gpios,+ .sensor_name = "mt9t013",+ .flash_type = MSM_CAMERA_FLASH_NONE,+};+ static struct i2c_board_info i2c_devices[] = { { // LED & Backlight controller I2C_BOARD_INFO("microp-klt", 0x66), },-/* { I2C_BOARD_INFO("mt9t013", 0x6c>>1),- // .irq = TROUT_GPIO_TO_INT(TROUT_GPIO_CAM_BTN_STEP1_N),+ .platform_data = },-*/ { // Raphael NaviPad (cy8c20434) I2C_BOARD_INFO("raph_navi_pad", 0x62),@@ -200,6 +268,14 @@ static struct android_pmem_platform_data android_pmem_gpu1_pdata = { .cached = 0, }; +static struct android_pmem_platform_data android_pmem_camera_pdata = {+ .name = "pmem_camera",+ .start = MSM_PMEM_CAMERA_BASE,+ .size = MSM_PMEM_CAMERA_SIZE,+ .no_allocator = 1,+ .cached = 0,+};+ static struct platform_device android_pmem_device = { .name = "android_pmem", .id = 0,@@ -224,6 +300,12 @@ static struct platform_device android_pmem_gpu1_device = { .dev = { .platform_data = &android_pmem_gpu1_pdata }, }; +static struct platform_device android_pmem_camera_device = {+ .name = "android_pmem",+ .id = 3,+ .dev = { .platform_data = &android_pmem_camera_pdata },+};+ static smem_batt_t msm_battery_pdata = { .gpio_battery_detect = RAPH100_BAT_IRQ, .gpio_charger_enable = RAPH100_CHARGE_EN_N,@@ -348,6 +430,14 @@ static struct platform_device msm_device_buttons = { .platform_data = &button_data, } };++static struct platform_device diamond_camera = {+ .name = "camera",+ .dev = { + .platform_data = &msm_camera_device,+ },+};+ static struct pwr_sink diamond_pwrsink_table[] = { { .id = PWRSINK_AUDIO,@@ -465,6 +555,8 @@ static struct platform_device *devices[] __initdata = { &android_pmem_adsp_device, &android_pmem_gpu0_device, &android_pmem_gpu1_device,+ //&android_pmem_camera_device,+ &diamond_camera, &raphael_rfkill, &msm_device_smd, &msm_device_nand,@@ -479,7 +571,7 @@ static struct platform_device *devices[] __initdata = { #endif &msm_device_htc_battery, &raphael_snd,-// &raphael_gps, disable until it works+ &raphael_gps,// disable until it works &msm_device_buttons, #ifdef CONFIG_HTC_HEADSET &diamond_h2w,diff --git a/arch/arm/mach-msm/board-htcdiamond.h b/arch/arm/mach-msm/board-htcdiamond.hindex c2881d0..987937d 100644--- a/arch/arm/mach-msm/board-htcdiamond.h+++ b/arch/arm/mach-msm/board-htcdiamond.h@@ -30,11 +30,13 @@ #define MSM_FB_BASE MSM_PMEM_ADSP_BASE + MSM_PMEM_ADSP_SIZE #define MSM_FB_SIZE 0x200000 /* 2mb */ +#define MSM_PMEM_CAMERA_BASE MSM_FB_BASE + MSM_FB_SIZE+#define MSM_PMEM_CAMERA_SIZE 0x100000 /* 1mb */+ /* Define the EBI layout */ #define MSM_LINUX_BASE MSM_EBI_BASE #define MSM_LINUX_SIZE 0x6b00000 /* 107mb */ - #define MSM_RAM_CONSOLE_BASE 0x00800000 #define MSM_RAM_CONSOLE_SIZE 0x00100000 // 1M at 0x00800000 @@ -134,6 +136,7 @@ #define RAPH100_HP_PWR 89 +#define RAPH100_CAM_PWD 91 #define RAPH100_CAM1_RST 92 #define RAPH100_CAM2_RST 93 #define RAPH100_NAVI_IRQ 94diff --git a/arch/arm/mach-msm/board-htcraphael-gps.c b/arch/arm/mach-msm/board-htcraphael-gps.cindex fc5b7c6..6aa87b2 100644--- a/arch/arm/mach-msm/board-htcraphael-gps.c+++ b/arch/arm/mach-msm/board-htcraphael-gps.c@@ -78,7 +78,14 @@ pdsm_get_position (void) struct rpc_request_hdr hdr; uint32_t msg[28]; } msg;++ struct+ {+ struct rpc_reply_hdr hdr;+ uint32_t msg[90];+ } rep; int rc;+ int i; msg.msg[0] = cpu_to_be32 (0xa); /* unknown */ msg.msg[1] = cpu_to_be32 (0x0);@@ -109,10 +116,15 @@ pdsm_get_position (void) msg.msg[26] = cpu_to_be32 (SESSION_TIMEOUT); msg.msg[27] = cpu_to_be32 (PD_CLIENT_ID); rc =- msm_rpc_call (ept, GET_POSITION, &msg,- (28 * 4) + sizeof (struct rpc_request_hdr), 15 * HZ);+ msm_rpc_call_reply (ept, GET_POSITION, &msg,+ (28 * 4) + sizeof (struct rpc_request_hdr), &rep, sizeof(rep),15 * HZ); if (rc < 0) printk ("ERROR: %s:%d %d\n", __func__, __LINE__, rc);+ printk(KERN_INFO"get_position()={ hdr: {%d:%d:%d}\n", rep.hdr.xid, rep.hdr.type, rep.hdr.reply_stat);+ for(i=0;i<(rc-sizeof(struct rpc_reply_hdr))/4;++i) {+ printk(KERN_INFO "msg[%d]=%d\n", i, rep.msg[i]);+ }+ } @@ -222,8 +234,7 @@ gps_enable (void) #error "Unknown AMSS version" #endif msg.msg[5] = cpu_to_be32 (0xffffffff);- rc =- msm_rpc_call_reply (ept, CLIENT_PD_REG, &msg, 6*4 + sizeof (struct rpc_request_hdr),+ rc = msm_rpc_call_reply (ept, CLIENT_PD_REG, &msg, 6*4 + sizeof (struct rpc_request_hdr), &rep, sizeof(rep), 5 * HZ); if (rc < 0) printk ("ERROR: %s:%d %d\n", __func__, __LINE__, rc);@@ -359,126 +370,6 @@ struct gps_kernel_state static struct gps_kernel_state global_state; static struct gps_kernel_state *state = &global_state; -static void-handle_sat_data (int last, int index, int num, struct sat_info sats[])-{- int i;-- spin_lock (&state->lock);-- for (i = 0; i < num; i++)- {- state->user_state.sat_state[i + index].sat_no- = sats[i].prn;- state->user_state.sat_state[i + index].signal_strength- = 0;- }-- if (last)- {- for (i = i + index; i < MAX_SATELLITES; i++)- {- state->user_state.sat_state[i].sat_no = 0;- state->user_state.sat_state[i].signal_strength = 0;- }-- atomic_inc (&state->updates);- wake_up (&state->wq);- }-- spin_unlock (&state->lock);-}--static void-handle_pos_data (int32_t lat, int32_t lon, uint32_t time, float altitude,- float accuracy)-{-- /* Drop the data is we're supposed to be off */- if (!state->state)- return;-- spin_lock (&state->lock);-- state->user_state.time = time;- state->user_state.lat =lat;- state->user_state.lng =lon;- printk ("time=%d lat=%d lng=%d\n",- state->user_state.time,- state->user_state.lat,- state->user_state.lng);-- atomic_inc (&state->updates);- wake_up (&state->wq);-- spin_unlock (&state->lock);-}--static void-handle_bearing_speed (float bearing, float speed)-{- //don't do anything. Need to extend the userspace interface :(-}--/* This thread exists to read the data that comes from AMSS */-static int-gps_rpc_thread (void *data)-{- struct msm_rpc_endpoint *ept = (struct msm_rpc_endpoint *) data;- struct rpc_request_hdr *hdr = NULL;-- /* We're not going to do anything but ack.- * Kaiser data comes form NMEA, currently */- while (!kthread_should_stop ())- {-#if 0- msm_rpc_read (ept, (void **) &hdr, -1, 15*HZ);-- rpc_ack (be32_to_cpu (hdr->xid));- kfree (hdr);-#endif-// printk("gps_rpc_thread called\n");- }-- return 0;-}--static int-gps_nmea_thread (void *data)-{- int fd;- int count;- char buf[256];- struct nmea_state nmea;--#if 0- fd = sys_open ("/dev/smd27", O_RDONLY, 0);- if (fd < 0)- printk ("Unable to open NMEA device %d\n", fd);- nmea_init (&nmea, NULL, handle_pos_data, handle_sat_data,- handle_bearing_speed);-#endif-- while (!kthread_should_stop ())- {-// if (state->state == GPS_STATE_ON)- pdsm_get_position ();- msleep(1000);-#if 0 - do- {- count = sys_read (fd, buf, sizeof (buf));- }- while (count == -EINTR);- printk ("NMEA read. Size %d\n", count);- nmea_parse (&nmea, buf, count);-#endif- }--// sys_close (fd);-- return 0;-} struct gps_fd_state {@@ -589,31 +480,12 @@ vogue_gps_open (struct inode *inode, struct file *file) static int thread_started = 0; struct gps_fd_state *fd_state; int rc;+ static struct msm_rpc_endpoint *rpc_cb_server_client; -static struct msm_rpc_endpoint *rpc_cb_server_client; if (!thread_started) {- /* Only do this on the first open. This is less than ideal */-// msm_rpc_register_server (NULL, RPC_PDAPI_CB_PROG, 0); -#if 0- rpc_cb_server_client = msm_rpc_open();- if (IS_ERR(rpc_cb_server_client)) {- rpc_cb_server_client = NULL;- rc = PTR_ERR(rpc_cb_server_client);- printk("gps: could not create rpc server (%d)\n", rc);- return -1;- }-- rc = msm_rpc_register_server(rpc_cb_server_client,- RPC_PDAPI_CB_PROG,- 0);- if (rc) {- printk("gps: could not register callback server (%d)\n", rc);- return -1;- }-#endif ept = msm_rpc_connect (RPC_PDAPI_PROG, 0, MSM_RPC_UNINTERRUPTIBLE); if (!ept || IS_ERR (ept)) {@@ -621,9 +493,8 @@ static struct msm_rpc_endpoint *rpc_cb_server_client; return -1; } -// kthread_run (gps_rpc_thread, ept, "gps_thread");-// kthread_run (gps_nmea_thread, ept, "gps_nmea_thread"); }+ gps_enable(); fd_state = kmalloc (sizeof (struct gps_fd_state), GFP_KERNEL); fd_state->last_read = 0;diff --git a/arch/arm/mach-msm/smd_rpcrouter.c b/arch/arm/mach-msm/smd_rpcrouter.cindex ee2ffb1..f5b0594 100644--- a/arch/arm/mach-msm/smd_rpcrouter.c+++ b/arch/arm/mach-msm/smd_rpcrouter.c@@ -955,22 +955,32 @@ int msm_rpc_call_reply(struct msm_rpc_endpoint *ept, uint32_t proc, struct rpc_reply_hdr *reply; int rc; + printk(KERN_INFO "%s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__); if (request_size < sizeof(*req)) return -ETOOSMALL;+ printk(KERN_INFO "%s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__); if (ept->dst_pid == 0xffffffff) return -ENOTCONN;+ printk(KERN_INFO "%s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__); memset(req, 0, sizeof(*req));+ printk(KERN_INFO "%s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__); req->xid = cpu_to_be32(atomic_add_return(1, &next_xid));+ printk(KERN_INFO "%s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__); req->rpc_vers = cpu_to_be32(2);+ printk(KERN_INFO "%s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__); req->prog = ept->dst_prog;+ printk(KERN_INFO "%s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__); req->vers = ept->dst_vers;+ printk(KERN_INFO "%s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__); req->procedure = cpu_to_be32(proc);+ printk(KERN_INFO "%s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__); rc = msm_rpc_write(ept, req, request_size); if (rc < 0) return rc;+ printk(KERN_INFO "%s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__); for (;;) { rc = msm_rpc_read(ept, (void*) &reply, -1, timeout);diff --git a/drivers/i2c/chips/mt9t013.c b/drivers/i2c/chips/mt9t013.cindex a0d110c..477550e 100755--- a/drivers/i2c/chips/mt9t013.c+++ b/drivers/i2c/chips/mt9t013.c@@ -41,7 +41,8 @@ static const uint32_t fps_divider = 1; -#define AF_I2C_ID 0x18 /* actuator's slave address */+//#define AF_I2C_ID 0x18 /* actuator's slave address */+#define AF_I2C_ID 0x38 //TODO:what is it ? static struct i2c_client *pclient; @@ -176,16 +177,28 @@ DECLARE_MUTEX(sem); static struct msm_camera_device_platform_data *cam; #define out_dword(addr, val) \+ printk(KERN_INFO "mt9t013: writing %x to %x\n", val, addr); \ (*((volatile unsigned long *)(addr)) = ((unsigned long)(val))) #define out_dword_masked_ns(io, mask, val, current_reg_content) \ (void) out_dword(io, ((current_reg_content & (uint32_t)(~(mask))) | \ ((uint32_t)((val) & (mask))))) -#define __inpdw(port) (*((volatile uint32_t *) (port)))+/*+#define __inpdw(port) \+ printk(KERN_INFO "mt9t013: reading %x\n", port); \+ (*((volatile uint32_t *) (port)))+*/+uint32_t __inpdw(int port) {+ printk(KERN_INFO "mt9t013: reading %x\n", port);+ uint32_t val=(*((volatile uint32_t *) (port)));+ printk(KERN_INFO "mt9t013: succeeded\n", port);+ return val;+} #define in_dword_masked(addr, mask) (__inpdw(addr) & (uint32_t)mask ) -#define HWIO_MDDI_CAMIF_CFG_ADDR MSM_MDC_BASE+int camif_cfg_addr=0;+#define HWIO_MDDI_CAMIF_CFG_ADDR camif_cfg_addr //MSM_MDC_BASE #define HWIO_MDDI_CAMIF_CFG_RMSK 0x1fffff #define HWIO_MDDI_CAMIF_CFG_IN \ in_dword_masked(HWIO_MDDI_CAMIF_CFG_ADDR, HWIO_MDDI_CAMIF_CFG_RMSK)@@ -586,11 +599,13 @@ static int mt9t013_release(struct inode *ip, struct file *fp) static int mt9t013_camif_pad_reg_reset(void) {+ printk(KERN_ERR "ok:%s:%d\n", __FILE__, __LINE__); int rc = clk_select(1); if(rc < 0) { printk(KERN_ERR "mt9t013 error switching to internal clock\n"); return rc; }+ printk(KERN_ERR "ok:%s:%d\n", __FILE__, __LINE__); HWIO_OUTM (MDDI_CAMIF_CFG, HWIO_FMSK (MDDI_CAMIF_CFG, CAM_SEL) | HWIO_FMSK (MDDI_CAMIF_CFG, CAM_PCLK_SRC_SEL) |@@ -598,18 +613,22 @@ static int mt9t013_camif_pad_reg_reset(void) 1 << HWIO_SHFT (MDDI_CAMIF_CFG, CAM_SEL) | 3 << HWIO_SHFT (MDDI_CAMIF_CFG, CAM_PCLK_SRC_SEL) | 0 << HWIO_SHFT (MDDI_CAMIF_CFG, CAM_PCLK_INVERT));+ printk(KERN_ERR "ok:%s:%d\n", __FILE__, __LINE__); msleep(10); HWIO_OUTM (MDDI_CAMIF_CFG, HWIO_FMSK (MDDI_CAMIF_CFG, CAM_PAD_REG_SW_RESET), 1 << HWIO_SHFT (MDDI_CAMIF_CFG, CAM_PAD_REG_SW_RESET));+ printk(KERN_ERR "ok:%s:%d\n", __FILE__, __LINE__); msleep(10); HWIO_OUTM (MDDI_CAMIF_CFG, HWIO_FMSK (MDDI_CAMIF_CFG, CAM_PAD_REG_SW_RESET), 0 << HWIO_SHFT (MDDI_CAMIF_CFG, CAM_PAD_REG_SW_RESET));+ printk(KERN_ERR "ok:%s:%d\n", __FILE__, __LINE__); msleep(10); rc = clk_select(0); /* external */+ printk(KERN_ERR "ok:%s:%d\n", __FILE__, __LINE__); if(rc < 0) { printk(KERN_ERR "mt9t013 error switching to external clock\n"); return rc;@@ -818,6 +837,7 @@ static int mt9t013_lens_power(int on) { int rc; printk(KERN_INFO "mt9t013: lens power %d\n", on);+ return 0; rc = gpio_request(cam->vcm_pwd, "mt9t013"); if (!rc) gpio_direction_output(cam->vcm_pwd, !on);@@ -1327,6 +1347,7 @@ static int mt9t013_plat_probe(struct platform_device *pdev __attribute__((unused { printk(KERN_INFO "pdev->dev.platform_data is not NULL\n"); cam = pdev->dev.platform_data;+ camif_cfg_addr=ioremap(0x3A00000, MSM_MDC_SIZE); rc = i2c_add_driver(&mt9t013_driver); } return rc;diff --git a/drivers/video/msm/mddi_client_epson.c b/drivers/video/msm/mddi_client_epson.cindex 21dd504..b6f93c3 100644--- a/drivers/video/msm/mddi_client_epson.c+++ b/drivers/video/msm/mddi_client_epson.c@@ -99,7 +99,7 @@ static void epson_wait_vsync(struct msm_panel_data *panel_data) static int epson_suspend(struct msm_panel_data *panel_data) {-printk("epson_suspend\n");return 0;+printk("epson_suspend\n"); struct panel_info *panel = container_of(panel_data, struct panel_info, panel_data); struct msm_mddi_client_data *client_data = panel->client_data;@@ -120,7 +120,7 @@ printk("epson_suspend\n");return 0; static int epson_resume(struct msm_panel_data *panel_data) {-printk("epson_resume\n");return 0;+printk("epson_resume\n"); struct panel_info *panel = container_of(panel_data, struct panel_info, panel_data); struct msm_mddi_client_data *client_data = panel->client_data;