From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Guenter Roeck <linux@roeck-us.net>, linux-usb@vger.kernel.org
Subject: [PATCH 08/15] usb: pd: Add definitions for the Enter_USB message
Date: Mon, 30 Dec 2019 17:26:04 +0300 [thread overview]
Message-ID: <20191230142611.24921-9-heikki.krogerus@linux.intel.com> (raw)
In-Reply-To: <20191230142611.24921-1-heikki.krogerus@linux.intel.com>
Version 2.0 of the USB Power Delivery Specification R3.0
defines a new message called Enter_USB, which is made with
USB4 in mind. Enter_USB message is in practice the same as
the Enter Mode command (used when entering alternate modes)
that just needs to be used when entering USB4 mode.
The message does also support entering USB 2.0 or USB 3.2
mode instead of USB4 mode, but it is only required with
USB4. I.e. with USB2 and USB3 Enter_USB message is optional.
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
---
include/linux/usb/pd.h | 33 ++++++++++++++++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/include/linux/usb/pd.h b/include/linux/usb/pd.h
index 145c38e351c2..a665d7f21142 100644
--- a/include/linux/usb/pd.h
+++ b/include/linux/usb/pd.h
@@ -45,7 +45,8 @@ enum pd_data_msg_type {
PD_DATA_BATT_STATUS = 5,
PD_DATA_ALERT = 6,
PD_DATA_GET_COUNTRY_INFO = 7,
- /* 8-14 Reserved */
+ PD_DATA_ENTER_USB = 8,
+ /* 9-14 Reserved */
PD_DATA_VENDOR_DEF = 15,
/* 16-31 Reserved */
};
@@ -418,6 +419,36 @@ static inline unsigned int rdo_max_power(u32 rdo)
return ((rdo >> RDO_BATT_MAX_PWR_SHIFT) & RDO_PWR_MASK) * 250;
}
+/* Enter_USB Data Object */
+#define EUDO_USB_MODE_MASK GENMASK(30, 28)
+#define EUDO_USB_MODE_SHIFT 28
+#define EUDO_USB_MODE_USB2 0
+#define EUDO_USB_MODE_USB3 1
+#define EUDO_USB_MODE_USB4 2
+#define EUDO_USB4_DRD BIT(26)
+#define EUDO_USB3_DRD BIT(25)
+#define EUDO_CABLE_SPEED_MASK GENMASK(23, 21)
+#define EUDO_CABLE_SPEED_SHIFT 21
+#define EUDO_CABLE_SPEED_USB2 0
+#define EUDO_CABLE_SPEED_USB3_GEN1 1
+#define EUDO_CABLE_SPEED_USB4_GEN2 2
+#define EUDO_CABLE_SPEED_USB4_GEN3 3
+#define EUDO_CABLE_TYPE_MASK GENMASK(20, 19)
+#define EUDO_CABLE_TYPE_SHIFT 19
+#define EUDO_CABLE_TYPE_PASSIVE 0
+#define EUDO_CABLE_TYPE_RE_TIMER 1
+#define EUDO_CABLE_TYPE_RE_DRIVER 2
+#define EUDO_CABLE_TYPE_OPTICAL 3
+#define EUDO_CABLE_CURRENT_MASK GENMASK(18, 17)
+#define EUDO_CABLE_CURRENT_SHIFT 17
+#define EUDO_CABLE_CURRENT_NOTSUPP 0
+#define EUDO_CABLE_CURRENT_3A 2
+#define EUDO_CABLE_CURRENT_5A 3
+#define EUDO_PCIE_SUPPORT BIT(16)
+#define EUDO_DP_SUPPORT BIT(15)
+#define EUDO_TBT_SUPPORT BIT(14)
+#define EUDO_HOST_PRESENT BIT(13)
+
/* USB PD timers and counters */
#define PD_T_NO_RESPONSE 5000 /* 4.5 - 5.5 seconds */
#define PD_T_DB_DETECT 10000 /* 10 - 15 seconds */
--
2.24.1
next prev parent reply other threads:[~2019-12-30 14:26 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-30 14:25 [PATCH 00/15] USB Type-C changes Heikki Krogerus
2019-12-30 14:25 ` [PATCH 01/15] usb: typec: Block mode entry if the port has the mode disabled Heikki Krogerus
2019-12-30 14:25 ` [PATCH 02/15] usb: typec: Add parameter for the VDO to typec_altmode_enter() Heikki Krogerus
2019-12-30 14:25 ` [PATCH 03/15] usb: typec: More API for cable handling Heikki Krogerus
2019-12-30 14:26 ` [PATCH 04/15] usb: typec: Make the attributes read-only when writing is not possible Heikki Krogerus
2020-01-09 9:46 ` Greg Kroah-Hartman
2020-01-09 11:28 ` Heikki Krogerus
2019-12-30 14:26 ` [PATCH 05/15] usb: typec: Hide the port_type attribute when it's not supported Heikki Krogerus
2019-12-30 14:26 ` [PATCH 06/15] usb: typec: Allow power role swapping even without USB PD Heikki Krogerus
2019-12-30 14:26 ` [PATCH 07/15] usb: typec: Fix the description of struct typec_capability Heikki Krogerus
2019-12-30 14:26 ` Heikki Krogerus [this message]
2019-12-30 14:26 ` [PATCH 09/15] usb: pd: Add definition for DFP and UFP1 VDOs Heikki Krogerus
2019-12-30 14:26 ` [PATCH 10/15] usb: typec: Add the Product Type VDOs to struct usb_pd_identity Heikki Krogerus
2019-12-30 14:26 ` [PATCH 11/15] usb: typec: Add definitions for the latest specification releases Heikki Krogerus
2019-12-30 14:26 ` [PATCH 12/15] usb: typec: Give the mux drivers all the details regarding the port state Heikki Krogerus
2019-12-30 14:26 ` [PATCH 13/15] usb: typec: Provide definitions for the USB modes Heikki Krogerus
2019-12-30 14:26 ` [PATCH 14/15] usb: typec: Add member for the supported USB modes to struct typec_capability Heikki Krogerus
2020-01-09 9:52 ` Greg Kroah-Hartman
2020-01-09 11:30 ` Heikki Krogerus
2019-12-30 14:26 ` [PATCH 15/15] usb: typec: ucsi: Store the supported USB modes Heikki Krogerus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191230142611.24921-9-heikki.krogerus@linux.intel.com \
--to=heikki.krogerus@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux@roeck-us.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.