/* ************************************************************************************************************ * * function * * 函数名称: * * 参数列表: * * 返回值 : * * 说明 : * * ************************************************************************************************************ */ int axp_set_all_limit(void) { int usbvol_limit = 0; int usbcur_limit = 0; script_parser_fetch(PMU_SCRIPT_NAME, "pmu_usbvol_limit", &usbvol_limit, 1); script_parser_fetch(PMU_SCRIPT_NAME, "pmu_usbcur_limit", &usbcur_limit, 1); script_parser_fetch(PMU_SCRIPT_NAME, "pmu_usbvol", (int *)&gd->limit_vol, 1); script_parser_fetch(PMU_SCRIPT_NAME, "pmu_usbcur", (int *)&gd->limit_cur, 1); script_parser_fetch(PMU_SCRIPT_NAME, "pmu_usbvol_pc", (int *)&gd->limit_pcvol, 1); script_parser_fetch(PMU_SCRIPT_NAME, "pmu_usbcur_pc", (int *)&gd->limit_pccur, 1); #ifdef DEBUG printf("usbvol_limit = %d, limit_vol = %d\n", usbvol_limit, gd->limit_vol); printf("usbcur_limit = %d, limit_cur = %d\n", usbcur_limit, gd->limit_cur); #endif if(!usbvol_limit) { gd->limit_vol = 0; } if(!usbcur_limit) { gd->limit_cur = 0; } axp_set_vbus_limit_pc(); return 0; }
void power_limit_init(void) { int battery_exist = 0; int dcin_exist = 0; int vbus_type = 0; int i = 0; do { #ifdef CONFIG_ARCH_HOMELET break; #endif axp_power_get_dcin_battery_exist(&dcin_exist, &battery_exist);//判断电池是否存在 if(battery_exist >= 0) { break; } i ++; __msdelay(500); } while(i < 4); vbus_type = usb_probe_vbus_type(); if(vbus_type == 1) //属于dc类型电源 { printf("vbus not exist\n"); gd->vbus_status = SUNXI_VBUS_NOT_EXIST; } else { printf("vbus exist\n"); gd->vbus_status = SUNXI_VBUS_EXIST; //属于vbus类型 } if(battery_exist != BATTERY_EXIST) //电池不存在,则直接限流到DC模式 { axp_set_vbus_limit_dc(); puts("no battery, limit to dc\n"); return ; } if(dcin_exist == AXP_DCIN_EXIST) //如果普通外部电源存在,不是VBUS类型 { axp_set_vbus_limit_dc(); puts("normal dc exist, limit to dc\n"); return ; } if(dcin_exist == AXP_VBUS_EXIST) //如果VBUS电源存在 { vbus_type = usb_probe_vbus_type(); if(vbus_type == 1) //属于dc类型电源 { axp_set_vbus_limit_dc(); //dp_dm 拉高 puts("vbus dc exist, limit to dc\n"); } else { axp_set_vbus_limit_pc(); //dp_dm 拉低 axp_set_charge_current(600); puts("vbus pc exist, limit to pc\n"); } return ; } axp_set_vbus_limit_dc(); //只有电池存在 puts("only battery exist, limit to dc\n"); return ; }