LOCAL uint32_t _ov8830_PowerOn(uint32_t power_on)
{
	SENSOR_AVDD_VAL_E dvdd_val = g_ov8830_mipi_raw_info.dvdd_val;
	SENSOR_AVDD_VAL_E avdd_val = g_ov8830_mipi_raw_info.avdd_val;
	SENSOR_AVDD_VAL_E iovdd_val = g_ov8830_mipi_raw_info.iovdd_val;
	BOOLEAN power_down = g_ov8830_mipi_raw_info.power_down_level;
	BOOLEAN reset_level = g_ov8830_mipi_raw_info.reset_pulse_level;

	if (SENSOR_TRUE == power_on) {
		Sensor_PowerDown(power_down);
		// Open power
		Sensor_SetMonitorVoltage(SENSOR_AVDD_2800MV);
		Sensor_SetVoltage(dvdd_val, avdd_val, iovdd_val);
		usleep(20*1000);
		Sensor_SetMCLK(SENSOR_DEFALUT_MCLK);
		usleep(10*1000);
		Sensor_PowerDown(!power_down);
		// Reset sensor
		Sensor_Reset(reset_level);
	} else {
		Sensor_PowerDown(power_down);
		Sensor_SetMCLK(SENSOR_DISABLE_MCLK);
		Sensor_SetVoltage(SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED);
		Sensor_SetMonitorVoltage(SENSOR_AVDD_CLOSED);
	}
	SENSOR_PRINT("SENSOR_ov8830: _ov8830_Power_On(1:on, 0:off): %d", power_on);
	return SENSOR_SUCCESS;
}
Ejemplo n.º 2
0
LOCAL uint32_t _BF3905_PowerOn(uint32_t power_on)
{
	SENSOR_AVDD_VAL_E dvdd_val=g_BF3905_mipi_yuv_info.dvdd_val;
	SENSOR_AVDD_VAL_E avdd_val=g_BF3905_mipi_yuv_info.avdd_val;
	SENSOR_AVDD_VAL_E iovdd_val=g_BF3905_mipi_yuv_info.iovdd_val;  
	BOOLEAN power_down=g_BF3905_mipi_yuv_info.power_down_level;        
	BOOLEAN reset_level=g_BF3905_mipi_yuv_info.reset_pulse_level;
	//uint32_t reset_width=g_BF3905_mipi_yuv_info.reset_pulse_width;        

	if(SENSOR_TRUE==power_on)
	{
		Sensor_PowerDown(power_down);	
		// Open power
		Sensor_SetVoltage(dvdd_val, avdd_val, iovdd_val);    
		SENSOR_Sleep(20);
		Sensor_SetMCLK(SENSOR_DEFALUT_MCLK); 
		SENSOR_Sleep(10);
		Sensor_PowerDown(!power_down);
		// Reset sensor		
		Sensor_Reset(reset_level);	
		CMR_LOGE("qzhu BF3905 power_on is true\n");	
	}
	else
	{
		Sensor_PowerDown(power_down);
 SENSOR_Sleep(10);
		Sensor_SetMCLK(SENSOR_DISABLE_MCLK);         
		Sensor_SetVoltage(SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED);   
		CMR_LOGE("qzhu BF3905 power_on is false\n");	     
	}    

	return SENSOR_SUCCESS;
}
LOCAL uint32_t SP0A19_Power_On(uint32_t power_on)
{
	SENSOR_AVDD_VAL_E	dvdd_val=g_SP0A19_yuv_info.dvdd_val;
	SENSOR_AVDD_VAL_E	avdd_val=g_SP0A19_yuv_info.avdd_val;
	SENSOR_AVDD_VAL_E	iovdd_val=g_SP0A19_yuv_info.iovdd_val;  
	BOOLEAN				power_down=g_SP0A19_yuv_info.power_down_level;	    
	BOOLEAN				reset_level=g_SP0A19_yuv_info.reset_pulse_level;
	uint32_t			reset_width=g_SP0A19_yuv_info.reset_pulse_width;	    

	if(SENSOR_TRUE==power_on)
	{
		Sensor_PowerDown(power_down);	
		// Open power
		Sensor_SetVoltage(dvdd_val, avdd_val, iovdd_val);
		//Sensor_SetMonitorVoltage(SENSOR_AVDD_2800MV);
		SENSOR_Sleep(50);
		Sensor_SetMCLK(SENSOR_DEFALUT_MCLK); 
		SENSOR_Sleep(20);
		Sensor_PowerDown(!power_down);
		// Reset sensor		
		Sensor_Reset(reset_level);		
	}
	else
	{
		Sensor_SetVoltage(dvdd_val, avdd_val, iovdd_val);    
		SENSOR_Sleep(20);
		Sensor_PowerDown(power_down);
		SENSOR_Sleep(20);
		Sensor_SetMCLK(SENSOR_DISABLE_MCLK);         
		Sensor_SetVoltage(SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED);  
		//Sensor_SetMonitorVoltage(SENSOR_AVDD_CLOSED);
	}

	return SENSOR_SUCCESS;
}
LOCAL uint32_t _GC0328_PowerOn(uint32_t power_on)
{
	SENSOR_AVDD_VAL_E dvdd_val = g_GC0328_yuv_info.dvdd_val;
	SENSOR_AVDD_VAL_E avdd_val = g_GC0328_yuv_info.avdd_val;
	SENSOR_AVDD_VAL_E iovdd_val = g_GC0328_yuv_info.iovdd_val;
	BOOLEAN power_down = g_GC0328_yuv_info.power_down_level;
	BOOLEAN reset_level = g_GC0328_yuv_info.reset_pulse_level;
	//uint32_t reset_width=g_GC0328_yuv_info.reset_pulse_width;

	printk("SENSOR: _GC0328_Power_On_start(1:on, 0:off): %d \n", power_on);

	if (SENSOR_TRUE == power_on) {
		Sensor_PowerDown(power_down);
		// Open power
		//Sensor_SetVoltage(dvdd_val, avdd_val, iovdd_val);
		Sensor_SetVoltage(SENSOR_AVDD_CLOSED, avdd_val, iovdd_val);
		msleep(20);
		Sensor_SetMCLK(SENSOR_DEFALUT_MCLK);
		msleep(10);
		Sensor_PowerDown(!power_down);
		// Reset sensor
		Sensor_Reset(reset_level);
	} else {
		Sensor_PowerDown(power_down);
		Sensor_SetMCLK(SENSOR_DISABLE_MCLK);
		Sensor_SetVoltage(SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED,
				  SENSOR_AVDD_CLOSED);
	}
	printk("SENSOR: _GC0328_Power_On(1:on, 0:off): %d \n", power_on);
	return SENSOR_SUCCESS;
}
LOCAL uint32_t GC0328_BeforeSnapshot(uint32_t param)
{

    uint16_t shutter = 0x00;
    uint16_t temp_reg = 0x00;
    uint16_t temp_r =0x00;
    uint16_t temp_g =0x00;
    uint16_t temp_b =0x00;    
    BOOLEAN b_AEC_on;
    

    SENSOR_TRACE("GC0328_BeforeSnapshot ");   

	printk("SENSOR: set flash on beforeSnapShot, g_flash_mode = %d \n",
	       g_flash_mode_en);
	if (g_flash_mode_en) {
		//Sensor_SetFlash(0x11);  // high light
		Sensor_SetFlash(1);
	}
#if 0	
    	if(GC0328_ReadReg(0X41)  & 0x08 == 0x08)  //AEC on
    		b_AEC_on = SENSOR_TRUE;
    	else
    		b_AEC_on = SENSOR_FALSE;

	temp_reg = GC0328_ReadReg(0xdb);
	temp_r = GC0328_ReadReg(0xcd);
	temp_g = GC0328_ReadReg(0xce);
	temp_b = GC0328_ReadReg(0xcf);

	shutter = (GC0328_ReadReg(0x03)<<8)  | (GC0328_ReadReg(0x04)&0x00ff) ;
	shutter = shutter /2;

	if(b_AEC_on)
		GC0328_WriteReg(0x41,GC0328_ReadReg(0x41) & 0xc5); //0x01);
	SENSOR_Sleep(300); 

///12m
	Sensor_SetMCLK(12);
	
	GC0328_WriteReg(0x03,shutter/256);
	GC0328_WriteReg(0x04,shutter & 0x00ff);	
   	//SENSOR_TRACE("GC0328_BeforeSnapshot, temp_r=%x,temp_reg=%x, final = %x ",temp_r,temp_reg, temp_r*temp_reg/ 0x80);    

	temp_r = (temp_r*temp_reg) / 0x80;
	temp_g = (temp_g*temp_reg) / 0x80;
	temp_b = (temp_b*temp_reg) / 0x80;
	if(b_AEC_on)
	{
		GC0328_WriteReg(0xcd, temp_r);
		GC0328_WriteReg(0xce, temp_g);
		GC0328_WriteReg(0xcf , temp_b);
	}
   	//SENSOR_TRACE("GC0328_BeforeSnapshot, temp_r=%x,temp_g=%x, temp_b = %x ",temp_r,temp_g,temp_b);    

	SENSOR_Sleep(300); 
#endif
    	return 0;
    
}
LOCAL uint32_t _ov7675_PowerOn(uint32_t power_on)
{
	SENSOR_AVDD_VAL_E dvdd_val = g_OV7675_yuv_info.dvdd_val;
	SENSOR_AVDD_VAL_E avdd_val = g_OV7675_yuv_info.avdd_val;
	SENSOR_AVDD_VAL_E iovdd_val = g_OV7675_yuv_info.iovdd_val;
	BOOLEAN power_down = g_OV7675_yuv_info.power_down_level;
	BOOLEAN reset_level = g_OV7675_yuv_info.reset_pulse_level;
	//uint32_t reset_width=g_ov5640_yuv_info.reset_pulse_width;

	SENSOR_PRINT("dvdd_val %d, dvdd_val %d, avdd_val %d, iovdd_val %d",
			power_on,
			dvdd_val,
			avdd_val,
			iovdd_val);
	SENSOR_PRINT("power_down %d reset_level %d", power_down, reset_level);

	if (SENSOR_TRUE == power_on) {
		Sensor_PowerDown(power_down);
		usleep(10*1000);
		Sensor_SetIovddVoltage(iovdd_val);
		usleep(5*1000);
		Sensor_SetAvddVoltage(avdd_val);
		usleep(5*1000);
		Sensor_SetMCLK(SENSOR_DEFALUT_MCLK);
		Sensor_PowerDown(!power_down);
		usleep(20*1000);
	} else {
		Sensor_PowerDown(power_down);
		usleep(2*1000);
		Sensor_SetMCLK(SENSOR_DISABLE_MCLK);
		usleep(2*1000);
		Sensor_SetAvddVoltage(SENSOR_AVDD_CLOSED);
		Sensor_SetIovddVoltage(SENSOR_AVDD_CLOSED);
		usleep(20*1000);
	}
	SENSOR_PRINT("(1:on, 0:off): %d", power_on);
	return SENSOR_SUCCESS;
}
LOCAL uint32_t _ov7675_Power_On(uint32_t power_on)
{
    SENSOR_AVDD_VAL_E		dvdd_val=g_OV7675_yuv_info.dvdd_val;
    SENSOR_AVDD_VAL_E		avdd_val=g_OV7675_yuv_info.avdd_val;
    SENSOR_AVDD_VAL_E		iovdd_val=g_OV7675_yuv_info.iovdd_val;
//    BOOLEAN 				power_down=g_OV7675_yuv_info.power_down_level;
    BOOLEAN 				reset_level=g_OV7675_yuv_info.reset_pulse_level;
    uint32_t 				reset_width=g_OV7675_yuv_info.reset_pulse_width;

    if(1==power_on)
    {
        Sensor_SetVoltage(dvdd_val, avdd_val, iovdd_val);
 //       GPIO_SetSensorPower(TRUE);
  //      GPIO_SetFrontSensorPwdn((BOOLEAN)!power_down);

        // Open Mclk in default frequency
        Sensor_SetMCLK(SENSOR_DEFALUT_MCLK);

        SENSOR_Sleep(20);
        Sensor_SetResetLevel(reset_level);
        SENSOR_Sleep(reset_width);
        Sensor_SetResetLevel((BOOLEAN)!reset_level);
        SENSOR_Sleep(100);
    }
    else
    {
//        GPIO_SetFrontSensorPwdn(power_down);

        Sensor_SetMCLK(SENSOR_DISABLE_MCLK);
//        GPIO_SetSensorPower(FALSE);
        Sensor_SetVoltage(SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED);
    }

    SENSOR_TRACE("SENSOR: _ov7675_Power_On(1:on, 0:off): %d", power_on);

    return 0;
}
LOCAL uint32_t _OV7690_Power_On(uint32_t power_on)
{
    SENSOR_AVDD_VAL_E		dvdd_val=g_OV7690_yuv_info.dvdd_val;
    SENSOR_AVDD_VAL_E		avdd_val=g_OV7690_yuv_info.avdd_val;
    SENSOR_AVDD_VAL_E		iovdd_val=g_OV7690_yuv_info.iovdd_val;  
    BOOLEAN 				power_down=g_OV7690_yuv_info.power_down_level;	    
    BOOLEAN 				reset_level=g_OV7690_yuv_info.reset_pulse_level;
    uint32_t 				reset_width=g_OV7690_yuv_info.reset_pulse_width;	    
    
    if(DCAM_TRUE==power_on)
    {
        Sensor_SetVoltage(dvdd_val, avdd_val, iovdd_val);
        
        Sensor_PowerDown(!power_down);

        // Open Mclk in default frequency
        Sensor_SetMCLK(SENSOR_DEFALUT_MCLK);   
        
        DCAM_Sleep(20);
        Sensor_SetResetLevel(reset_level);
        DCAM_Sleep(reset_width);
        Sensor_SetResetLevel(!reset_level);
        DCAM_Sleep(100);
    }
    else
    {
        Sensor_PowerDown(power_down);

        Sensor_SetMCLK(SENSOR_DISABLE_MCLK);           

        Sensor_SetVoltage(SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED);        
    }

    SENSOR_TRACE("SENSOR: _OV7690_Power_On(1:on, 0:off): %d", power_on);    
    
    return DCAM_SUCCESS;
}