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(); } } }
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(); } } }
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(); } } }