Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
	}
}
Ejemplo n.º 3
0
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;
	}
}
Ejemplo n.º 4
0
int iphone_pmu_get_battery_voltage(void)
{
	return query_adc(PMU_ADCC1_ADCINMUX_BATSNS_DIV << PMU_ADCC1_ADCINMUX_SHIFT);
}