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

Commit ea7db3ba authored by Jack Pham's avatar Jack Pham
Browse files

usb: pd: qpnp-pdphy: Set nRetryCount based on PD spec rev



PD 3.0 changed nRetryCount to 2 whereas it was 3 on PD 2.0. This
affects how many times a failed TX message will be attempted in
pd_phy_write(). Add a check for the spec rev field of the message
header to determine what value to set for TX_CONTROL_RETRY_COUNT.

Change-Id: I342262e6555734184222e5a97aac03a148bc900b
Signed-off-by: default avatarJack Pham <jackp@codeaurora.org>
parent b7dec8b7
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@
#define TX_SIZE_MASK			0xF

#define USB_PDPHY_TX_CONTROL		0x44
#define TX_CONTROL_RETRY_COUNT		(BIT(6) | BIT(5))
#define TX_CONTROL_RETRY_COUNT(n)	(((n) & 0x3) << 5)
#define TX_CONTROL_FRAME_TYPE		(BIT(4) | BIT(3) | BIT(2))
#define TX_CONTROL_FRAME_TYPE_CABLE_RESET (0x1 << 2)
#define TX_CONTROL_SEND_SIGNAL		BIT(1)
@@ -77,6 +77,9 @@
#define VDD_PDPHY_VOL_MAX		3300000 /* uV */
#define VDD_PDPHY_HPM_LOAD		3000 /* uA */

/* Message Spec Rev field */
#define PD_MSG_HDR_REV(hdr)		(((hdr) >> 6) & 3)

/* timers */
#define RECEIVER_RESPONSE_TIME		15	/* tReceiverResponse */
#define HARD_RESET_COMPLETE_TIME	5	/* tHardResetComplete */
@@ -526,7 +529,13 @@ int pd_phy_write(u16 hdr, const u8 *data, size_t data_len, enum pd_sop_type sop)

	usleep_range(2, 3);

	val = TX_CONTROL_RETRY_COUNT | (sop << 2) | TX_CONTROL_SEND_MSG;
	val = (sop << 2) | TX_CONTROL_SEND_MSG;

	/* nRetryCount == 2 for PD 3.0, 3 for PD 2.0 */
	if (PD_MSG_HDR_REV(hdr) == USBPD_REV_30)
		val |= TX_CONTROL_RETRY_COUNT(2);
	else
		val |= TX_CONTROL_RETRY_COUNT(3);

	ret = pdphy_reg_write(pdphy, USB_PDPHY_TX_CONTROL, val);
	if (ret)