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

Commit 29ffacc3 authored by Vijayavardhan Vennapusa's avatar Vijayavardhan Vennapusa Committed by Jack Pham
Browse files

USB: pd: Notify selfpowered state based on type C current



It is required to notify device as selfpowered and bmaxpower as zero
even for non PD capable devices based on Type C current. Hence notify
as selfpowerer in bmAttributes of configuration descriptor in case of
medium or high Type C current.

Change-Id: Ie552560d93a8195f4c69fdaf6086ef3a52b31d39
Signed-off-by: default avatarVijayavardhan Vennapusa <vvreddy@codeaurora.org>
Signed-off-by: default avatarJack Pham <jackp@codeaurora.org>
parent 559bd47c
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -2727,6 +2727,13 @@ static void dwc3_resume_work(struct work_struct *w)
					ORIENTATION_CC2 : ORIENTATION_CC1;

		dbg_event(0xFF, "cc_state", mdwc->typec_orientation);

		ret = extcon_get_property(edev, extcon_id,
				EXTCON_PROP_USB_TYPEC_MED_HIGH_CURRENT, &val);
		if (!ret)
			dwc->gadget.is_selfpowered = val.intval;
		else
			dwc->gadget.is_selfpowered = 0;
	}

	/*
+4 −0
Original line number Diff line number Diff line
@@ -570,6 +570,10 @@ static int config_buf(struct usb_configuration *config,
	c->iConfiguration = config->iConfiguration;
	c->bmAttributes = USB_CONFIG_ATT_ONE | config->bmAttributes;
	c->bMaxPower = encode_bMaxPower(speed, config);
	if (config->cdev->gadget->is_selfpowered) {
		c->bmAttributes |= USB_CONFIG_ATT_SELFPOWER;
		c->bMaxPower = 0;
	}

	/* There may be e.g. OTG descriptors */
	if (config->descriptors) {
+6 −1
Original line number Diff line number Diff line
@@ -125,14 +125,19 @@
 * @type:       integer (intval)
 * @value:      0 (USB/USB2) or 1 (USB3)
 * @default:    0 (USB/USB2)
 * - EXTCON_PROP_USB_TYPEC_MED_HIGH_CURRENT
 * @type:       integer (intval)
 * @value:      0 (default current), 1 (medium or high current)
 * @default:    0 (default current)
 *
 */
#define EXTCON_PROP_USB_VBUS		0
#define EXTCON_PROP_USB_TYPEC_POLARITY	1
#define EXTCON_PROP_USB_SS		2
#define EXTCON_PROP_USB_TYPEC_MED_HIGH_CURRENT	3

#define EXTCON_PROP_USB_MIN		0
#define EXTCON_PROP_USB_MAX		2
#define EXTCON_PROP_USB_MAX		3
#define EXTCON_PROP_USB_CNT	(EXTCON_PROP_USB_MAX - EXTCON_PROP_USB_MIN + 1)

/* Properties of EXTCON_TYPE_CHG. */