/*  **************************************************************************
* 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;
}
Пример #4
0
/*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;
}