lkml.org 
[lkml]   [2023]   [Feb]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v11 7/9] dt-bindings: display: bridge: it6505: Add mode-switch support
    On Sat, Feb 4, 2023 at 9:31 PM Pin-yen Lin <treapking@chromium.org> wrote:
    >
    > ITE IT6505 can be used in systems to switch the DP traffic between
    > two downstreams, which can be USB Type-C DisplayPort alternate mode
    > lane or regular DisplayPort output ports.
    >
    > Update the binding to accommodate this usage by introducing a
    > data-lanes and a mode-switch property on endpoints.
    >
    > Signed-off-by: Pin-yen Lin <treapking@chromium.org>
    >
    > ---
    >
    > Changes in v11:
    > - Updated the description of the endpoints in the bindings
    > - Referenced video-interfaces.yaml instead for the endpoints binding
    > - Removed duplicated definitions from inherited schema
    >
    > Changes in v9:
    > - Fixed subject prefix again
    > - Changed the naming of the example node for it6505
    >
    > Changes in v8:
    > - Updated bindings for data-lanes property
    > - Fixed subject prefix
    >
    > Changes in v7:
    > - Fixed issues reported by dt_binding_check.
    > - Updated the schema and the example dts for data-lanes.
    > - Changed to generic naming for the example dts node.
    >
    > Changes in v6:
    > - Remove switches node and use endpoints and data-lanes property to
    > describe the connections.
    >
    > .../bindings/display/bridge/ite,it6505.yaml | 101 +++++++++++++++---
    > 1 file changed, 88 insertions(+), 13 deletions(-)
    >
    > diff --git a/Documentation/devicetree/bindings/display/bridge/ite,it6505.yaml b/Documentation/devicetree/bindings/display/bridge/ite,it6505.yaml
    > index b16a9d9127dd..8ae9c5cba22c 100644
    > --- a/Documentation/devicetree/bindings/display/bridge/ite,it6505.yaml
    > +++ b/Documentation/devicetree/bindings/display/bridge/ite,it6505.yaml
    > @@ -75,22 +75,49 @@ properties:
    > port@1:
    > $ref: /schemas/graph.yaml#/$defs/port-base
    > unevaluatedProperties: false
    > - description: Video port for DP output
    > + description:
    > + Video port for DP output. Each endpoint connects to a video output
    > + downstream, and the "data-lanes" property is used to describe the pin
    > + connections. 0, 1, 2, 3 in "data-lanes" maps to TX0, TX1, TX2, TX3,
    > + respectively.
    >
    > - properties:
    > - endpoint:
    > - $ref: /schemas/graph.yaml#/$defs/endpoint-base
    > +
    > + patternProperties:
    > + "^endpoint@[01]$":
    > + $ref: /schemas/media/video-interfaces.yaml#
    > unevaluatedProperties: false
    >
    > properties:
    > + reg: true
    > +
    > + remote-endpoint: true
    > +
    > data-lanes:
    > - minItems: 1
    > - uniqueItems: true
    > - items:
    > - - enum: [ 0, 1 ]
    > - - const: 1
    > - - const: 2
    > - - const: 3
    > + oneOf:
    > + - items:
    > + - enum: [0, 1, 2, 3]

    Based on the datasheets we have and the downstream driver, I assume
    the hardware implements "lane swap" as simply reversing the order
    of the output pins.

    In that case the hardware can't output 1 lane DP on any arbitrary lane,
    but only lane 0 or 3.

    > + - items:
    > + - const: 0
    > + - const: 1
    > +
    > + - items:
    > + - const: 2
    > + - const: 3

    And maybe a bit pedantic, but have the order correct as:

    - const: 3
    - const: 2

    > + - items:
    > + - const: 0
    > + - const: 1
    > + - const: 2
    > + - const: 3
    > +
    > + mode-switch:
    > + type: boolean
    > + description: Register this node as a Type-C mode switch or not.

    Same as the anx7625 patch, I would reword this as "Serves as Type-C mode
    switch if present".


    ChenYu


    > +
    > + required:
    > + - reg
    > + - remote-endpoint
    >
    > required:
    > - port@0
    > @@ -102,7 +129,6 @@ required:
    > - pwr18-supply
    > - interrupts
    > - reset-gpios
    > - - extcon
    > - ports
    >
    > additionalProperties: false
    > @@ -139,8 +165,11 @@ examples:
    > };
    >
    > port@1 {
    > + #address-cells = <1>;
    > + #size-cells = <0>;
    > reg = <1>;
    > - it6505_out: endpoint {
    > + it6505_out: endpoint@0 {
    > + reg = <0>;
    > remote-endpoint = <&dp_in>;
    > data-lanes = <0 1>;
    > };
    > @@ -148,3 +177,49 @@ examples:
    > };
    > };
    > };
    > + - |
    > + #include <dt-bindings/interrupt-controller/irq.h>
    > +
    > + i2c {
    > + #address-cells = <1>;
    > + #size-cells = <0>;
    > +
    > + dp-bridge@5c {
    > + compatible = "ite,it6505";
    > + interrupts = <8 IRQ_TYPE_LEVEL_LOW 8 0>;
    > + reg = <0x5c>;
    > + pinctrl-names = "default";
    > + pinctrl-0 = <&it6505_pins>;
    > + ovdd-supply = <&mt6366_vsim2_reg>;
    > + pwr18-supply = <&pp1800_dpbrdg_dx>;
    > + reset-gpios = <&pio 177 0>;
    > +
    > + ports {
    > + #address-cells = <1>;
    > + #size-cells = <0>;
    > + port@0 {
    > + reg = <0>;
    > + it6505_dpi_in: endpoint {
    > + remote-endpoint = <&dpi_out>;
    > + };
    > + };
    > + port@1 {
    > + #address-cells = <1>;
    > + #size-cells = <0>;
    > + reg = <1>;
    > + ite_typec0: endpoint@0 {
    > + reg = <0>;
    > + mode-switch;
    > + data-lanes = <0 1>;
    > + remote-endpoint = <&typec_port0>;
    > + };
    > + ite_typec1: endpoint@1 {
    > + reg = <1>;
    > + mode-switch;
    > + data-lanes = <2 3>;
    > + remote-endpoint = <&typec_port1>;
    > + };
    > + };
    > + };
    > + };
    > + };
    > --
    > 2.39.1.519.gcb327c4b5f-goog
    >

    \
     
     \ /
      Last update: 2023-03-27 00:10    [W:3.755 / U:0.568 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site