Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83cf33d6 authored by Vijayavardhan Vennapusa's avatar Vijayavardhan Vennapusa
Browse files

dwc3: msm: Notify -ETIMEDOUT always in case of floating charger



Charger driver expects USB driver notify -ETIMEDOUT always on
POWER_SUPPLY_PROP_CURRENT_MAXCURRENT on enumeration failure in case
of floating charger. This is to set ICL to value based on Rp in case of
floating charger. But currently driver is not notifying this, when floating
charger is disconnected and connected back. Due to this, device is charging
only with 100mA instead of current based on Rp value. Fix this by having
proper check and allow to notify in case of floating charger type.

Change-Id: Iee0c4d8faa7e25c8445b83784a782751e7148421
Signed-off-by: default avatarVijayavardhan Vennapusa <vvreddy@codeaurora.org>
parent 8aedd708
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -3692,20 +3692,20 @@ static int dwc3_msm_gadget_vbus_draw(struct dwc3_msm *mdwc, unsigned mA)
	union power_supply_propval pval = {0};
	int ret, psy_type;

	if (mdwc->max_power == mA)
	psy_type = get_psy_type(mdwc);
	if (psy_type == POWER_SUPPLY_TYPE_USB_FLOAT) {
		pval.intval = -ETIMEDOUT;
		goto set_prop;
	}

	if (mdwc->max_power == mA || psy_type != POWER_SUPPLY_TYPE_USB)
		return 0;

	psy_type = get_psy_type(mdwc);
	if (psy_type == POWER_SUPPLY_TYPE_USB) {
	dev_info(mdwc->dev, "Avail curr from USB = %u\n", mA);
	/* Set max current limit in uA */
	pval.intval = 1000 * mA;
	} else if (psy_type == POWER_SUPPLY_TYPE_USB_FLOAT) {
		pval.intval = -ETIMEDOUT;
	} else {
		return 0;
	}

set_prop:
	ret = power_supply_set_property(mdwc->usb_psy,
				POWER_SUPPLY_PROP_SDP_CURRENT_MAX, &pval);
	if (ret) {