int32_t mt9v113_sensor_power_down(struct msm_sensor_ctrl_t *s_ctrl) { int32_t rc = 0; SKYCDBG("%s E\n", __func__); msm_sensor_probe_off(&s_ctrl->sensor_i2c_client->client->dev); /*PANTECH_CAMERA_TODO, check correct timing, spec don't have off seq. */ if (sgpio_ctrl(sgpios, CAMIO_STB_N, 0) < 0) rc = -EIO; if (sgpio_ctrl(sgpios, CAMIO_RST_N, 0) < 0) rc = -EIO; mdelay(1); if (svreg_ctrl(svregs, CAMV_IO_1P8V, 0) < 0) rc = -EIO; if (sgpio_ctrl(sgpios, CAMV_CORE_1P8V, 0) < 0) rc = -EIO; #if defined(CONFIG_MACH_MSM8960_STARQ) && (BOARD_VER < WS20) rc = gpio_direction_output(91, 0); if (rc < 0) { SKYCDBG("%s err(%d, gpio91)\n", __func__, rc); rc = -EIO; return rc; } mdelay(1); #elif defined(CONFIG_MACH_MSM8960_STARQ) && (BOARD_VER >= WS20) if (sgpio_ctrl(sgpios, CAMV_A_2P8V, 0) < 0) rc = -EIO; mdelay(1); #endif svreg_release(svregs, CAMV_MAX); sgpio_release(sgpios, CAMIO_MAX); SKYCDBG("%s X (%d)\n", __func__, rc); return rc; }
static int32_t ov7736_power_down(struct msm_sensor_ctrl_t *s_ctrl) { struct msm_camera_sensor_platform_info *pinfo = s_ctrl->sensordata->sensor_platform_info; pr_info("ov7736_power_down\n"); /* Turn off MCLK */ msm_sensor_probe_off(&s_ctrl->sensor_i2c_client->client->dev); usleep(1000); /* Set Reset Low */ gpio_direction_output(pinfo->sensor_reset, 0); usleep(1000); /* Disable AVDD */ gpio_direction_output(pinfo->analog_en, 0); /* Set PWRDWN Low */ gpio_direction_output(pinfo->sensor_pwd, 0); /* Clean up */ gpio_free(pinfo->sensor_pwd); gpio_free(pinfo->sensor_reset); gpio_free(pinfo->analog_en); ov7736_regulator_off(reg_1p8, "1.8"); return 0; }
int32_t msm_sensor_power_down(struct msm_sensor_ctrl_t *s_ctrl) { struct msm_camera_sensor_info *data = s_ctrl->sensordata; CDBG("%s\n", __func__); msm_sensor_probe_off(&s_ctrl->sensor_i2c_client->client->dev); gpio_set_value_cansleep(data->sensor_platform_info->sensor_reset, 0); usleep_range(1000, 2000); gpio_free(data->sensor_platform_info->sensor_reset); return 0; }
int32_t yacd5c1sbdbc_sensor_power_down(struct msm_sensor_ctrl_t *s_ctrl) { int32_t rc = 0; pr_err("%s\n", __func__); #if 1//wsyang_temp if(booting_skip_check == 1) {// except AF_power_down for booting if (s_ctrl->func_tbl->sensor_stop_stream) { s_ctrl->func_tbl->sensor_stop_stream(s_ctrl); msleep(20); } } else { booting_skip_check = 1; } #endif #if 0 msm_sensor_probe_off(&s_ctrl->sensor_i2c_client->client->dev); #else msm_sensor_power_down(s_ctrl); pr_err(" %s : msm_sensor_power_down : rc = %d E\n",__func__, rc); #endif if (sgpio_ctrl(sgpios, CAMIO_RST_N, 0) < 0) rc = -EIO; mdelay(1); /* > 20 cycles (approx. 0.64us) */ if (sgpio_ctrl(sgpios, CAMIO_STB_N, 0) < 0) rc = -EIO; if (svreg_ctrl(svregs, CAMV_CORE_1P8V, 0) < 0) rc = -EIO; if (svreg_ctrl(svregs, CAMV_A_2P8V, 0) < 0) rc = -EIO; if (svreg_ctrl(svregs, CAMV_IO_1P8V, 0) < 0) rc = -EIO; if (sgpio_ctrl(sgpios, CAM1_IOVDD_EN, 0) < 0) rc = -EIO; svreg_release(svregs, CAMV_MAX); sgpio_release(sgpios, CAMIO_MAX); #ifdef CONFIG_PANTECH_CAMERA_TUNER kfree(yacd5c1sbdbc_recommend_tuner_settings); #endif pr_err("%s X (%d)\n", __func__, rc); return rc; #if 0 /* Reset *********************************************************/ gpio_set_value_cansleep(data->sensor_platform_info->sensor_reset, 0); usleep_range(1000, 2000); gpio_free(data->sensor_platform_info->sensor_reset); mdelay(1); /* Standby *********************************************************/ if(data->sensor_platform_info->sensor_pwd) { gpio_set_value_cansleep(data->sensor_platform_info->sensor_pwd, 0); gpio_free(data->sensor_platform_info->sensor_pwd); } mdelay(1); /* VREG disable *****************************************************/ rc = regulator_disable(vreg_lvs6_1p8); if (rc){ printk("%s: Disable regulator vreg_lvs6_1p8 failed\n", __func__); goto fail; } regulator_put(vreg_lvs6_1p8); vreg_lvs6_1p8 = NULL; mdelay(1); rc = regulator_disable(vreg_l11_2p85); if (rc){ printk("%s: Disable regulator vreg_l11_2p85 failed\n", __func__); goto fail; } regulator_put(vreg_l11_2p85); vreg_l11_2p85 = NULL; mdelay(1); rc = regulator_disable(vreg_lvs5_1p8); if (rc){ printk("%s: Disable regulator vreg_lvs5_1p8 failed\n", __func__); goto fail; } regulator_put(vreg_lvs5_1p8); vreg_lvs5_1p8 = NULL; mdelay(1); /* LDO disable ******************************************************/ gpio_set_value_cansleep(CAM1_IOVDD_EN, 0); gpio_free(CAM1_IOVDD_EN); mdelay(1); #if 0 gpio_set_value_cansleep(CAM1_AVDD_EN, 0); gpio_free(CAM1_AVDD_EN); mdelay(1); gpio_set_value_cansleep(CAM1_DVDD_EN, 0); gpio_free(CAM1_DVDD_EN); mdelay(1); #endif return 0; fail: printk("%s Failed!:%d\n",__func__, __LINE__); if(vreg_lvs6_1p8) { regulator_put(vreg_lvs6_1p8); } if(vreg_l11_2p85) { regulator_put(vreg_l11_2p85); } if(vreg_lvs5_1p8){ regulator_put(vreg_lvs5_1p8); } return rc; #endif }