static PowerSupplyType identify_usb_charger() { int dn, dp, x; usbphy_charger_identify(PMU_CHARGER_IDENTIFY_DN); udelay(2000); dn = query_adc(PMU_ADCMUX_USBCHARGER); if (dn < 0) dn = 0; usbphy_charger_identify(PMU_CHARGER_IDENTIFY_DP); udelay(2000); dp = query_adc(PMU_ADCMUX_USBCHARGER); if (dp < 0) dp = 0; usbphy_charger_identify(PMU_CHARGER_IDENTIFY_NONE); if (dn < 99 || dp < 99) return PowerSupplyTypeUSBHost; x = (dn * 1000) / dp; if (x <= 0x5E1) return PowerSupplyTypeUSBBrick1000mA; else if (x < 0x460 || x > 0x307) return PowerSupplyTypeUSBHost; else return PowerSupplyTypeUSBBrick2000mA; }
static PowerSupplyType identify_usb_charger() { uint32_t dn; uint32_t dp; usb_set_charger_identification_mode(USBChargerIdentificationDN); udelay(2000); if (query_adc(6, &dn) != 0) { dn = 0; } usb_set_charger_identification_mode(USBChargerIdentificationDP); udelay(2000); if (query_adc(6, &dp) != 0) { dp = 0; } usb_set_charger_identification_mode(USBChargerIdentificationNone); if (dn < 0xCC || dp < 0xCC) { return PowerSupplyTypeUSBHost; } int x = (dn * 1000) / dp; if((x - 1291) <= 214) { return PowerSupplyTypeUSBBrick1000mA; } if((x - 901) <= 219 && dp <= 479 ) { return PowerSupplyTypeUSBBrick500mA; } else { return PowerSupplyTypeUSBHost; } }
static PowerSupplyType identify_usb_charger(void) { int dn; int dp; int x; iphone_gpio_pin_output(PMU_GPIO_CHARGER_IDENTIFY_DN, 1); dn = query_adc(PMU_ADCC1_ADCINMUX_ADCIN2_DIV << PMU_ADCC1_ADCINMUX_SHIFT); if(dn < 0) dn = 0; iphone_gpio_pin_output(PMU_GPIO_CHARGER_IDENTIFY_DN, 0); iphone_gpio_pin_output(PMU_GPIO_CHARGER_IDENTIFY_DP, 1); dp = query_adc(PMU_ADCC1_ADCINMUX_ADCIN2_DIV << PMU_ADCC1_ADCINMUX_SHIFT); if(dp < 0) dp = 0; iphone_gpio_pin_output(PMU_GPIO_CHARGER_IDENTIFY_DP, 0); if(dn < 99 || dp < 99) { return PowerSupplyTypeUSBHost; } x = (dn * 1000) / dp; if((x - 1291) <= 214) { return PowerSupplyTypeUSBBrick1000mA; } if((x - 901) <= 219 && dn <= 367 ) { return PowerSupplyTypeUSBBrick500mA; } else { return PowerSupplyTypeUSBHost; } }
int iphone_pmu_get_battery_voltage(void) { return query_adc(PMU_ADCC1_ADCINMUX_BATSNS_DIV << PMU_ADCC1_ADCINMUX_SHIFT); }