/* ************************************************************************** * FunctionName: hi843s_ofilm_check_sensor; * Description : NA; * Input : NA; * Output : NA; * ReturnValue : NA; * Other : NA; ***************************************************************************/ int hi843s_ofilm_power(camera_power_state power) { if (power == POWER_ON) { k3_ispldo_power_sensor(power, S_CAMERA_IO_VDD); k3_socgpio_power_sensor(1, S_CAMERA_ANALOG_VDD);//for external AVDD LDO k3_ispldo_power_sensor(power, S_CAMERA_ANALOG_VDD); k3_ispldo_power_sensor(power, M_CAMERA_CORE_VDD);//power on main sensor's DVDD udelay(100); k3_ispio_ioconfig(&hi843s_ofilm_sensor, power); k3_ispgpio_power_sensor(&hi843s_ofilm_sensor, power); k3_isp_io_enable_mclk(MCLK_ENABLE, hi843s_ofilm_sensor.sensor_index); msleep(3); k3_ispgpio_reset_sensor(hi843s_ofilm_sensor.sensor_index, power, hi843s_ofilm_sensor.power_conf.reset_valid); msleep(5); } else { k3_ispio_deinit_csi(hi843s_ofilm_sensor.mipi_index); k3_ispgpio_reset_sensor(hi843s_ofilm_sensor.sensor_index, power, hi843s_ofilm_sensor.power_conf.reset_valid); k3_ispio_ioconfig(&hi843s_ofilm_sensor, power); k3_ispgpio_power_sensor(&hi843s_ofilm_sensor, power); udelay(100); k3_isp_io_enable_mclk(MCLK_DISABLE, hi843s_ofilm_sensor.sensor_index); k3_ispldo_power_sensor(power, M_CAMERA_CORE_VDD);//power off main sensor' DVDD k3_ispldo_power_sensor(power, S_CAMERA_ANALOG_VDD); k3_socgpio_power_sensor(0, S_CAMERA_ANALOG_VDD);//for external AVDD LDO k3_ispldo_power_sensor(power, S_CAMERA_IO_VDD); msleep(5); } return 0; }
/**************************************************************************** * FunctionName: sonyimx105_check_sensor; * Description : NA; * Input : NA; * Output : NA; * ReturnValue : NA; * Other : NA; ***************************************************************************/ int sonyimx105_power(camera_power_state power) { int ret = 0; if (power == POWER_ON) { k3_ispldo_power_sensor(power, "pri-cameralog-vcc"); ret = camera_power_core_ldo(power); udelay(200); k3_ispldo_power_sensor(power, "camera-vcc"); k3_ispldo_power_sensor(power, "cameravcm-vcc"); udelay(1); k3_ispldo_power_sensor(power, "sec-cameralog-vcc"); k3_ispgpio_power_sensor(&sonyimx105_sensor, power); k3_ispio_ioconfig(&sonyimx105_sensor, power); } else { k3_ispio_deinit_csi(sonyimx105_sensor.mipi_index); k3_ispio_ioconfig(&sonyimx105_sensor, power); k3_ispgpio_power_sensor(&sonyimx105_sensor, power); k3_ispldo_power_sensor(power, "sec-cameralog-vcc"); k3_ispldo_power_sensor(power, "cameravcm-vcc"); camera_power_core_ldo(power); udelay(200); k3_ispldo_power_sensor(power, "pri-cameralog-vcc"); k3_ispldo_power_sensor(power, "camera-vcc"); } return ret; }
/**************************************************************************** * FunctionName: ov13850_check_sensor; * Description : NA; * Input : NA; * Output : NA; * ReturnValue : NA; * Other : NA; ***************************************************************************/ static int ov13850_power(camera_power_state power) { int ret = 0; print_debug("Enter Function:%s\n ", __func__); if (power == POWER_ON) { k3_ispldo_power_sensor(power, M_CAMERA_IO_VDD); k3_ispldo_power_sensor(power, M_CAMERA_ANALOG_VDD); k3_ispldo_power_sensor(power, M_CAMERA_VCM_VDD); udelay(1); k3_ispldo_power_sensor(power, M_CAMERA_CORE_VDD); udelay(200); k3_ispio_ioconfig(&ov13850_lit171, power); k3_ispgpio_power_sensor(&ov13850_lit171, power); msleep(3); } else { k3_ispio_deinit_csi(ov13850_lit171.mipi_index); k3_ispgpio_power_sensor(&ov13850_lit171, power); k3_ispio_ioconfig(&ov13850_lit171, power); k3_ispldo_power_sensor(power, M_CAMERA_CORE_VDD); udelay(200); k3_ispldo_power_sensor(power, M_CAMERA_VCM_VDD); k3_ispldo_power_sensor(power, M_CAMERA_ANALOG_VDD); k3_ispldo_power_sensor(power, M_CAMERA_IO_VDD); udelay(500); } return ret; }
/*sonyimx214 power up function*/ static int sonyimx214_power(camera_power_state power) { print_debug("Enter %s.\n", __func__); /*main & slave use the same power*/ if(0 == get_sensor_iopower()) { if (power == POWER_ON) { /*slave camera*/ k3_ispldo_power_sensor(power, S_CAMERA_ANALOG_VDD); k3_ispldo_power_sensor(power, S_CAMERA_CORE_VDD); udelay(1); /*main camera*/ k3_ispldo_power_sensor(power, M_CAMERA_ANALOG_VDD); k3_ispldo_power_sensor(power, M_CAMERA_IO_VDD); //gpio gpio_direction_output(GPIO_18_0, 1); udelay(200); k3_ispldo_power_sensor(power, M_CAMERA_VCM_VDD); udelay(1); k3_ispio_ioconfig(&sonyimx214_sensor, power); k3_ispgpio_power_sensor(&sonyimx214_sensor, power); msleep(3); } else { k3_ispio_deinit_csi(sonyimx214_sensor.mipi_index); k3_ispgpio_power_sensor(&sonyimx214_sensor, power); k3_ispio_ioconfig(&sonyimx214_sensor, power); /*slave camera*/ k3_ispldo_power_sensor(power, S_CAMERA_CORE_VDD); k3_ispldo_power_sensor(power, S_CAMERA_ANALOG_VDD); /*main camera*/ k3_ispldo_power_sensor(power, M_CAMERA_VCM_VDD); k3_ispldo_power_sensor(power, M_CAMERA_IO_VDD); //gpio gpio_direction_output(GPIO_18_0, 0); gpio_free(GPIO_18_0); udelay(200); k3_ispldo_power_sensor(power, M_CAMERA_ANALOG_VDD); } } else { //main & slave use the different power if (power == POWER_ON) { k3_ispldo_power_sensor(power, M_CAMERA_ANALOG_VDD); k3_ispldo_power_sensor(power, M_CAMERA_CORE_VDD); udelay(200); k3_ispldo_power_sensor(power, M_CAMERA_IO_VDD); k3_ispldo_power_sensor(power, M_CAMERA_VCM_VDD); udelay(1); k3_ispio_ioconfig(&sonyimx214_sensor, power); k3_ispgpio_power_sensor(&sonyimx214_sensor, power); msleep(2); } else { k3_ispio_deinit_csi(sonyimx214_sensor.mipi_index); k3_ispgpio_power_sensor(&sonyimx214_sensor, power); k3_ispio_ioconfig(&sonyimx214_sensor, power); k3_ispldo_power_sensor(power, M_CAMERA_VCM_VDD); k3_ispldo_power_sensor(power, M_CAMERA_CORE_VDD); udelay(200); k3_ispldo_power_sensor(power, M_CAMERA_ANALOG_VDD); k3_ispldo_power_sensor(power, M_CAMERA_IO_VDD); } } return 0; }