static void pwm_backlight_resume( struct early_suspend *h) { atomic_set(&suspend_flag,0); if (backlight_set == TRUE) { if (get_hw_lcd_ctrl_bl_type() == CTRL_BL_BY_LCD) { /* MIPI use two semaphores */ if(get_hw_lcd_interface_type() == LCD_IS_MIPI_CMD) { down(&mfd_local->dma->mutex); down(&mfd_local->sem); pwm_set_backlight(mfd_local); up(&mfd_local->sem); up(&mfd_local->dma->mutex); } /*add mipi video interface*/ else if(get_hw_lcd_interface_type() == LCD_IS_MIPI_VIDEO) { down(&mfd_local->dma->mutex); pwm_set_backlight(mfd_local); up(&mfd_local->dma->mutex); } /* MDDI don't use semaphore */ else if((get_hw_lcd_interface_type() == LCD_IS_MDDI_TYPE1) ||(get_hw_lcd_interface_type() == LCD_IS_MDDI_TYPE2)) { pwm_set_backlight(mfd_local); } else { down(&mfd_local->sem); pwm_set_backlight(mfd_local); up(&mfd_local->sem); } } else { down(&mfd_local->sem); pwm_set_backlight(mfd_local); up(&mfd_local->sem); } } }
/* * when setting backlight, release lock source */ void release_lock_source(struct msm_fb_data_type * mfd) { if (get_hw_lcd_interface_type() == LCD_IS_MIPI) { up(&mfd->sem); up(&mfd->dma->mutex); } else { up(&mfd->sem); } }
/* * when setting backlight, apply lock source */ void apply_lock_source(struct msm_fb_data_type * mfd) { if (get_hw_lcd_interface_type() == LCD_IS_MIPI) { down(&mfd->dma->mutex); down(&mfd->sem); } else { down(&mfd->sem); } }
static void camera_sensor_pwd_config(void) { /*distinguish the camera pwd gpio by lcd_interface_type*/ if(LCD_IS_RGB == get_hw_lcd_interface_type()) { int gpio_pwd = 37; /*camera pwd gpio for M660 is 32*/ if(machine_is_msm7x27a_M660()) { gpio_pwd = 32; } pr_err("camera sensor pwd gpio is %d\n",gpio_pwd); /*config the camera pwd gpio*/ //msm_camera_sensor_mt9e013_data.sensor_pwd = gpio_pwd; msm_camera_sensor_mt9p017_data.sensor_pwd = gpio_pwd; msm_camera_sensor_s5k4e1_data.sensor_pwd = gpio_pwd; msm_camera_sensor_s5k5ca_data.sensor_pwd = gpio_pwd; msm_camera_sensor_mt9t113_data.sensor_pwd = gpio_pwd; /* <DTS2012041003722 sibingsong 20120410 begin */ /* delete a line */ /* DTS2012041003722 sibingsong 20120410 end> */ } }
static int __init nt35510_init_type2(void) { int ret = 0; struct msm_panel_info *pinfo = NULL; bpp_type bpp = MDDI_OUT_16BPP; hw_lcd_interface_type mddi_port_type = get_hw_lcd_interface_type(); lcd_panel_wvga=get_lcd_panel_type(); if(LCD_NT35510_ALPHA_SI_WVGA_TYPE2 != lcd_panel_wvga) { return 0; } LCD_DEBUG("%s:------nt35510_init_type2------\n",__func__); /* Select which bpp accroding MDDI port type */ if(LCD_IS_MDDI_TYPE1 == mddi_port_type) { bpp = MDDI_OUT_16BPP; } else if(LCD_IS_MDDI_TYPE2 == mddi_port_type) { bpp = MDDI_OUT_24BPP; } else { bpp = MDDI_OUT_16BPP; } ret = platform_driver_register(&this_driver); if (!ret) { pinfo = &nt35510_panel_data_type2.panel_info; pinfo->xres = 480; pinfo->yres = 800; pinfo->type = MDDI_PANEL; pinfo->pdest = DISPLAY_1; pinfo->mddi.vdopkt = MDDI_DEFAULT_PRIM_PIX_ATTR; pinfo->wait_cycle = 0; pinfo->bpp = (uint32)bpp; pinfo->fb_num = 2; pinfo->clk_rate = 192000000; pinfo->clk_min = 192000000; pinfo->clk_max = 192000000; pinfo->lcd.vsync_enable = TRUE; pinfo->lcd.refx100 = 6000; pinfo->lcd.v_back_porch = 0; pinfo->lcd.v_front_porch = 0; pinfo->lcd.v_pulse_width = 22; pinfo->lcd.hw_vsync_mode = TRUE; pinfo->lcd.vsync_notifier_period = 0; pinfo->bl_max = 255; ret = platform_device_register(&this_device); if (ret) { platform_driver_unregister(&this_driver); } } return ret; }
void __init msm_fb_add_devices(void) { int rc = 0; msm7x27a_set_display_params(prim_panel_name); if (machine_is_msm7627a_qrd1()) platform_add_devices(qrd_fb_devices, ARRAY_SIZE(qrd_fb_devices)); else if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_evt()) { mipi_NT35510_pdata.bl_lock = 1; mipi_NT35516_pdata.bl_lock = 1; if (disable_splash) mdp_pdata.cont_splash_enabled = 0x0; platform_add_devices(evb_fb_devices, ARRAY_SIZE(evb_fb_devices)); } else if (machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) { sku3_lcdc_lcd_camera_power_init(); mdp_pdata.cont_splash_enabled = 0x0; platform_add_devices(qrd3_fb_devices, ARRAY_SIZE(qrd3_fb_devices)); } else { /* mipi video mode need setting for support continuous splash */ if (get_hw_lcd_interface_type() == LCD_IS_MIPI_VIDEO) { mdp_pdata.cont_splash_enabled = 0x1; } else { mdp_pdata.cont_splash_enabled = 0x0; } platform_add_devices(msm_fb_devices, ARRAY_SIZE(msm_fb_devices)); } msm_fb_register_device("mdp", &mdp_pdata); if (machine_is_msm7625a_surf() || machine_is_msm7x27a_surf() || machine_is_msm8625_surf() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) msm_fb_register_device("lcdc", &lcdc_pdata); #ifdef CONFIG_FB_MSM_MIPI_DSI msm_fb_register_device("mipi_dsi", &mipi_dsi_pdata); #endif if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_evt()) { gpio_reg_2p85v = regulator_get(&mipi_dsi_device.dev, "lcd_vdd"); if (IS_ERR(gpio_reg_2p85v)) pr_err("%s:ext_2p85v regulator get failed", __func__); gpio_reg_1p8v = regulator_get(&mipi_dsi_device.dev, "lcd_vddi"); if (IS_ERR(gpio_reg_1p8v)) pr_err("%s:ext_1p8v regulator get failed", __func__); if (mdp_pdata.cont_splash_enabled) { /*Enable EXT_2.85 and 1.8 regulators*/ rc = regulator_enable(gpio_reg_2p85v); if (rc < 0) pr_err("%s: reg enable failed\n", __func__); rc = regulator_enable(gpio_reg_1p8v); if (rc < 0) pr_err("%s: reg enable failed\n", __func__); } } }
static int __init hx8357c_init(void) { int ret = 0; struct msm_panel_info *pinfo = NULL; bpp_type bpp = MDDI_OUT_24BPP; hw_lcd_interface_type mddi_port_type = get_hw_lcd_interface_type(); lcd_panel_hvga = get_lcd_panel_type(); if( (MDDI_HX8357C_CHIMEI_HVGA != lcd_panel_hvga) && (MDDI_HX8357C_TIANMA_HVGA != lcd_panel_hvga) && (MDDI_HX8357C_CHIMEI_IPS_HVGA != lcd_panel_hvga)) { return 0; } LCD_DEBUG("%s:start init %s\n",__func__,this_device.name); /* Select which bpp accroding MDDI port type */ if(LCD_IS_MDDI_TYPE1 == mddi_port_type) { bpp = MDDI_OUT_16BPP; } else if(LCD_IS_MDDI_TYPE2 == mddi_port_type) { bpp = MDDI_OUT_24BPP; } else { bpp = MDDI_OUT_16BPP; } ret = platform_driver_register(&this_driver); if (!ret) { pinfo = &hx8357c_panel_data.panel_info; pinfo->xres = 320; pinfo->yres = 480; pinfo->type = MDDI_PANEL; pinfo->pdest = DISPLAY_1; pinfo->mddi.vdopkt = MDDI_DEFAULT_PRIM_PIX_ATTR; pinfo->wait_cycle = 0; /* <DTS2012041903882 sunkai 20120510 begin */ pinfo->bpp = (uint32)18; //24->18. use to change LCD display bit /* DTS2012041903882 sunkai 20120510 end> */ pinfo->fb_num = 2; pinfo->clk_rate = 160000000; pinfo->clk_min = 160000000; pinfo->clk_max = 160000000; pinfo->lcd.vsync_enable = TRUE; pinfo->lcd.refx100 = 6000; pinfo->lcd.v_back_porch = 0; pinfo->lcd.v_front_porch = 0; pinfo->lcd.v_pulse_width = 22; pinfo->lcd.hw_vsync_mode = TRUE; pinfo->lcd.vsync_notifier_period = 0; pinfo->bl_max = 255; ret = platform_device_register(&this_device); if (ret) { platform_driver_unregister(&this_driver); } } return ret; }
static int __init rsp61408_init(void) { int ret = 0; struct msm_panel_info *pinfo = NULL; bpp_type bpp = MDDI_OUT_24BPP; hw_lcd_interface_type mddi_port_type = get_hw_lcd_interface_type(); lcd_panel_wvga=get_lcd_panel_type(); if((MDDI_RSP61408_CHIMEI_WVGA != lcd_panel_wvga) && (MDDI_RSP61408_BYD_WVGA != lcd_panel_wvga)&& (MDDI_RSP61408_TRULY_WVGA != lcd_panel_wvga)) { return 0; } LCD_DEBUG("%s:start init %s\n",__func__,this_device.name); if(LCD_IS_MDDI_TYPE1 == mddi_port_type) { bpp = MDDI_OUT_16BPP; } else if(LCD_IS_MDDI_TYPE2 == mddi_port_type) { bpp = MDDI_OUT_24BPP; } else { bpp = MDDI_OUT_16BPP; } ret = platform_driver_register(&this_driver); if (!ret) { pinfo = &rsp61408_panel_data.panel_info; pinfo->xres = 480; pinfo->yres = 800; pinfo->type = MDDI_PANEL; pinfo->pdest = DISPLAY_1; pinfo->mddi.vdopkt = MDDI_DEFAULT_PRIM_PIX_ATTR; pinfo->wait_cycle = 0; pinfo->bpp = (uint32)bpp; pinfo->fb_num = 2; pinfo->clk_rate = 192000000; pinfo->clk_min = 192000000; pinfo->clk_max = 192000000; pinfo->lcd.vsync_enable = TRUE; pinfo->lcd.refx100 = 6000; pinfo->lcd.v_back_porch = 0; pinfo->lcd.v_front_porch = 0; pinfo->lcd.v_pulse_width = 22; pinfo->lcd.hw_vsync_mode = TRUE; pinfo->lcd.vsync_notifier_period = 0; pinfo->bl_max = 255; ret = platform_device_register(&this_device); if (ret) { platform_driver_unregister(&this_driver); } } return ret; }
static int __init hx8369a_init(void) { int ret = 0; struct msm_panel_info *pinfo = NULL; bpp_type bpp = MDDI_OUT_16BPP; hw_lcd_interface_type mddi_port_type = get_hw_lcd_interface_type(); lcd_panel_wvga=get_lcd_panel_type(); /*< DTS2012021602342 zhongjinrong 20120224 begin */ if(MDDI_HX8369A_TIANMA_WVGA != lcd_panel_wvga) /* DTS2012021602342 zhongjinrong 20120224 end >*/ { return 0; } LCD_DEBUG("%s:start init %s\n",__func__,this_device.name); /* Select which bpp accroding MDDI port type */ if(LCD_IS_MDDI_TYPE1 == mddi_port_type) { bpp = MDDI_OUT_16BPP; } else if(LCD_IS_MDDI_TYPE2 == mddi_port_type) { bpp = MDDI_OUT_24BPP; } else { bpp = MDDI_OUT_16BPP; } ret = platform_driver_register(&this_driver); if (!ret) { pinfo = &hx8369a_panel_data.panel_info; pinfo->xres = 480; pinfo->yres = 800; pinfo->type = MDDI_PANEL; pinfo->pdest = DISPLAY_1; pinfo->mddi.vdopkt = MDDI_DEFAULT_PRIM_PIX_ATTR; pinfo->wait_cycle = 0; pinfo->bpp = (uint32)bpp; pinfo->fb_num = 2; pinfo->clk_rate = 192000000; pinfo->clk_min = 192000000; pinfo->clk_max = 192000000; pinfo->lcd.vsync_enable = TRUE; pinfo->lcd.refx100 = 6000; pinfo->lcd.v_back_porch = 0; pinfo->lcd.v_front_porch = 0; pinfo->lcd.v_pulse_width = 22; pinfo->lcd.hw_vsync_mode = TRUE; pinfo->lcd.vsync_notifier_period = 0; pinfo->bl_max = 255; ret = platform_device_register(&this_device); if (ret) { platform_driver_unregister(&this_driver); LCD_DEBUG("%s: Failed on platform_device_register(): rc=%d \n",__func__, ret); } } return ret; }