Loading drivers/usb/pd/qpnp-pdphy.c +19 −10 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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 */ Loading Loading @@ -443,12 +446,12 @@ int pd_phy_signal(enum pd_sig_type sig) if (ret) return ret; ret = wait_event_interruptible_timeout(pdphy->tx_waitq, ret = wait_event_interruptible_hrtimeout(pdphy->tx_waitq, pdphy->tx_status != -EINPROGRESS, msecs_to_jiffies(HARD_RESET_COMPLETE_TIME)); if (ret <= 0) { ms_to_ktime(HARD_RESET_COMPLETE_TIME)); if (ret) { dev_err(pdphy->dev, "%s: failed ret %d", __func__, ret); return ret ? ret : -ETIMEDOUT; return ret; } ret = pdphy_reg_write(pdphy, USB_PDPHY_TX_CONTROL, 0); Loading Loading @@ -526,18 +529,24 @@ 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) return ret; ret = wait_event_interruptible_timeout(pdphy->tx_waitq, ret = wait_event_interruptible_hrtimeout(pdphy->tx_waitq, pdphy->tx_status != -EINPROGRESS, msecs_to_jiffies(RECEIVER_RESPONSE_TIME)); if (ret <= 0) { ms_to_ktime(RECEIVER_RESPONSE_TIME)); if (ret) { dev_err(pdphy->dev, "%s: failed ret %d", __func__, ret); return ret ? ret : -ETIMEDOUT; return ret; } if (hdr && !pdphy->tx_status) Loading Loading
drivers/usb/pd/qpnp-pdphy.c +19 −10 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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 */ Loading Loading @@ -443,12 +446,12 @@ int pd_phy_signal(enum pd_sig_type sig) if (ret) return ret; ret = wait_event_interruptible_timeout(pdphy->tx_waitq, ret = wait_event_interruptible_hrtimeout(pdphy->tx_waitq, pdphy->tx_status != -EINPROGRESS, msecs_to_jiffies(HARD_RESET_COMPLETE_TIME)); if (ret <= 0) { ms_to_ktime(HARD_RESET_COMPLETE_TIME)); if (ret) { dev_err(pdphy->dev, "%s: failed ret %d", __func__, ret); return ret ? ret : -ETIMEDOUT; return ret; } ret = pdphy_reg_write(pdphy, USB_PDPHY_TX_CONTROL, 0); Loading Loading @@ -526,18 +529,24 @@ 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) return ret; ret = wait_event_interruptible_timeout(pdphy->tx_waitq, ret = wait_event_interruptible_hrtimeout(pdphy->tx_waitq, pdphy->tx_status != -EINPROGRESS, msecs_to_jiffies(RECEIVER_RESPONSE_TIME)); if (ret <= 0) { ms_to_ktime(RECEIVER_RESPONSE_TIME)); if (ret) { dev_err(pdphy->dev, "%s: failed ret %d", __func__, ret); return ret ? ret : -ETIMEDOUT; return ret; } if (hdr && !pdphy->tx_status) Loading