+ int usb_status = dwc_vbus_status();
+ int gadget_status =get_gadget_connect_flag();
+
+ xprintk("%s usb_status=[%d],cw_bat->charger_mode=[%d],cw_bat->gadget_status=[%d], cw_bat->charger_init_mode = [%d]\n",__func__,usb_status,cw_bat->charger_mode,gadget_status, cw_bat->charger_init_mode);
+
+
+ if (cw_bat->plat_data->is_usb_charge == 0) {
+ cw_bat->usb_online = 0;
+ return 0;
+
+ }
+
+ if (((usb_status == 2) || (cw_bat->charger_init_mode==2)) && (cw_bat->charger_mode != AC_CHARGER_MODE)){
+
+ if (cw_bat->charger_mode != AC_CHARGER_MODE)
+ cw_bat->charger_mode = AC_CHARGER_MODE;
+ if (cw_bat->plat_data->chg_mode_sel_pin != INVALID_GPIO)
+ gpio_direction_output(cw_bat->plat_data->chg_mode_sel_pin, (cw_bat->plat_data->chg_mode_sel_level==GPIO_HIGH) ? GPIO_HIGH : GPIO_LOW);
+ if (cw_bat->usb_online != 1){
+ cw_bat->usb_online = 1;
+ cw_update_time_member_ac_online(cw_bat);
+ return 1;
+ }
+ } else if ((usb_status == 1) || ((cw_bat->charger_init_mode==1))) {
+#if 1
+ if (0 == gadget_status){
+ if (cw_bat->charger_mode != AC_CHARGER_MODE)
+ cw_bat->charger_mode = AC_CHARGER_MODE;
+ if (cw_bat->plat_data->chg_mode_sel_pin != INVALID_GPIO)
+ gpio_direction_output(cw_bat->plat_data->chg_mode_sel_pin, (cw_bat->plat_data->chg_mode_sel_level==GPIO_HIGH) ? GPIO_HIGH : GPIO_LOW);
+ if (cw_bat->usb_online != 1){
+ cw_bat->usb_online = 1;
+ cw_update_time_member_ac_online(cw_bat);
+ return 1;
+ }
+ }
+ else{
+#endif
+ if (cw_bat->charger_mode != USB_CHARGER_MODE)
+ cw_bat->charger_mode = USB_CHARGER_MODE;
+ if (cw_bat->plat_data->chg_mode_sel_pin != INVALID_GPIO)
+ gpio_direction_output(cw_bat->plat_data->chg_mode_sel_pin, (cw_bat->plat_data->chg_mode_sel_level==GPIO_HIGH) ? GPIO_LOW : GPIO_HIGH);
+ if (cw_bat->usb_online != 1){
+ cw_bat->usb_online = 1;
+ cw_update_time_member_ac_online(cw_bat);
+ return 1;
+ }
+ }
+ } else {//if (usb_status == 0){
+ if (cw_bat->plat_data->chg_mode_sel_pin != INVALID_GPIO)
+ gpio_direction_output(cw_bat->plat_data->chg_mode_sel_pin, (cw_bat->plat_data->chg_mode_sel_level==GPIO_HIGH) ? GPIO_LOW : GPIO_HIGH);
+ if ((cw_bat->dc_online == 0)&&(cw_bat->charger_mode != 0))
+ cw_bat->charger_mode = 0;
+ if (cw_bat->usb_online != 0) {
+ cw_update_time_member_ac_online(cw_bat);
+ cw_bat->usb_online = 0;
+ return 1;
+ }
+ }
+
+