Ejemplo n.º 1
0
void rk2918_get_charge_status(void)
{
    int charge_on = 0;
    int tmp = get_msc_connect_flag();
	int flag = dwc_vbus_status();
	static  char  last_flag = 0;


	//printk("%s...........get_msc_connect_flag=%d,dwc_vbus_status=%d\n",__FUNCTION__,tmp,flag);
#ifdef RK29_USB_CHARGE_SUPPORT
    if ((gpio_get_value(RK29_PIN0_PA0) == 0) &&(charge_on == 0) )
    {
        //if (suspend_flag) return;
 #if 1           
        if (1 == flag)         //USB PC
        {   
			charge_on = 1;
			//printk("PC\n");
        } 
 
        else
        {
             if (2 == flag)  //充电器
            {
                charge_on = 1;
				//printk("charger\n");
            }
        }
#endif
#if 0
	if (usb_insert == 2)
	{
		charge_on = 1;
		//printk("%s.......charging  with charger\n",__FUNCTION__);
	}   
#endif 
    }
	
#endif
//printk("%s...dwc_vbus_status=%d,get_msc_connect_flag=%d\n",__FUNCTION__,dwc_vbus_status(),tmp);
   if (charge_on)
    {
        if((gBatChargeStatus !=1) || (last_flag != flag)) 
        {            
            gBatChargeStatus = 1;
			last_flag = flag;
            gBatStatusChangeCnt = 0;        //状态变化开始计数
            wake_lock(&battery_wake_lock);
			if (flag == 2)
			{
				rk2918_charge_enable();
			}		
			
        }

    } 
    else 
    {
        if(gBatChargeStatus != 0) 
        {
            gBatChargeStatus = 0;
            gBatStatusChangeCnt = 0;        //状态变化开始计数
            wake_unlock(&battery_wake_lock);
		    rk2918_charge_disable();
			
        }
    }

}
Ejemplo n.º 2
0
static void rk2918_get_charge_status(void)
{
    int charge_on = 0;
    
    if (gBatteryData->dc_det_pin != INVALID_GPIO)
    {
        if (gpio_get_value (gBatteryData->dc_det_pin) == gBatteryData->dc_det_level)
        {
            charge_on = 1;
        }
    }
    
#ifdef RK29_USB_CHARGE_SUPPORT
    if (charge_on == 0)
    {
        if (suspend_flag) return;
            
        if (1 == dwc_vbus_status())         //检测到USB插入,但是无法识别是否是充电器
        {                                   //通过延时检测PC识别标志,如果超时检测不到,说明是充电
            if (0 == get_msc_connect_flag())
            {                               //插入充电器时间大于一定时间之后,开始进入充电状态
                if (++gBatUsbChargeCnt >= NUM_USBCHARGE_IDENTIFY_TIMES)
                {
                    gBatUsbChargeCnt = NUM_USBCHARGE_IDENTIFY_TIMES + 1;
                    charge_on = 1;
                }
            }                               //否则,不进入充电模式
            #if defined(CONFIG_MACH_RK29_ACH8)
            charge_on = 1;
            #endif
        }                   
        else
        {
            gBatUsbChargeCnt = 0;
            if (2 == dwc_vbus_status()) 
            {
                charge_on = 1;
            }
        }
    }
#endif
        
    if (charge_on)
    {
        if(gBatChargeStatus !=1) 
        {            
            gBatChargeStatus = 1;
            gBatStatusChangeCnt = 0;        //状态变化开始计数
            rk2918_charge_enable();
        }
    } 
    else 
    {
        if(gBatChargeStatus != 0) 
        {
            gBatChargeStatus = 0;
            gBatStatusChangeCnt = 0;        //状态变化开始计数
            rk2918_charge_disable();
        }
    }
}
Ejemplo n.º 3
0
static void rk2918_get_charge_status(void)
{
    int charge_on = 0;
    
    if (gBatteryData->dc_det_pin != INVALID_GPIO)
    {
        if (gpio_get_value (gBatteryData->dc_det_pin) == gBatteryData->dc_det_level)
        {
            charge_on = 1;
        }
    }
    
#ifdef RK29_USB_CHARGE_SUPPORT
    if (charge_on == 0)
    {
        if (suspend_flag) return;
            
        if (1 == dwc_vbus_status())         //��⵽USB���룬�����޷�ʶ���Ƿ��dz����
        {                                   //ͨ����ʱ���PCʶ���־�����ʱ��ⲻ����˵���dz��
            if (0 == get_msc_connect_flag())
            {                               //��������ʱ�����һ��ʱ��֮�󣬿�ʼ������״̬
                if (++gBatUsbChargeCnt >= NUM_USBCHARGE_IDENTIFY_TIMES)
                {
                    gBatUsbChargeCnt = NUM_USBCHARGE_IDENTIFY_TIMES + 1;
                    charge_on = 1;
                }
            }                               //���򣬲�������ģʽ
            #if defined(CONFIG_MACH_RK29_ACH8)
            charge_on = 1;
            #endif
        }                   
        else
        {
            gBatUsbChargeCnt = 0;
            if (2 == dwc_vbus_status()) 
            {
                charge_on = 1;
            }
        }
    }
#endif
        
    if (charge_on)
    {
        if(gBatChargeStatus !=1) 
        {            
            gBatChargeStatus = 1;
            gBatStatusChangeCnt = 0;        //״̬�仯��ʼ����
            rk2918_charge_enable();
        }
    } 
    else 
    {
        if(gBatChargeStatus != 0) 
        {
            gBatChargeStatus = 0;
            gBatStatusChangeCnt = 0;        //״̬�仯��ʼ����
            rk2918_charge_disable();
        }
    }
}