static ssize_t color_engine_store_on_off(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int on_off; if (!count) return -EINVAL; pr_info("%s received (prev color_engine_on: %s)\n", __func__, is_color_engine_on ? "ON" : "OFF"); on_off = simple_strtoul(buf, NULL, 10); printk(KERN_ERR "color_engine_on : %d", on_off); if (on_off == 1) { mipi_lgit_lcd_color_engine_on(); } else if (on_off == 0) mipi_lgit_lcd_color_engine_off(); return count; }
int32_t imx132_sensor_power_down(struct msm_sensor_ctrl_t *s_ctrl) { int32_t rc = 0; struct msm_camera_sensor_info *data = s_ctrl->sensordata; CDBG("%s\n", __func__); pr_err("%s\n", __func__); /* LGE_CHANGE_S, [email protected], 2012-10-31, Wise screen / Because of the display engine */ sub_cam_id_for_keep_screen_on = -1; /* LGE_CHANGE_E, [email protected], 2012-10-31, Wise screen / Because of the display engine */ /*LGE_UPDATE_S Color Engine Switch for camera, 2012.11.19, [email protected]*/ #ifdef LGIT_COLOR_ENGINE_SWITCH if(system_state != SYSTEM_BOOTING) { mipi_lgit_lcd_color_engine_on(); } #endif /*LGE_UPDATE_E Color Engine Switch for camera, 2012.11.19, [email protected]*/ if (data->sensor_platform_info->i2c_conf && data->sensor_platform_info->i2c_conf->use_i2c_mux) imx132_msm_sensor_disable_i2c_mux( data->sensor_platform_info->i2c_conf); if (data->sensor_platform_info->ext_power_ctrl != NULL) data->sensor_platform_info->ext_power_ctrl(0); msm_cam_clk_enable(&s_ctrl->sensor_i2c_client->client->dev, imx132_cam_clk_info, s_ctrl->cam_clk, ARRAY_SIZE(imx132_cam_clk_info), 0); /* LGE_CHANGE_S, increase timing margin, 2012.06.19, [email protected] */ usleep(5); /* LGE_CHANGE_E, increase timing margin, 2012.06.19, [email protected] */ #if defined(CONFIG_MACH_APQ8064_GKKT) || defined(CONFIG_MACH_APQ8064_GKSK) || defined(CONFIG_MACH_APQ8064_GKU) || defined(CONFIG_MACH_APQ8064_GKATT) if(lge_get_board_revno() >= HW_REV_C ||lge_get_board_revno() == HW_REV_1_0){ LDBGI("%s: Revision [%d] MSM_CAM2_RST_EN GPIO No.%d\n",__func__, lge_get_board_revno(), MSM_CAM2_RST_EN ); rc = gpio_direction_output(MSM_CAM2_RST_EN, 0 ); } #elif defined(CONFIG_MACH_APQ8064_GVDCM) if(lge_get_board_revno() >= HW_REV_C){ LDBGI("%s: Revision [%d] MSM_CAM2_RST_EN GPIO No.%d\n",__func__, lge_get_board_revno(), MSM_CAM2_RST_EN ); rc = gpio_direction_output(MSM_CAM2_RST_EN, 0 ); } #endif else { msm_camera_config_gpio_table(data, 0); } /* LGE_CHANGE_S, Avoid Kernel Panic, 2012.11.12, jungki.kim[Start] */ if(s_ctrl->reg_ptr != NULL) { msm_camera_enable_vreg(&s_ctrl->sensor_i2c_client->client->dev, s_ctrl->sensordata->sensor_platform_info->cam_vreg, s_ctrl->sensordata->sensor_platform_info->num_vreg, s_ctrl->vreg_seq, s_ctrl->num_vreg_seq, s_ctrl->reg_ptr, 0); msm_camera_config_vreg(&s_ctrl->sensor_i2c_client->client->dev, s_ctrl->sensordata->sensor_platform_info->cam_vreg, s_ctrl->sensordata->sensor_platform_info->num_vreg, s_ctrl->vreg_seq, s_ctrl->num_vreg_seq, s_ctrl->reg_ptr, 0); kfree(s_ctrl->reg_ptr); } else { // NULL! LDBGE("%s: No Regulator Pointer!\n", __func__); } /* LGE_CHANGE_E, Avoid Kernel Panic, 2012.11.12, jungki.kim[End] */ rc = gpio_direction_output(MSM_VT_PWR_EN, 0); if (rc) { pr_err("%s: gpio_direction_output enable failed\n", __func__); } msm_camera_request_gpio_table(data, 0); gpio_free(MSM_VT_PWR_EN); #if defined(CONFIG_MACH_APQ8064_GKKT) || defined(CONFIG_MACH_APQ8064_GKSK) || defined(CONFIG_MACH_APQ8064_GKU) || defined(CONFIG_MACH_APQ8064_GKATT) if(lge_get_board_revno() >= HW_REV_C ||lge_get_board_revno() == HW_REV_1_0){ LDBGI("%s: Revision [%d] MSM_CAM2_RST_EN GPIO No.%d\n",__func__, lge_get_board_revno(), MSM_CAM2_RST_EN ); gpio_free(MSM_CAM2_RST_EN); } #elif defined(CONFIG_MACH_APQ8064_GVDCM) if(lge_get_board_revno() >= HW_REV_C){ pr_err("%s: Revision check! MSM_CAM2_RST_EN GPIO No.%d\n",__func__,MSM_CAM2_RST_EN ); gpio_free(MSM_CAM2_RST_EN); } #endif return 0; }