static int __init mipi_video_sony_wxga_init(void) { int ret; #ifdef CONFIG_FB_MSM_MIPI_PANEL_DETECT if (msm_fb_detect_client("mipi_video_sony_wxga")) return 0; #endif /* Try-case ref-2. 20110420, kkcho 3030->3035 qualcomm-patch이후, mipi_dsi.c의 mipi_dsi_phy_pll_config(panel_info->clk_rate); 코드를 막아야 함. 그렇지 않으면.. clk value변경으로 화면 안나옴. */ pinfo.xres = 800; pinfo.yres = 1280; /* * * Panel's Horizontal input timing requirement is to * include dummy(pad) data of 200 clk in addition to * width and porch/sync width values */ #if defined (MIPI_CLOCK_500MBPS) pinfo.lcdc.xres_pad = 252; pinfo.lcdc.yres_pad = 0; #endif pinfo.type = MIPI_VIDEO_PANEL; pinfo.pdest = DISPLAY_1; pinfo.wait_cycle = 0; pinfo.bpp = 24; #if defined (MIPI_CLOCK_500MBPS) pinfo.lcdc.h_back_porch = 10; pinfo.lcdc.h_front_porch = 16; pinfo.lcdc.h_pulse_width = 2; pinfo.lcdc.v_back_porch = 2; pinfo.lcdc.v_front_porch = 2; pinfo.lcdc.v_pulse_width = 2; #endif pinfo.lcdc.border_clr = 0; /* blk */ pinfo.lcdc.underflow_clr = 0x00; /* black */ pinfo.lcdc.hsync_skew = 0; pinfo.bl_max = 28;//24;//BL_MAX; pinfo.bl_min = 1; pinfo.fb_num = 2; #if defined (MIPI_CLOCK_500MBPS) pinfo.clk_rate = 500000000; #endif //pinfo.lcd.vsync_enable = FALSE; //pinfo.lcd.hw_vsync_mode = FALSE; pinfo.mipi.mode = DSI_VIDEO_MODE; #if defined (MIPI_CLOCK_500MBPS) pinfo.mipi.pulse_mode_hsa_he = TRUE; pinfo.mipi.hfp_power_stop = FALSE; pinfo.mipi.hbp_power_stop = FALSE; 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; #endif 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; pinfo.mipi.data_lane2 = TRUE; pinfo.mipi.data_lane3 = TRUE; #if defined (MIPI_CLOCK_500MBPS) //500Mbps pinfo.mipi.t_clk_post = 0x22; pinfo.mipi.t_clk_pre = 0x30; //pinfo.mipi.t_clk_pre = 0x41; //490Mbps //pinfo.mipi.t_clk_post = 0x22; //pinfo.mipi.t_clk_pre = 0x40; #endif pinfo.mipi.stream = 0; /* dma_p */ pinfo.mipi.mdp_trigger = DSI_CMD_TRIGGER_SW; pinfo.mipi.dma_trigger = DSI_CMD_TRIGGER_SW; pinfo.mipi.dsi_phy_db = &dsi_video_mode_phy_db; pinfo.mipi.frame_rate = 60; pinfo.lcd.refx100 = 6000; /* 2011.07.29 lived */ ret = mipi_sony_device_register(&pinfo, MIPI_DSI_PRIM, MIPI_DSI_PANEL_WVGA); if (ret) printk(KERN_ERR "%s: failed to register device!\n", __func__); return ret; }
static int __init mipi_video_sony_wxga_init(void) { int ret; #ifdef CONFIG_FB_MSM_MIPI_PANEL_DETECT if (msm_fb_detect_client("mipi_video_sony_wxga")) return 0; #endif pinfo.xres = 800; pinfo.yres = 1280; /* * * 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 = 200; //pinfo.mipi.yres_pad = 0; 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; pinfo.lcdc.h_back_porch = 10; pinfo.lcdc.h_front_porch = 16; pinfo.lcdc.h_pulse_width = 2; pinfo.lcdc.v_back_porch = 2; pinfo.lcdc.v_front_porch = 2; pinfo.lcdc.v_pulse_width = 2; 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_450MBPS pinfo.clk_rate = 450000000; #elif defined MIPI_CLOCK_500MBPS pinfo.clk_rate = 500000000; #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 = FALSE; 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; pinfo.mipi.data_lane2 = TRUE; pinfo.mipi.data_lane3 = TRUE; #if defined MIPI_CLOCK_450MBPS pinfo.mipi.t_clk_post = 0x21; pinfo.mipi.t_clk_pre = 0x2f; #elif defined MIPI_CLOCK_500MBPS pinfo.mipi.t_clk_post = 0x21; pinfo.mipi.t_clk_pre = 0x30; #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.dsi_phy_db = &dsi_video_mode_phy_db; pinfo.mipi.tx_eot_append = TRUE; ret = mipi_sony_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_sony_cmd_720p_init(void) { int ret; printk(KERN_INFO "%s: panel info intializing!\n",__func__); pinfo.xres = 720; pinfo.yres = 1280; pinfo.type = MIPI_CMD_PANEL; pinfo.pdest = DISPLAY_1; pinfo.wait_cycle = 0; pinfo.bpp = 24; pinfo.lcdc.border_clr = 0; /* blk */ pinfo.lcdc.underflow_clr = 0xff; /* blue */ pinfo.lcdc.hsync_skew = 0; pinfo.bl_max = 255; /*16;*/ pinfo.bl_min = 1; pinfo.fb_num = 2; #ifdef CONFIG_MIPI_CLOCK_450MBPS pinfo.clk_rate = 450000000; #else pinfo.clk_rate = 500000000; #endif pinfo.lcd.vsync_enable = TRUE; pinfo.lcd.hw_vsync_mode = TRUE; pinfo.lcd.refx100 = 6700; /* adjust refx100 to prevent tearing */ #if 0 pinfo.lcdc.h_back_porch = 18; pinfo.lcdc.h_front_porch = 156; pinfo.lcdc.h_pulse_width = 3; pinfo.lcdc.v_back_porch = 3; pinfo.lcdc.v_front_porch = 5; pinfo.lcdc.v_pulse_width = 2; #else pinfo.lcd.v_back_porch = 1; pinfo.lcd.v_front_porch =1; pinfo.lcd.v_pulse_width = 2; #endif pinfo.mipi.mode = DSI_CMD_MODE; pinfo.mipi.dst_format = DSI_CMD_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; pinfo.mipi.data_lane2 = TRUE; pinfo.mipi.data_lane3 = TRUE; #ifdef CONFIG_MIPI_CLOCK_450MBPS pinfo.mipi.t_clk_post = 0x21; pinfo.mipi.t_clk_pre = 0x2f; #else pinfo.mipi.t_clk_post = 0x21; pinfo.mipi.t_clk_pre = 0x30; #endif pinfo.mipi.stream = 0; pinfo.mipi.mdp_trigger = DSI_CMD_TRIGGER_NONE; pinfo.mipi.dma_trigger = DSI_CMD_TRIGGER_SW; pinfo.mipi.frame_rate = 62; pinfo.mipi.te_sel = 1; pinfo.mipi.interleave_max = 1; pinfo.mipi.insert_dcs_cmd = TRUE; pinfo.mipi.wr_mem_continue = 0x3c; pinfo.mipi.wr_mem_start = 0x2c; pinfo.mipi.esc_byte_ratio = 6; pinfo.mipi.dsi_phy_db = &dsi_cmd_mode_phy_db; ret = mipi_sony_device_register(&pinfo, MIPI_DSI_PRIM, MIPI_DSI_PANEL_720P_PT); if (ret) printk(KERN_ERR "%s: failed to register device!\n", __func__); return ret; }
static int __init mipi_cmd_sony_wvga_pt_init(void) { int ret; if (msm_fb_detect_client("mipi_cmd_sony_wvga")) return 0; MSM_FB_INFO("[DISP] panel: mipi_cmd_sony_wvga\n"); pinfo.xres = 480; pinfo.yres = 800; pinfo.type = MIPI_CMD_PANEL; pinfo.pdest = DISPLAY_1; pinfo.wait_cycle = 0; pinfo.bpp = 24; pinfo.lcdc.h_back_porch = 2; pinfo.lcdc.h_front_porch = 2; pinfo.lcdc.h_pulse_width = 2; pinfo.lcdc.v_back_porch = 2; pinfo.lcdc.v_front_porch = 2; pinfo.lcdc.v_pulse_width = 2; pinfo.lcdc.border_clr = 0; /* blk */ pinfo.lcdc.underflow_clr = 0xff; /* blue */ pinfo.lcdc.hsync_skew = 0; pinfo.lcd.v_back_porch = 2; pinfo.lcd.v_front_porch = 2; pinfo.lcd.v_pulse_width = 2; pinfo.bl_max = 255; pinfo.bl_min = 1; pinfo.fb_num = 2; pinfo.clk_rate = 499000000; pinfo.lcd.vsync_enable = TRUE; pinfo.lcd.hw_vsync_mode = TRUE; pinfo.lcd.refx100 = 6500; /* adjust refx100 to prevent tearing */ pinfo.mipi.mode = DSI_CMD_MODE; pinfo.mipi.dst_format = DSI_CMD_DST_FORMAT_RGB888; pinfo.mipi.vc = 0; pinfo.mipi.rgb_swap = DSI_RGB_SWAP_RGB; pinfo.mipi.data_lane0 = TRUE; pinfo.mipi.t_clk_post = 0x20; pinfo.mipi.t_clk_pre = 0x2c; pinfo.mipi.stream = 0; /* dma_p */ pinfo.mipi.mdp_trigger = DSI_CMD_TRIGGER_SW; pinfo.mipi.dma_trigger = DSI_CMD_TRIGGER_SW; pinfo.mipi.te_sel = 1; /* TE from vsycn gpio */ pinfo.mipi.interleave_max = 1; pinfo.mipi.insert_dcs_cmd = TRUE; pinfo.mipi.wr_mem_continue = 0x3c; pinfo.mipi.wr_mem_start = 0x2c; pinfo.mipi.dsi_phy_db = &dsi_cmd_mode_phy_db; pinfo.mipi.tx_eot_append = 0x01; pinfo.mipi.rx_eot_ignore = 0; pinfo.mipi.dlane_swap = 0x01; ret = mipi_sony_device_register(&pinfo, MIPI_DSI_PRIM, MIPI_DSI_PANEL_WVGA_PT); if (ret) pr_err("%s: failed to register device!\n", __func__); return ret; }