From: Li Jun <jun.li@nxp.com>
To: robh+dt@kernel.org, gregkh@linuxfoundation.org,
heikki.krogerus@linux.intel.com, linux@roeck-us.net
Cc: jun.li@nxp.com, a.hajda@samsung.com, cw00.choi@samsung.com,
shufan_lee@richtek.com, peter.chen@nxp.com, gsomlo@gmail.com,
devicetree@vger.kernel.org, linux-usb@vger.kernel.org,
linux-imx@nxp.com
Subject: [PATCH v5 01/14] dt-bindings: connector: add properties for typec
Date: Thu, 3 May 2018 08:24:41 +0800 [thread overview]
Message-ID: <1525307094-27402-2-git-send-email-jun.li@nxp.com> (raw)
In-Reply-To: <1525307094-27402-1-git-send-email-jun.li@nxp.com>
Add bingdings supported by current typec driver, so user can pass
all those properties via dt.
Signed-off-by: Li Jun <jun.li@nxp.com>
---
.../bindings/connector/usb-connector.txt | 44 +++++++++++++++
include/dt-bindings/usb/pd.h | 62 ++++++++++++++++++++++
2 files changed, 106 insertions(+)
diff --git a/Documentation/devicetree/bindings/connector/usb-connector.txt b/Documentation/devicetree/bindings/connector/usb-connector.txt
index e1463f1..4b19de6d0 100644
--- a/Documentation/devicetree/bindings/connector/usb-connector.txt
+++ b/Documentation/devicetree/bindings/connector/usb-connector.txt
@@ -15,6 +15,33 @@ Optional properties:
- type: size of the connector, should be specified in case of USB-A, USB-B
non-fullsize connectors: "mini", "micro".
+Optional properties for usb-c-connector:
+- power-role: should be one of "source", "sink" or "dual"(DRP) if typec
+ connector has power support.
+- try-power-role: preferred power role if "dual"(DRP) can support Try.SNK
+ or Try.SRC, should be "sink" for Try.SNK or "source" for Try.SRC.
+- data-role: should be one of "host", "device", "dual"(DRD) if typec
+ connector supports USB data.
+
+Required properties for usb-c-connector with power delivery support:
+- source-pdos: An array of u32 with each entry providing supported power
+ source data object(PDO), the detailed bit definitions of PDO can be found
+ in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.2
+ Source_Capabilities Message, the order of each entry(PDO) should follow
+ the PD spec chapter 6.4.1. Required for power source and power dual role.
+ User can specify the source PDO array via PDO_FIXED/BATT/VAR() defined in
+ dt-bindings/usb/pd.h.
+- sink-pdos: An array of u32 with each entry providing supported power
+ sink data object(PDO), the detailed bit definitions of PDO can be found
+ in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.3
+ Sink Capabilities Message, the order of each entry(PDO) should follow
+ the PD spec chapter 6.4.1. Required for power sink and power dual role.
+ User can specify the sink PDO array via PDO_FIXED/BATT/VAR() defined in
+ dt-bindings/usb/pd.h.
+- op-sink-microwatt: Sink required operating power in microwatt, if source
+ can't offer the power, Capability Mismatch is set, required for power
+ sink and power dual role.
+
Required nodes:
- any data bus to the connector should be modeled using the OF graph bindings
specified in bindings/graph.txt, unless the bus is between parent node and
@@ -73,3 +100,20 @@ ccic: s2mm005@33 {
};
};
};
+
+3. USB-C connector attached to a typec port controller(ptn5110), which has
+power delivery support and enables drp.
+
+typec: ptn5110@50 {
+ ...
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ power-role = "dual";
+ try-power-role = "sink";
+ source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>;
+ sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)
+ PDO_VAR(5000, 12000, 2000)>;
+ op-sink-microwatt = <10000000>;
+ };
+};
diff --git a/include/dt-bindings/usb/pd.h b/include/dt-bindings/usb/pd.h
new file mode 100644
index 0000000..7b7a92f
--- /dev/null
+++ b/include/dt-bindings/usb/pd.h
@@ -0,0 +1,62 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __DT_POWER_DELIVERY_H
+#define __DT_POWER_DELIVERY_H
+
+/* Power delivery Power Data Object definitions */
+#define PDO_TYPE_FIXED 0
+#define PDO_TYPE_BATT 1
+#define PDO_TYPE_VAR 2
+#define PDO_TYPE_APDO 3
+
+#define PDO_TYPE_SHIFT 30
+#define PDO_TYPE_MASK 0x3
+
+#define PDO_TYPE(t) ((t) << PDO_TYPE_SHIFT)
+
+#define PDO_VOLT_MASK 0x3ff
+#define PDO_CURR_MASK 0x3ff
+#define PDO_PWR_MASK 0x3ff
+
+#define PDO_FIXED_DUAL_ROLE (1 << 29) /* Power role swap supported */
+#define PDO_FIXED_SUSPEND (1 << 28) /* USB Suspend supported (Source) */
+#define PDO_FIXED_HIGHER_CAP (1 << 28) /* Requires more than vSafe5V (Sink) */
+#define PDO_FIXED_EXTPOWER (1 << 27) /* Externally powered */
+#define PDO_FIXED_USB_COMM (1 << 26) /* USB communications capable */
+#define PDO_FIXED_DATA_SWAP (1 << 25) /* Data role swap supported */
+#define PDO_FIXED_VOLT_SHIFT 10 /* 50mV units */
+#define PDO_FIXED_CURR_SHIFT 0 /* 10mA units */
+
+#define PDO_FIXED_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_FIXED_VOLT_SHIFT)
+#define PDO_FIXED_CURR(ma) ((((ma) / 10) & PDO_CURR_MASK) << PDO_FIXED_CURR_SHIFT)
+
+#define PDO_FIXED(mv, ma, flags) \
+ (PDO_TYPE(PDO_TYPE_FIXED) | (flags) | \
+ PDO_FIXED_VOLT(mv) | PDO_FIXED_CURR(ma))
+
+#define VSAFE5V 5000 /* mv units */
+
+#define PDO_BATT_MAX_VOLT_SHIFT 20 /* 50mV units */
+#define PDO_BATT_MIN_VOLT_SHIFT 10 /* 50mV units */
+#define PDO_BATT_MAX_PWR_SHIFT 0 /* 250mW units */
+
+#define PDO_BATT_MIN_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_BATT_MIN_VOLT_SHIFT)
+#define PDO_BATT_MAX_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_BATT_MAX_VOLT_SHIFT)
+#define PDO_BATT_MAX_POWER(mw) ((((mw) / 250) & PDO_PWR_MASK) << PDO_BATT_MAX_PWR_SHIFT)
+
+#define PDO_BATT(min_mv, max_mv, max_mw) \
+ (PDO_TYPE(PDO_TYPE_BATT) | PDO_BATT_MIN_VOLT(min_mv) | \
+ PDO_BATT_MAX_VOLT(max_mv) | PDO_BATT_MAX_POWER(max_mw))
+
+#define PDO_VAR_MAX_VOLT_SHIFT 20 /* 50mV units */
+#define PDO_VAR_MIN_VOLT_SHIFT 10 /* 50mV units */
+#define PDO_VAR_MAX_CURR_SHIFT 0 /* 10mA units */
+
+#define PDO_VAR_MIN_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_VAR_MIN_VOLT_SHIFT)
+#define PDO_VAR_MAX_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_VAR_MAX_VOLT_SHIFT)
+#define PDO_VAR_MAX_CURR(ma) ((((ma) / 10) & PDO_CURR_MASK) << PDO_VAR_MAX_CURR_SHIFT)
+
+#define PDO_VAR(min_mv, max_mv, max_ma) \
+ (PDO_TYPE(PDO_TYPE_VAR) | PDO_VAR_MIN_VOLT(min_mv) | \
+ PDO_VAR_MAX_VOLT(max_mv) | PDO_VAR_MAX_CURR(max_ma))
+
+ #endif /* __DT_POWER_DELIVERY_H */
--
2.7.4
next prev parent reply other threads:[~2018-05-03 0:41 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-03 0:24 [PATCH v5 00/14] staging: typec: tcpci: move out of staging Li Jun
2018-05-03 0:24 ` Li Jun [this message]
2018-05-03 7:27 ` [PATCH v5 01/14] dt-bindings: connector: add properties for typec Oliver Neukum
2018-05-03 8:35 ` Jun Li
2018-05-03 9:17 ` Oliver Neukum
2018-05-04 8:59 ` Jun Li
2018-05-08 10:03 ` Oliver Neukum
2018-05-10 0:43 ` Jun Li
2018-05-07 15:58 ` Rob Herring
2018-05-08 5:36 ` Jun Li
2018-05-11 19:49 ` Mats Karrman
2018-05-14 9:06 ` Jun Li
2018-05-16 7:21 ` Peter Chen
2018-05-17 13:16 ` Jun Li
2018-05-03 0:24 ` [PATCH v5 02/14] dt-bindings: usb: add documentation for typec port controller(TCPCI) Li Jun
2018-05-07 16:01 ` Rob Herring
2018-05-03 0:24 ` [PATCH v5 03/14] staging: typec: tcpci: add compatible string for nxp ptn5110 Li Jun
2018-05-11 19:51 ` Mats Karrman
2018-05-14 9:15 ` Jun Li
2018-05-03 0:24 ` [PATCH v5 04/14] usb: typec: add fwnode to tcpc Li Jun
2018-05-03 0:24 ` [PATCH v5 05/14] usb: typec: add API to get typec basic port power and data config Li Jun
2018-05-11 19:55 ` Mats Karrman
2018-05-14 9:36 ` Jun Li
2018-05-15 20:52 ` Mats Karrman
2018-05-16 12:25 ` Heikki Krogerus
2018-05-16 20:55 ` Mats Karrman
2018-05-17 12:35 ` Heikki Krogerus
2018-05-17 14:05 ` Jun Li
2018-05-17 14:24 ` Heikki Krogerus
2018-05-17 14:41 ` Jun Li
2018-05-21 13:12 ` Heikki Krogerus
2018-05-22 14:19 ` Jun Li
2018-05-17 13:53 ` Jun Li
2018-05-17 13:26 ` Jun Li
2018-05-17 13:16 ` Jun Li
2018-05-03 0:24 ` [PATCH v5 06/14] usb: typec: tcpm: support get typec and pd config from device properties Li Jun
2018-05-03 0:24 ` [PATCH v5 07/14] staging: typec: tcpci: remove unused tcpci_tcpc_config Li Jun
2018-05-03 0:24 ` [PATCH v5 08/14] staging: typec: tcpci: register port before request irq Li Jun
2018-05-03 8:29 ` Sergei Shtylyov
2018-05-03 8:34 ` Sergei Shtylyov
2018-05-03 0:24 ` [PATCH v5 09/14] staging: typec: tcpci: enable vbus detection Li Jun
2018-05-03 0:24 ` [PATCH v5 10/14] typec: tcpm: add starting value for drp toggling Li Jun
2018-05-03 0:24 ` [PATCH v5 11/14] usb: typec: tcpm: set cc for drp toggling attach Li Jun
2018-05-03 0:24 ` [PATCH v5 12/14] staging: typec: tcpci: keep the not connecting cc line open Li Jun
2018-05-16 8:35 ` Peter Chen
2018-05-17 13:17 ` Jun Li
2018-05-03 0:24 ` [PATCH v5 13/14] staging: typec: tcpci: Only touch target bit when enable vconn Li Jun
2018-05-03 0:24 ` [PATCH v5 14/14] staging: typec: tcpci: move tcpci driver out of staging Li Jun
2018-05-11 21:37 ` Mats Karrman
2018-05-14 9:38 ` Jun Li
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=1525307094-27402-2-git-send-email-jun.li@nxp.com \
--to=jun.li@nxp.com \
--cc=a.hajda@samsung.com \
--cc=cw00.choi@samsung.com \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=gsomlo@gmail.com \
--cc=heikki.krogerus@linux.intel.com \
--cc=linux-imx@nxp.com \
--cc=linux-usb@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=peter.chen@nxp.com \
--cc=robh+dt@kernel.org \
--cc=shufan_lee@richtek.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).