From: Mats Karrman <mats.dev.list@gmail.com>
To: Li Jun <jun.li@nxp.com>,
robh+dt@kernel.org, gregkh@linuxfoundation.org,
heikki.krogerus@linux.intel.com, linux@roeck-us.net
Cc: 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: [v5,01/14] dt-bindings: connector: add properties for typec
Date: Fri, 11 May 2018 21:49:02 +0200 [thread overview]
Message-ID: <deb2502c-4ffc-c7ef-ec6f-4fb5b7685bf6@gmail.com> (raw)
Hi Li Jun,
On 2018-05-03 02:24, Li Jun wrote:
> 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
...set. Required...
(new sentence, otherwise it's unclear what is required; op-sink-microwatt or
Capability Mismatch set)
BR // Mats
> + 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 */
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next reply other threads:[~2018-05-11 19:49 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-11 19:49 Mats Karrman [this message]
-- strict thread matches above, loose matches on Subject: below --
2018-05-17 13:16 [v5,01/14] dt-bindings: connector: add properties for typec Jun Li
2018-05-16 7:21 Peter Chen
2018-05-14 9:06 Jun Li
2018-05-10 0:43 Jun Li
2018-05-08 10:03 Oliver Neukum
2018-05-08 5:36 Jun Li
2018-05-07 15:58 Rob Herring
2018-05-04 8:59 Jun Li
2018-05-03 9:17 Oliver Neukum
2018-05-03 8:35 Jun Li
2018-05-03 7:27 Oliver Neukum
2018-05-03 0:24 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=deb2502c-4ffc-c7ef-ec6f-4fb5b7685bf6@gmail.com \
--to=mats.dev.list@gmail.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=jun.li@nxp.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).