static int __init mipi_video_lgd_wvga_pt_init(void) { int ret; #ifdef CONFIG_FB_MSM_MIPI_PANEL_DETECT if (msm_fb_detect_client("mipi_video_lgd_wvga")) return 0; #endif pinfo.xres = 480; pinfo.yres = 800; /* * * Panel's Horizontal input timing requirement is to * include dummy(pad) data of 200 clk in addition to * width and porch/sync width values */ pinfo.mipi.xres_pad = 0; pinfo.mipi.yres_pad = 0; pinfo.type = MIPI_VIDEO_PANEL; pinfo.pdest = DISPLAY_1; pinfo.wait_cycle = 0; pinfo.bpp = 24; #if 0 pinfo.lcdc.h_back_porch = 84;//32; pinfo.lcdc.h_front_porch = 74;//64; pinfo.lcdc.h_pulse_width = 20;//16; pinfo.lcdc.v_back_porch = 20; pinfo.lcdc.v_front_porch = 10; pinfo.lcdc.v_pulse_width = 8; #else #if defined(MIPI_CLOCK_370MBPS) pinfo.lcdc.h_back_porch = 106; pinfo.lcdc.h_front_porch = 12;//8->14 pinfo.lcdc.h_pulse_width = 30; pinfo.lcdc.v_back_porch = 8; pinfo.lcdc.v_front_porch = 8; pinfo.lcdc.v_pulse_width = 2; #else pinfo.lcdc.h_back_porch = 86; pinfo.lcdc.h_front_porch = 8;//8->14 pinfo.lcdc.h_pulse_width = 20; pinfo.lcdc.v_back_porch = 8; pinfo.lcdc.v_front_porch = 8; pinfo.lcdc.v_pulse_width = 2; #endif #endif pinfo.lcdc.border_clr = 0; /* blk */ pinfo.lcdc.underflow_clr = 0xff; /* blue */ pinfo.lcdc.hsync_skew = 0; pinfo.bl_max = 16; pinfo.bl_min = 1; pinfo.fb_num = 2; #if defined(MIPI_CLOCK_370MBPS) pinfo.clk_rate = 370000000; #elif defined(MIPI_CLOCK_350MBPS) pinfo.clk_rate = 350000000; #elif defined(MIPI_CLOCK_334MBPS) pinfo.clk_rate = 334000000; #elif defined(MIPI_CLOCK_330MBPS) pinfo.clk_rate = 330000000; #elif defined(MIPI_CLOCK_327MBPS) pinfo.clk_rate = 327000000; #elif defined(MIPI_CLOCK_328MBPS) pinfo.clk_rate = 328000000; #elif defined(MIPI_CLOCK_320MBPS) pinfo.clk_rate = 320000000; #else pinfo.clk_rate = 300000000; #endif pinfo.mipi.mode = DSI_VIDEO_MODE; pinfo.mipi.pulse_mode_hsa_he = TRUE; pinfo.mipi.hfp_power_stop = FALSE; pinfo.mipi.hbp_power_stop = TRUE; pinfo.mipi.hsa_power_stop = TRUE; pinfo.mipi.eof_bllp_power_stop = TRUE; pinfo.mipi.bllp_power_stop = TRUE; pinfo.mipi.traffic_mode = DSI_BURST_MODE; pinfo.mipi.dst_format = DSI_VIDEO_DST_FORMAT_RGB888; pinfo.mipi.vc = 0; pinfo.mipi.rgb_swap = DSI_RGB_SWAP_RGB; pinfo.mipi.data_lane0 = TRUE; pinfo.mipi.data_lane1 = TRUE; #if defined(MIPI_CLOCK_350MBPS) pinfo.mipi.t_clk_post =0x21; pinfo.mipi.t_clk_pre =0x2e; #elif defined(MIPI_CLOCK_370MBPS) pinfo.mipi.t_clk_post =0x21; pinfo.mipi.t_clk_pre =0x2e; #elif defined(MIPI_CLOCK_334MBPS) pinfo.mipi.t_clk_post =0x21; pinfo.mipi.t_clk_pre =0x2e; #elif defined(MIPI_CLOCK_330MBPS) pinfo.mipi.t_clk_post =0x21; pinfo.mipi.t_clk_pre =0x2e; #elif defined(MIPI_CLOCK_327MBPS) pinfo.mipi.t_clk_post =0x21; pinfo.mipi.t_clk_pre =0x2d; #elif defined(MIPI_CLOCK_328MBPS) pinfo.mipi.t_clk_post =0x21; pinfo.mipi.t_clk_pre =0x2d; #elif defined(MIPI_CLOCK_320MBPS) pinfo.mipi.t_clk_post =0x21; pinfo.mipi.t_clk_pre =0x2d; #else pinfo.mipi.t_clk_post =0x21; pinfo.mipi.t_clk_pre =0x2d; #endif pinfo.mipi.stream = 0; /* dma_p */ pinfo.mipi.mdp_trigger = 0; pinfo.mipi.dma_trigger = DSI_CMD_TRIGGER_SW; // pinfo.mipi.frame_rate = 60; pinfo.mipi.frame_rate = 56; pinfo.mipi.dsi_phy_db = &dsi_video_mode_phy_db; pinfo.mipi.tx_eot_append = TRUE; pinfo.mipi.force_clk_lane_hs = 1; ret = mipi_lgd_device_register(&pinfo, MIPI_DSI_PRIM, MIPI_DSI_PANEL_WVGA_PT); if (ret) printk(KERN_ERR "%s: failed to register device!\n", __func__); return ret; }
static int __init mipi_video_lgd_wvga_pt_init(void) { int ret; #ifdef CONFIG_FB_MSM_MIPI_PANEL_DETECT if (msm_fb_detect_client("mipi_wvga_lgd_wvga")) return 0; #endif pinfo.xres = 480; pinfo.yres = 800; pinfo.type = MIPI_VIDEO_PANEL; pinfo.pdest = DISPLAY_1; pinfo.wait_cycle = 0; pinfo.bpp = 24; pinfo.lcdc.h_back_porch = 64;//64;//80;//16; pinfo.lcdc.h_front_porch = 2;//48;//16; pinfo.lcdc.h_pulse_width = 1;//32;//10; pinfo.lcdc.v_back_porch = 15;//2;//8; pinfo.lcdc.v_front_porch = 5;//8; pinfo.lcdc.v_pulse_width = 3;//5; pinfo.lcdc.border_clr = 0; /* blk */ pinfo.lcdc.underflow_clr = 0xff; /* blue */ pinfo.lcdc.hsync_skew = 0; pinfo.bl_max = 128; pinfo.bl_min = 1; pinfo.fb_num = 1; pinfo.mipi.mode = DSI_VIDEO_MODE; pinfo.mipi.pulse_mode_hsa_he = FALSE; pinfo.mipi.hfp_power_stop = FALSE; pinfo.mipi.hbp_power_stop = FALSE; pinfo.mipi.hsa_power_stop = FALSE; pinfo.mipi.eof_bllp_power_stop = TRUE; pinfo.mipi.bllp_power_stop = FALSE; pinfo.mipi.traffic_mode = DSI_NON_BURST_SYNCH_EVENT; pinfo.mipi.dst_format = DSI_VIDEO_DST_FORMAT_RGB888; pinfo.mipi.vc = 0; pinfo.mipi.rgb_swap = DSI_RGB_SWAP_BGR; pinfo.mipi.data_lane0 = TRUE; pinfo.mipi.data_lane1 = TRUE; pinfo.mipi.data_lane2 = FALSE; pinfo.mipi.data_lane3 = FALSE; pinfo.mipi.t_clk_post = 34;//0x22; pinfo.mipi.t_clk_pre = 51;//0x32;//0x35 pinfo.mipi.frame_rate = 62; // pinfo.clk_rate = 300000000;//285 pinfo.clk_rate = 330000000; //[LS840-ICS][BSP][changed to fix cts issue,in order to achieve display refresh rate of 60fps] pinfo.mipi.stream = 0; /* dma_p */ pinfo.mipi.mdp_trigger = DSI_CMD_TRIGGER_SW; pinfo.mipi.dma_trigger = DSI_CMD_TRIGGER_SW; // pinfo.mipi.interleave_max = 1; // pinfo.mipi.wr_mem_continue = 0x3c; // pinfo.mipi.wr_mem_start = 0x2c; pinfo.mipi.dsi_phy_db = &dsi_video_mode_phy_db; ret = mipi_lgd_device_register(&pinfo, MIPI_DSI_PRIM, MIPI_DSI_PANEL_WVGA_PT); if (ret) printk(KERN_ERR "%s: failed to register device!\n", __func__); return ret; }