/* * The power_down gpio pin is to control OV5648's * internal power state. */ static int ov5648_power_ctrl(struct v4l2_subdev *sd, int flag) { int ret = 0; /* if (camera_vcm28_en < 0) { ret = gpio_request(AFVCC28_EN, "camera_vcm_power"); if (ret) { pr_err("%s: failed to request gpio(pin %d)\n", __func__, AFVCC28_EN); return ret; } } camera_vcm28_en = AFVCC28_EN; ret = gpio_direction_output(camera_vcm28_en, 1); if (ret) { pr_err("%s: failed to set gpio(pin %d) direction\n", __func__, camera_vcm28_en); gpio_free(camera_vcm28_en); camera_vcm28_en = -1; return ret; } */ if (flag) { if (!camera_vprog1_on) { #ifdef CONFIG_CRYSTAL_COVE /* * This should call VRF APIs. * * VRF not implemented for BTY, so call this * as WAs */ ret = camera_set_pmic_power(CAMERA_2P8V, true); if (ret) return ret; ret = camera_set_pmic_power(CAMERA_1P8V, true); #endif if (!ret) camera_vprog1_on = 1; // gpio_set_value(camera_vcm28_en, 1); usleep_range(10000, 10500); return ret; } } else { if (camera_vprog1_on) { #ifdef CONFIG_CRYSTAL_COVE ret = camera_set_pmic_power(CAMERA_2P8V, false); if (ret) return ret; ret = camera_set_pmic_power(CAMERA_1P8V, false); #endif if (!ret) camera_vprog1_on = 0; // gpio_set_value(camera_vcm28_en, 0); // gpio_free(camera_vcm28_en); // camera_vcm28_en = -1; return ret; } } return ret; }
static int imx175_power_ctrl(struct v4l2_subdev *sd, int flag) { int ret = 0; if (flag) { if (!camera_vprog1_on) { #ifdef CONFIG_CRYSTAL_COVE /* * This should call VRF APIs. * * VRF not implemented for BTY, so call this * as WAs */ ret = camera_set_pmic_power(CAMERA_2P8V, true); if (ret) return ret; ret = camera_set_pmic_power(CAMERA_1P8V, true); #elif defined(CONFIG_INTEL_SCU_IPC_UTIL) ret = intel_scu_ipc_msic_vprog1(1); #else pr_err("imx175 power is not set.\n"); #endif if (!ret) { /* imx1x5 VDIG rise to XCLR release */ usleep_range(1000, 1200); camera_vprog1_on = 1; } return ret; } } else { if (camera_vprog1_on) { #ifdef CONFIG_CRYSTAL_COVE ret = camera_set_pmic_power(CAMERA_2P8V, false); if (ret) return ret; ret = camera_set_pmic_power(CAMERA_1P8V, false); #elif defined(CONFIG_INTEL_SCU_IPC_UTIL) ret = intel_scu_ipc_msic_vprog1(0); #else pr_err("imx175 power is not set.\n"); #endif if (!ret) camera_vprog1_on = 0; return ret; } } return ret; }
static int imx175_power_ctrl(struct v4l2_subdev *sd, int flag) { int ret = 0; if (flag) { if (!camera_vprog1_on) { if (intel_mid_identify_cpu() != INTEL_MID_CPU_CHIP_VALLEYVIEW2) ret = intel_scu_ipc_msic_vprog1(1); #ifdef CONFIG_CRYSTAL_COVE /* * This should call VRF APIs. * * VRF not implemented for BTY, so call this * as WAs */ ret = camera_set_pmic_power(CAMERA_2P8V, true); if (ret) return ret; ret = camera_set_pmic_power(CAMERA_1P8V, true); #endif if (!ret) { /* imx1x5 VDIG rise to XCLR release */ usleep_range(1000, 1200); camera_vprog1_on = 1; } return ret; } } else { if (camera_vprog1_on) { if (intel_mid_identify_cpu() != INTEL_MID_CPU_CHIP_VALLEYVIEW2) ret = intel_scu_ipc_msic_vprog1(0); #ifdef CONFIG_CRYSTAL_COVE ret = camera_set_pmic_power(CAMERA_2P8V, false); if (ret) return ret; ret = camera_set_pmic_power(CAMERA_1P8V, false); #endif if (!ret) camera_vprog1_on = 0; return ret; } } return ret; }
/* * The power_down gpio pin is to control OV8858's * internal power state. */ static int ov8858_power_ctrl(struct v4l2_subdev *sd, int flag) { int ret = 0; if (flag) { if (!camera_vprog1_on) { #ifdef CONFIG_CRYSTAL_COVE /* * This should call VRF APIs. * * VRF not implemented for BTY, so call this * as WAs */ ret = camera_set_pmic_power(CAMERA_1P8V, true); if (ret) return ret; ret = camera_set_pmic_power(CAMERA_2P8V, true); #endif if (!ret) camera_vprog1_on = 1; msleep(10); return ret; } } else { if (camera_vprog1_on) { #ifdef CONFIG_CRYSTAL_COVE ret = camera_set_pmic_power(CAMERA_2P8V, false); if (ret) return ret; ret = camera_set_pmic_power(CAMERA_1P8V, false); #endif if (!ret) camera_vprog1_on = 0; return ret; } ret = 0; } return ret; }
/* * The camera_v1p8_en gpio pin is to enable 1.8v power. */ static int ov2685f_power_ctrl(struct v4l2_subdev *sd, int flag) { int ret = 0; /* int pin = CAMERA_1P8_EN; */ int val; #if 0 ret = gpio_request(pin, "camera_v1p8_en"); if (ret) { pr_err("Request camera_v1p8_en failed.\n"); gpio_free(pin); ret = gpio_request(pin, "camera_v1p8_en"); if (ret) { pr_err("Request camera_v1p8_en still failed.\n"); return ret; } } gpio_direction_output(pin, 0); #endif if (flag) { if (!camera_vprog1_on) { #ifdef CONFIG_CRYSTAL_COVE /* * This should call VRF APIs. * * VRF not implemented for BTY, so call this * as WAs */ camera_set_pmic_power(CAMERA_2P8V, true); camera_set_pmic_power(CAMERA_1P8V, true); #elif defined(CONFIG_INTEL_SCU_IPC_UTIL) ret = intel_scu_ipc_msic_vprog1(1); #else pr_err("ov2685f power is not set.\n"); #endif #if 0 /* enable 1.8v power */ gpio_set_value(pin, 1); #endif camera_vprog1_on = 1; usleep_range(10000, 11000); } } else { if (camera_vprog1_on) { #ifdef CONFIG_CRYSTAL_COVE camera_set_pmic_power(CAMERA_2P8V, false); camera_set_pmic_power(CAMERA_1P8V, false); #elif defined(CONFIG_INTEL_SCU_IPC_UTIL) ret = intel_scu_ipc_msic_vprog1(0); #else pr_err("ov2685f power is not set.\n"); #endif #if 0 /* disable 1.8v power */ gpio_set_value(pin, 0); #endif camera_vprog1_on = 0; } } #if 0 gpio_free(pin); #endif return 0; }