From: Stephen Boyd <swboyd@chromium.org>
To: chrome-platform@lists.linux.dev
Cc: linux-kernel@vger.kernel.org, patches@lists.linux.dev,
devicetree@vger.kernel.org,
Douglas Anderson <dianders@chromium.org>,
Pin-yen Lin <treapking@chromium.org>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Benson Leung <bleung@chromium.org>,
Conor Dooley <conor+dt@kernel.org>,
Daniel Vetter <daniel@ffwll.ch>, David Airlie <airlied@gmail.com>,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
dri-devel@lists.freedesktop.org,
Guenter Roeck <groeck@chromium.org>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Jonas Karlman <jonas@kwiboo.se>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Lee Jones <lee@kernel.org>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Neil Armstrong <neil.armstrong@linaro.org>,
Prashant Malani <pmalani@chromium.org>,
Robert Foss <rfoss@kernel.org>, Rob Herring <robh+dt@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
Tzung-Bi Shih <tzungbi@kernel.org>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Daniel Scally <djrscally@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Ivan Orlov <ivan.orlov0322@gmail.com>,
linux-acpi@vger.kernel.org, linux-usb@vger.kernel.org,
Mika Westerberg <mika.westerberg@linux.intel.com>,
"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
Sakari Ailus <sakari.ailus@linux.intel.com>,
Vinod Koul <vkoul@kernel.org>,
"Rob Herring (Arm)" <robh@kernel.org>
Subject: [PATCH v4 15/18] dt-bindings: usb: Add ports to google,cros-ec-typec for DP altmode
Date: Sat, 31 Aug 2024 21:06:53 -0700 [thread overview]
Message-ID: <20240901040658.157425-16-swboyd@chromium.org> (raw)
In-Reply-To: <20240901040658.157425-1-swboyd@chromium.org>
Add a DT graph binding to google,cros-ec-typec so that it can combine
DisplayPort (DP) and USB SuperSpeed (SS) data into a USB type-c endpoint
that is connected to the usb-c-connector node's SS endpoint. This also
allows us to connect the DP and USB nodes in the graph to the USB type-c
connectors, providing the full picture of the USB type-c data flows in
the system.
Allow there to be multiple typec nodes underneath the EC node so that
one DT graph exists per DP bridge. The EC is actually controlling TCPCs
and redrivers that combine the DP and USB signals together so this more
accurately reflects the hardware design without introducing yet another
DT node underneath the EC for USB type-c.
If the type-c ports are being shared between a single DP controller then
the ports need to know about each other and determine a policy to drive
DP to one type-c port. If the type-c ports each have their own dedicated
DP controller then they're able to operate independently and enter/exit
DP altmode independently as well. We can't connect the DP controller's
endpoint to one usb-c-connector port@1 endpoint and the USB controller's
endpoint to another usb-c-connector port@1 endpoint either because the
DP muxing case would have DP connected to two usb-c-connector endpoints
which the graph binding doesn't support.
Therefore, one typec node is required per the capabilities of the type-c
port(s) being managed. This also lets us indicate which type-c ports the
DP controller is wired to. For example, if DP was connected to ports 0
and 2, while port 1 was connected to another DP controller we wouldn't
be able to implement that without having some other DT property to
indicate which output ports are connected to the DP endpoint.
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
Cc: Conor Dooley <conor+dt@kernel.org>
Acked-by: Lee Jones <lee@kernel.org>
Cc: Benson Leung <bleung@chromium.org>
Cc: Guenter Roeck <groeck@chromium.org>
Cc: Prashant Malani <pmalani@chromium.org>
Cc: Tzung-Bi Shih <tzungbi@kernel.org>
Cc: <devicetree@vger.kernel.org>
Cc: <chrome-platform@lists.linux.dev>
Cc: Pin-yen Lin <treapking@chromium.org>
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
---
.../bindings/mfd/google,cros-ec.yaml | 7 +-
.../bindings/usb/google,cros-ec-typec.yaml | 229 ++++++++++++++++++
2 files changed, 233 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml b/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml
index c991626dc22b..bbe28047d0c0 100644
--- a/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml
+++ b/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml
@@ -98,9 +98,6 @@ properties:
gpio-controller: true
- typec:
- $ref: /schemas/usb/google,cros-ec-typec.yaml#
-
ec-pwm:
$ref: /schemas/pwm/google,cros-ec-pwm.yaml#
deprecated: true
@@ -166,6 +163,10 @@ patternProperties:
type: object
$ref: /schemas/extcon/extcon-usbc-cros-ec.yaml#
+ "^typec(-[0-9])*$":
+ type: object
+ $ref: /schemas/usb/google,cros-ec-typec.yaml#
+
required:
- compatible
diff --git a/Documentation/devicetree/bindings/usb/google,cros-ec-typec.yaml b/Documentation/devicetree/bindings/usb/google,cros-ec-typec.yaml
index 365523a63179..235b86da3cdd 100644
--- a/Documentation/devicetree/bindings/usb/google,cros-ec-typec.yaml
+++ b/Documentation/devicetree/bindings/usb/google,cros-ec-typec.yaml
@@ -26,6 +26,106 @@ properties:
'#size-cells':
const: 0
+ mux-gpios:
+ description: GPIOs indicating which way the DP mux is steered
+ maxItems: 1
+
+ no-hpd:
+ description: Indicates this endpoint doesn't signal HPD for DisplayPort
+ type: boolean
+
+ mode-switch:
+ $ref: usb-switch.yaml#properties/mode-switch
+
+ orientation-switch:
+ $ref: usb-switch.yaml#properties/orientation-switch
+
+ ports:
+ $ref: /schemas/graph.yaml#/properties/ports
+
+ properties:
+ port@0:
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ unevaluatedProperties: false
+ description: Output ports for combined DP and USB SS data
+ patternProperties:
+ "^endpoint@([0-8])$":
+ $ref: usb-switch.yaml#/$defs/usbc-out-endpoint
+ unevaluatedProperties: false
+
+ anyOf:
+ - required:
+ - endpoint@0
+ - required:
+ - endpoint@1
+ - required:
+ - endpoint@2
+ - required:
+ - endpoint@3
+ - required:
+ - endpoint@4
+ - required:
+ - endpoint@5
+ - required:
+ - endpoint@6
+ - required:
+ - endpoint@7
+ - required:
+ - endpoint@8
+
+ port@1:
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ unevaluatedProperties: false
+ description:
+ Input port to receive USB SuperSpeed (SS) data
+ patternProperties:
+ "^endpoint@([0-8])$":
+ $ref: usb-switch.yaml#/$defs/usbc-in-endpoint
+ unevaluatedProperties: false
+
+ anyOf:
+ - required:
+ - endpoint@0
+ - required:
+ - endpoint@1
+ - required:
+ - endpoint@2
+ - required:
+ - endpoint@3
+ - required:
+ - endpoint@4
+ - required:
+ - endpoint@5
+ - required:
+ - endpoint@6
+ - required:
+ - endpoint@7
+ - required:
+ - endpoint@8
+
+ port@2:
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ description:
+ Input port to receive DisplayPort (DP) data
+ unevaluatedProperties: false
+
+ properties:
+ endpoint:
+ $ref: usb-switch.yaml#/$defs/dp-endpoint
+ unevaluatedProperties: false
+
+ required:
+ - endpoint
+
+ required:
+ - port@0
+
+ anyOf:
+ - required:
+ - port@1
+ - required:
+ - port@2
+
patternProperties:
'^connector@[0-9a-f]+$':
$ref: /schemas/connector/usb-connector.yaml#
@@ -35,6 +135,40 @@ patternProperties:
required:
- compatible
+allOf:
+ - if:
+ required:
+ - no-hpd
+ then:
+ properties:
+ ports:
+ required:
+ - port@2
+ - if:
+ required:
+ - mux-gpios
+ then:
+ properties:
+ ports:
+ required:
+ - port@2
+ - if:
+ required:
+ - orientation-switch
+ then:
+ properties:
+ ports:
+ required:
+ - port@2
+ - if:
+ required:
+ - mode-switch
+ then:
+ properties:
+ ports:
+ required:
+ - port@2
+
additionalProperties: false
examples:
@@ -50,6 +184,8 @@ examples:
typec {
compatible = "google,cros-ec-typec";
+ orientation-switch;
+ mode-switch;
#address-cells = <1>;
#size-cells = <0>;
@@ -60,6 +196,99 @@ examples:
power-role = "dual";
data-role = "dual";
try-power-role = "source";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ usb_c0_hs: endpoint {
+ remote-endpoint = <&usb_hub_dfp3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ usb_c0_ss: endpoint {
+ remote-endpoint = <&cros_typec_c0_ss>;
+ };
+ };
+ };
+ };
+
+ connector@1 {
+ compatible = "usb-c-connector";
+ reg = <1>;
+ power-role = "dual";
+ data-role = "dual";
+ try-power-role = "source";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ usb_c1_hs: endpoint {
+ remote-endpoint = <&usb_hub_dfp2_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ usb_c1_ss: endpoint {
+ remote-endpoint = <&cros_typec_c1_ss>;
+ };
+ };
+ };
+ };
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cros_typec_c0_ss: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usb_c0_ss>;
+ data-lanes = <0 1 2 3>;
+ };
+
+ cros_typec_c1_ss: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usb_c1_ss>;
+ data-lanes = <2 3 0 1>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb_in_0: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usb_ss_0_out>;
+ };
+
+ usb_in_1: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usb_ss_1_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+ dp_in: endpoint {
+ remote-endpoint = <&dp_phy>;
+ data-lanes = <0 1>;
+ };
+ };
};
};
};
--
https://chromeos.dev
next prev parent reply other threads:[~2024-09-01 4:07 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-01 4:06 [PATCH v4 00/18] platform/chrome: Add DT USB/DP muxing/topology support Stephen Boyd
2024-09-01 4:06 ` [PATCH v4 01/18] drm/atomic-helper: Introduce lane remapping support to bridges Stephen Boyd
2024-09-20 13:41 ` Dmitry Baryshkov
2024-09-01 4:06 ` [PATCH v4 02/18] drm/bridge: Verify lane assignment is going to work during atomic_check Stephen Boyd
2024-09-01 4:06 ` [PATCH v4 03/18] usb: typec: Stub out typec_switch APIs when CONFIG_TYPEC=n Stephen Boyd
2024-09-03 11:40 ` Heikki Krogerus
2024-09-19 10:12 ` Dmitry Baryshkov
2024-09-01 4:06 ` [PATCH v4 04/18] usb: typec: Add device managed typec_mux_register() Stephen Boyd
2024-09-03 11:57 ` Heikki Krogerus
2024-09-01 4:06 ` [PATCH v4 05/18] usb: typec: Add device managed typec_switch_register() Stephen Boyd
2024-09-02 11:22 ` Andy Shevchenko
2024-09-01 4:06 ` [PATCH v4 06/18] drm/bridge: aux-hpd: Support USB Type-C DP altmodes via DRM lane assignment Stephen Boyd
2024-09-02 11:35 ` Andy Shevchenko
2024-09-03 22:20 ` Stephen Boyd
2024-09-04 13:00 ` Andy Shevchenko
2024-09-04 17:17 ` Stephen Boyd
2024-09-01 4:06 ` [PATCH v4 07/18] drm/bridge: dp_typec: Support USB Type-C orientation Stephen Boyd
2024-09-01 4:06 ` [PATCH v4 08/18] drm/bridge: dp_typec: Add "no-hpd" support Stephen Boyd
2024-09-01 4:06 ` [PATCH v4 09/18] drm/bridge: dp_typec: Allow users to hook hpd notify path Stephen Boyd
2024-09-01 4:06 ` [PATCH v4 10/18] devcon property: Document devcon_match_fn_t Stephen Boyd
2024-09-02 11:17 ` Andy Shevchenko
2024-09-03 22:35 ` Stephen Boyd
2024-09-01 4:06 ` [PATCH v4 11/18] device property: Add remote endpoint to devcon matcher Stephen Boyd
2024-09-02 11:12 ` Andy Shevchenko
2024-09-03 22:49 ` Stephen Boyd
2024-09-01 4:06 ` [PATCH v4 12/18] dt-bindings: usb-switch: Extract endpoints to defs Stephen Boyd
2024-09-01 4:06 ` [PATCH v4 13/18] dt-bindings: usb-switch: Extend for DisplayPort altmode Stephen Boyd
2024-09-19 10:40 ` Dmitry Baryshkov
2024-10-10 22:43 ` Stephen Boyd
2024-10-25 6:36 ` Dmitry Baryshkov
2024-09-01 4:06 ` [PATCH v4 14/18] dt-bindings: Move google,cros-ec-typec binding to usb Stephen Boyd
2024-09-01 4:06 ` Stephen Boyd [this message]
2024-09-03 15:35 ` [PATCH v4 15/18] dt-bindings: usb: Add ports to google,cros-ec-typec for DP altmode Lee Jones
2024-09-20 9:38 ` Dmitry Baryshkov
2024-10-23 1:15 ` Stephen Boyd
2024-10-25 10:49 ` Dmitry Baryshkov
2024-10-29 20:15 ` Stephen Boyd
2024-10-31 18:42 ` Dmitry Baryshkov
2024-10-31 21:45 ` Stephen Boyd
2024-10-31 22:54 ` Dmitry Baryshkov
2024-11-08 0:28 ` Stephen Boyd
2024-11-09 7:05 ` Dmitry Baryshkov
2024-11-12 2:16 ` Stephen Boyd
2024-11-15 17:17 ` Dmitry Baryshkov
2024-11-20 1:09 ` Stephen Boyd
2024-11-21 22:59 ` Dmitry Baryshkov
2024-12-03 23:50 ` Stephen Boyd
2024-12-05 18:47 ` Dmitry Baryshkov
2024-12-11 21:11 ` Stephen Boyd
2024-12-11 21:16 ` Dmitry Baryshkov
2024-12-11 21:21 ` Stephen Boyd
2024-09-01 4:06 ` [PATCH v4 16/18] platform/chrome: cros_ec_typec: Add support for signaling DP HPD via drm_bridge Stephen Boyd
2024-09-04 9:35 ` Tzung-Bi Shih
2024-09-01 4:06 ` [PATCH v4 17/18] platform/chrome: cros_ec_typec: Support DP muxing Stephen Boyd
2024-09-04 9:36 ` Tzung-Bi Shih
2024-09-01 4:06 ` [PATCH v4 18/18] platform/chrome: cros_ec_typec: Handle lack of HPD information Stephen Boyd
2024-09-04 9:36 ` Tzung-Bi Shih
2024-09-04 21:45 ` Stephen Boyd
2024-09-06 8:18 ` Tzung-Bi Shih
2024-09-06 23:22 ` Stephen Boyd
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=20240901040658.157425-16-swboyd@chromium.org \
--to=swboyd@chromium.org \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=alexandre.belloni@bootlin.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=andrzej.hajda@intel.com \
--cc=bleung@chromium.org \
--cc=chrome-platform@lists.linux.dev \
--cc=conor+dt@kernel.org \
--cc=daniel@ffwll.ch \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=djrscally@gmail.com \
--cc=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=gregkh@linuxfoundation.org \
--cc=groeck@chromium.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=ivan.orlov0322@gmail.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=lee@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mika.westerberg@linux.intel.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=patches@lists.linux.dev \
--cc=pmalani@chromium.org \
--cc=rafael.j.wysocki@intel.com \
--cc=rfoss@kernel.org \
--cc=robh+dt@kernel.org \
--cc=robh@kernel.org \
--cc=sakari.ailus@linux.intel.com \
--cc=treapking@chromium.org \
--cc=tzimmermann@suse.de \
--cc=tzungbi@kernel.org \
--cc=vkoul@kernel.org \
/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