[v2,1/2] dt-bindings: drm/bridge: anx7625: MIPI to DP transmitter binding
diff mbox series

Message ID 75bb8a47d2c3c1f979c6d62158c21988b846e79b.1570760115.git.xji@analogixsemi.com
State New
Headers show
Series
  • Add initial support for slimport anx7625
Related show

Commit Message

Xin Ji Oct. 11, 2019, 2:21 a.m. UTC
The ANX7625 is an ultra-low power 4K Mobile HD Transmitter designed
for portable device. It converts MIPI to DisplayPort 1.3 4K.

You can add support to your board with binding.

Example:
	anx7625_bridge: encoder@58 {
		compatible = "analogix,anx7625";
		reg = <0x58>;
		status = "okay";
		panel-flags = <1>;
		enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
		  reg = <0>;
		  anx_1_in: endpoint {
		    remote-endpoint = <&mipi_dsi>;
		  };
		};

		port@3 {
		  reg = <3>;
		  anx_1_out: endpoint {
		    remote-endpoint = <&panel_in>;
		  };
		};
	};

Signed-off-by: Xin Ji <xji@analogixsemi.com>
---
 .../bindings/display/bridge/anx7625.yaml           | 96 ++++++++++++++++++++++
 1 file changed, 96 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/display/bridge/anx7625.yaml

Comments

Andrzej Hajda Oct. 11, 2019, 11:21 a.m. UTC | #1
On 11.10.2019 04:21, Xin Ji wrote:
> The ANX7625 is an ultra-low power 4K Mobile HD Transmitter designed
> for portable device. It converts MIPI to DisplayPort 1.3 4K.
>
> You can add support to your board with binding.
>
> Example:
> 	anx7625_bridge: encoder@58 {
> 		compatible = "analogix,anx7625";
> 		reg = <0x58>;
> 		status = "okay";
> 		panel-flags = <1>;
> 		enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
> 		reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
> 		#address-cells = <1>;
> 		#size-cells = <0>;
>
> 		port@0 {
> 		  reg = <0>;
> 		  anx_1_in: endpoint {
> 		    remote-endpoint = <&mipi_dsi>;
> 		  };
> 		};
>
> 		port@3 {
> 		  reg = <3>;
> 		  anx_1_out: endpoint {
> 		    remote-endpoint = <&panel_in>;
> 		  };
> 		};
> 	};
>
> Signed-off-by: Xin Ji <xji@analogixsemi.com>
> ---
>  .../bindings/display/bridge/anx7625.yaml           | 96 ++++++++++++++++++++++
>  1 file changed, 96 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/display/bridge/anx7625.yaml
>
> diff --git a/Documentation/devicetree/bindings/display/bridge/anx7625.yaml b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> new file mode 100644
> index 0000000..fc84683
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> @@ -0,0 +1,96 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +# Copyright 2019 Analogix Semiconductor, Inc.
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/display/bridge/anx7625.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Analogix ANX7625 SlimPort (4K Mobile HD Transmitter)
> +
> +maintainers:
> +  - Xin Ji <xji@analogixsemi.com>
> +
> +description: |
> +  The ANX7625 is an ultra-low power 4K Mobile HD Transmitter
> +  designed for portable devices.
> +
> +properties:
> +  "#address-cells": true
> +  "#size-cells": true
> +
> +  compatible:
> +    items:
> +      - const: analogix,anx7625
> +
> +  reg:
> +    maxItems: 1
> +
> +  panel-flags:
> +    description: indicate the panel is internal or external
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  enable-gpios:
> +    description: used for power on chip control, POWER_EN pin D2.
> +    maxItems: 1
> +
> +  reset-gpios:
> +    description: used for reset chip control, RESET_N pin B7.
> +    maxItems: 1
> +
> +  port@0:
> +    type: object
> +    description:
> +      A port node pointing to MIPI DSI host port node.
> +
> +  port@1:
> +    type: object
> +    description:
> +      A port node pointing to MIPI DPI host port node.
> +
> +  port@2:
> +    type: object
> +    description:
> +      A port node pointing to external connector port node.
> +
> +  port@3:
> +    type: object
> +    description:
> +      A port node pointing to eDP port node.


Decrypting available product brief[1], there are following physical lines:

Input:

- MIPI DSI/DPI - video data, are DSI and DPI lines shared?

- I2S - audio data,

- I2C - control line,

- ALERT/INTP - interrupt,

- USB 3.1 SSRc/Tx - for USB forwarding,

Output:

- SS1, SS2,

- SBU/AUX,

- CC1/2.


Having this information I try to understand ports defined by you:

- port@2 you have defined as pointing to external port, but here the
port should be rather subnode of ANX7625 - the chip has CC lines, see
beginning of [2].

- port@3 describes SS1, SS2 and SBU/AUX lines together, am I right? In
USB-C binding SBU and SS lines are represented by different ports,
different approach, but maybe better in this case.


Maybe it would be good to add 2nd example with USB-C port.


[1]:
https://www.analogix.com/system/files/AA-002291-PB-6-ANX7625_ProductBrief.pdf

[2]: Documentation/devicetree/bindings/connector/usb-connector.txt


Regards

Andrzej


> +
> +required:
> +  - "#address-cells"
> +  - "#size-cells"
> +  - compatible
> +  - reg
> +  - port@0
> +  - port@3
> +
> +example:
> +  - |
> +    anx7625_bridge: encoder@58 {
> +        compatible = "analogix,anx7625";
> +        reg = <0x58>;
> +        status = "okay";
> +        panel-flags = <1>;
> +        enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
> +        reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        port@0 {
> +          reg = <0>;
> +          anx_1_in: endpoint {
> +            remote-endpoint = <&mipi_dsi>;
> +          };
> +        };
> +
> +        port@3 {
> +          reg = <3>;
> +          anx_1_out: endpoint {
> +            remote-endpoint = <&panel_in>;
> +          };
> +        };
> +    };
Laurent Pinchart Oct. 11, 2019, 12:54 p.m. UTC | #2
Hi Andrzej,

On Fri, Oct 11, 2019 at 01:21:43PM +0200, Andrzej Hajda wrote:
> On 11.10.2019 04:21, Xin Ji wrote:
> > The ANX7625 is an ultra-low power 4K Mobile HD Transmitter designed
> > for portable device. It converts MIPI to DisplayPort 1.3 4K.
> >
> > You can add support to your board with binding.
> >
> > Example:
> > 	anx7625_bridge: encoder@58 {
> > 		compatible = "analogix,anx7625";
> > 		reg = <0x58>;
> > 		status = "okay";
> > 		panel-flags = <1>;
> > 		enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
> > 		reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
> > 		#address-cells = <1>;
> > 		#size-cells = <0>;
> >
> > 		port@0 {
> > 		  reg = <0>;
> > 		  anx_1_in: endpoint {
> > 		    remote-endpoint = <&mipi_dsi>;
> > 		  };
> > 		};
> >
> > 		port@3 {
> > 		  reg = <3>;
> > 		  anx_1_out: endpoint {
> > 		    remote-endpoint = <&panel_in>;
> > 		  };
> > 		};
> > 	};
> >
> > Signed-off-by: Xin Ji <xji@analogixsemi.com>
> > ---
> >  .../bindings/display/bridge/anx7625.yaml           | 96 ++++++++++++++++++++++
> >  1 file changed, 96 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/display/bridge/anx7625.yaml b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> > new file mode 100644
> > index 0000000..fc84683
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> > @@ -0,0 +1,96 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +# Copyright 2019 Analogix Semiconductor, Inc.
> > +%YAML 1.2
> > +---
> > +$id: "http://devicetree.org/schemas/display/bridge/anx7625.yaml#"
> > +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> > +
> > +title: Analogix ANX7625 SlimPort (4K Mobile HD Transmitter)
> > +
> > +maintainers:
> > +  - Xin Ji <xji@analogixsemi.com>
> > +
> > +description: |
> > +  The ANX7625 is an ultra-low power 4K Mobile HD Transmitter
> > +  designed for portable devices.
> > +
> > +properties:
> > +  "#address-cells": true
> > +  "#size-cells": true
> > +
> > +  compatible:
> > +    items:
> > +      - const: analogix,anx7625
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  panel-flags:
> > +    description: indicate the panel is internal or external
> > +    maxItems: 1
> > +
> > +  interrupts:
> > +    maxItems: 1
> > +
> > +  enable-gpios:
> > +    description: used for power on chip control, POWER_EN pin D2.
> > +    maxItems: 1
> > +
> > +  reset-gpios:
> > +    description: used for reset chip control, RESET_N pin B7.
> > +    maxItems: 1
> > +
> > +  port@0:
> > +    type: object
> > +    description:
> > +      A port node pointing to MIPI DSI host port node.
> > +
> > +  port@1:
> > +    type: object
> > +    description:
> > +      A port node pointing to MIPI DPI host port node.
> > +
> > +  port@2:
> > +    type: object
> > +    description:
> > +      A port node pointing to external connector port node.
> > +
> > +  port@3:
> > +    type: object
> > +    description:
> > +      A port node pointing to eDP port node.
> 
> 
> Decrypting available product brief[1], there are following physical lines:
> 
> Input:
> 
> - MIPI DSI/DPI - video data, are DSI and DPI lines shared?

It would be much easier if we could have access to more complete
information. I believe the DSI and DPI pins could be muxed, but there
should be more DPI pins than DSI pins.

> 
> - I2S - audio data,
> 
> - I2C - control line,
> 
> - ALERT/INTP - interrupt,
> 
> - USB 3.1 SSRc/Tx - for USB forwarding,
> 
> Output:
> 
> - SS1, SS2,
> 
> - SBU/AUX,
> 
> - CC1/2.
> 
> 
> Having this information I try to understand ports defined by you:
> 
> - port@2 you have defined as pointing to external port, but here the
> port should be rather subnode of ANX7625 - the chip has CC lines, see
> beginning of [2].
> 
> - port@3 describes SS1, SS2 and SBU/AUX lines together, am I right? In
> USB-C binding SBU and SS lines are represented by different ports,
> different approach, but maybe better in this case.

I believe that, when connected to a DP display (either DP or eDP), the
DisplayPort signals are output on SS1 and/or SS2. I this really wonder
if we need two separate ports for this, it seems that port@2 and port@3
should be merged.

> Maybe it would be good to add 2nd example with USB-C port.

That would help with the discussion, yes.

> [1]:
> https://www.analogix.com/system/files/AA-002291-PB-6-ANX7625_ProductBrief.pdf
> 
> [2]: Documentation/devicetree/bindings/connector/usb-connector.txt
> 
> > +
> > +required:
> > +  - "#address-cells"
> > +  - "#size-cells"
> > +  - compatible
> > +  - reg
> > +  - port@0
> > +  - port@3
> > +
> > +example:
> > +  - |
> > +    anx7625_bridge: encoder@58 {
> > +        compatible = "analogix,anx7625";
> > +        reg = <0x58>;
> > +        status = "okay";
> > +        panel-flags = <1>;
> > +        enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
> > +        reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        port@0 {
> > +          reg = <0>;
> > +          anx_1_in: endpoint {
> > +            remote-endpoint = <&mipi_dsi>;
> > +          };
> > +        };
> > +
> > +        port@3 {
> > +          reg = <3>;
> > +          anx_1_out: endpoint {
> > +            remote-endpoint = <&panel_in>;
> > +          };
> > +        };
> > +    };
Xin Ji Oct. 14, 2019, 2:53 a.m. UTC | #3
Hi Andrzej Hajda, please check my comment below.

Thanks,
Xin

On Fri, Oct 11, 2019 at 01:21:43PM +0200, Andrzej Hajda wrote:
> On 11.10.2019 04:21, Xin Ji wrote:
> > The ANX7625 is an ultra-low power 4K Mobile HD Transmitter designed
> > for portable device. It converts MIPI to DisplayPort 1.3 4K.
> >
> > You can add support to your board with binding.
> >
> > Example:
> > 	anx7625_bridge: encoder@58 {
> > 		compatible = "analogix,anx7625";
> > 		reg = <0x58>;
> > 		status = "okay";
> > 		panel-flags = <1>;
> > 		enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
> > 		reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
> > 		#address-cells = <1>;
> > 		#size-cells = <0>;
> >
> > 		port@0 {
> > 		  reg = <0>;
> > 		  anx_1_in: endpoint {
> > 		    remote-endpoint = <&mipi_dsi>;
> > 		  };
> > 		};
> >
> > 		port@3 {
> > 		  reg = <3>;
> > 		  anx_1_out: endpoint {
> > 		    remote-endpoint = <&panel_in>;
> > 		  };
> > 		};
> > 	};
> >
> > Signed-off-by: Xin Ji <xji@analogixsemi.com>
> > ---
> >  .../bindings/display/bridge/anx7625.yaml           | 96 ++++++++++++++++++++++
> >  1 file changed, 96 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/display/bridge/anx7625.yaml b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> > new file mode 100644
> > index 0000000..fc84683
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> > @@ -0,0 +1,96 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +# Copyright 2019 Analogix Semiconductor, Inc.
> > +%YAML 1.2
> > +---
> > +$id: "http://devicetree.org/schemas/display/bridge/anx7625.yaml#"
> > +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> > +
> > +title: Analogix ANX7625 SlimPort (4K Mobile HD Transmitter)
> > +
> > +maintainers:
> > +  - Xin Ji <xji@analogixsemi.com>
> > +
> > +description: |
> > +  The ANX7625 is an ultra-low power 4K Mobile HD Transmitter
> > +  designed for portable devices.
> > +
> > +properties:
> > +  "#address-cells": true
> > +  "#size-cells": true
> > +
> > +  compatible:
> > +    items:
> > +      - const: analogix,anx7625
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  panel-flags:
> > +    description: indicate the panel is internal or external
> > +    maxItems: 1
> > +
> > +  interrupts:
> > +    maxItems: 1
> > +
> > +  enable-gpios:
> > +    description: used for power on chip control, POWER_EN pin D2.
> > +    maxItems: 1
> > +
> > +  reset-gpios:
> > +    description: used for reset chip control, RESET_N pin B7.
> > +    maxItems: 1
> > +
> > +  port@0:
> > +    type: object
> > +    description:
> > +      A port node pointing to MIPI DSI host port node.
> > +
> > +  port@1:
> > +    type: object
> > +    description:
> > +      A port node pointing to MIPI DPI host port node.
> > +
> > +  port@2:
> > +    type: object
> > +    description:
> > +      A port node pointing to external connector port node.
> > +
> > +  port@3:
> > +    type: object
> > +    description:
> > +      A port node pointing to eDP port node.
> 
> 
> Decrypting available product brief[1], there are following physical lines:
> 
> Input:
> 
> - MIPI DSI/DPI - video data, are DSI and DPI lines shared?
> 
> - I2S - audio data,
> 
> - I2C - control line,
> 
> - ALERT/INTP - interrupt,
> 
> - USB 3.1 SSRc/Tx - for USB forwarding,
> 
> Output:
> 
> - SS1, SS2,
> 
> - SBU/AUX,
> 
> - CC1/2.
At this application, we didn't use CC1/2 line, we only use the video
format convert(MIPI to DP) feature on anx7625.
> 
> 
> Having this information I try to understand ports defined by you:
> 
> - port@2 you have defined as pointing to external port, but here the
> port should be rather subnode of ANX7625 - the chip has CC lines, see
> beginning of [2].
The port@2 is for Chromium book external port low power mode control,
the driver according this port to register external connector
notify interface to receive "connect/disconnect" event to do low power
control.
> 
> - port@3 describes SS1, SS2 and SBU/AUX lines together, am I right? In
> USB-C binding SBU and SS lines are represented by different ports,
> different approach, but maybe better in this case.
> 
> 
> Maybe it would be good to add 2nd example with USB-C port.
No need to add 2nd example with USB-C port, as I said, we didn't use the
USB Type-C PD feature at anx7625.
> 
> 
> [1]:
> https://www.analogix.com/system/files/AA-002291-PB-6-ANX7625_ProductBrief.pdf
> 
> [2]: Documentation/devicetree/bindings/connector/usb-connector.txt
> 
> 
> Regards
> 
> Andrzej
> 
> 
> > +
> > +required:
> > +  - "#address-cells"
> > +  - "#size-cells"
> > +  - compatible
> > +  - reg
> > +  - port@0
> > +  - port@3
> > +
> > +example:
> > +  - |
> > +    anx7625_bridge: encoder@58 {
> > +        compatible = "analogix,anx7625";
> > +        reg = <0x58>;
> > +        status = "okay";
> > +        panel-flags = <1>;
> > +        enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
> > +        reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        port@0 {
> > +          reg = <0>;
> > +          anx_1_in: endpoint {
> > +            remote-endpoint = <&mipi_dsi>;
> > +          };
> > +        };
> > +
> > +        port@3 {
> > +          reg = <3>;
> > +          anx_1_out: endpoint {
> > +            remote-endpoint = <&panel_in>;
> > +          };
> > +        };
> > +    };
>
Xin Ji Oct. 14, 2019, 3:02 a.m. UTC | #4
Hi Laurent Pinchart, please check my comment below.

Thanks,
Xin

On Fri, Oct 11, 2019 at 03:54:18PM +0300, Laurent Pinchart wrote:
> Hi Andrzej,
> 
> On Fri, Oct 11, 2019 at 01:21:43PM +0200, Andrzej Hajda wrote:
> > On 11.10.2019 04:21, Xin Ji wrote:
> > > The ANX7625 is an ultra-low power 4K Mobile HD Transmitter designed
> > > for portable device. It converts MIPI to DisplayPort 1.3 4K.
> > >
> > > You can add support to your board with binding.
> > >
> > > Example:
> > > 	anx7625_bridge: encoder@58 {
> > > 		compatible = "analogix,anx7625";
> > > 		reg = <0x58>;
> > > 		status = "okay";
> > > 		panel-flags = <1>;
> > > 		enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
> > > 		reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
> > > 		#address-cells = <1>;
> > > 		#size-cells = <0>;
> > >
> > > 		port@0 {
> > > 		  reg = <0>;
> > > 		  anx_1_in: endpoint {
> > > 		    remote-endpoint = <&mipi_dsi>;
> > > 		  };
> > > 		};
> > >
> > > 		port@3 {
> > > 		  reg = <3>;
> > > 		  anx_1_out: endpoint {
> > > 		    remote-endpoint = <&panel_in>;
> > > 		  };
> > > 		};
> > > 	};
> > >
> > > Signed-off-by: Xin Ji <xji@analogixsemi.com>
> > > ---
> > >  .../bindings/display/bridge/anx7625.yaml           | 96 ++++++++++++++++++++++
> > >  1 file changed, 96 insertions(+)
> > >  create mode 100644 Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> > >
> > > diff --git a/Documentation/devicetree/bindings/display/bridge/anx7625.yaml b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> > > new file mode 100644
> > > index 0000000..fc84683
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> > > @@ -0,0 +1,96 @@
> > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > > +# Copyright 2019 Analogix Semiconductor, Inc.
> > > +%YAML 1.2
> > > +---
> > > +$id: "http://devicetree.org/schemas/display/bridge/anx7625.yaml#"
> > > +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> > > +
> > > +title: Analogix ANX7625 SlimPort (4K Mobile HD Transmitter)
> > > +
> > > +maintainers:
> > > +  - Xin Ji <xji@analogixsemi.com>
> > > +
> > > +description: |
> > > +  The ANX7625 is an ultra-low power 4K Mobile HD Transmitter
> > > +  designed for portable devices.
> > > +
> > > +properties:
> > > +  "#address-cells": true
> > > +  "#size-cells": true
> > > +
> > > +  compatible:
> > > +    items:
> > > +      - const: analogix,anx7625
> > > +
> > > +  reg:
> > > +    maxItems: 1
> > > +
> > > +  panel-flags:
> > > +    description: indicate the panel is internal or external
> > > +    maxItems: 1
> > > +
> > > +  interrupts:
> > > +    maxItems: 1
> > > +
> > > +  enable-gpios:
> > > +    description: used for power on chip control, POWER_EN pin D2.
> > > +    maxItems: 1
> > > +
> > > +  reset-gpios:
> > > +    description: used for reset chip control, RESET_N pin B7.
> > > +    maxItems: 1
> > > +
> > > +  port@0:
> > > +    type: object
> > > +    description:
> > > +      A port node pointing to MIPI DSI host port node.
> > > +
> > > +  port@1:
> > > +    type: object
> > > +    description:
> > > +      A port node pointing to MIPI DPI host port node.
> > > +
> > > +  port@2:
> > > +    type: object
> > > +    description:
> > > +      A port node pointing to external connector port node.
> > > +
> > > +  port@3:
> > > +    type: object
> > > +    description:
> > > +      A port node pointing to eDP port node.
> > 
> > 
> > Decrypting available product brief[1], there are following physical lines:
> > 
> > Input:
> > 
> > - MIPI DSI/DPI - video data, are DSI and DPI lines shared?
> 
> It would be much easier if we could have access to more complete
> information. I believe the DSI and DPI pins could be muxed, but there
> should be more DPI pins than DSI pins.
Yes DPI pins more than DSI pins.
> 
> > 
> > - I2S - audio data,
> > 
> > - I2C - control line,
> > 
> > - ALERT/INTP - interrupt,
> > 
> > - USB 3.1 SSRc/Tx - for USB forwarding,
> > 
> > Output:
> > 
> > - SS1, SS2,
> > 
> > - SBU/AUX,
> > 
> > - CC1/2.
> > 
> > 
> > Having this information I try to understand ports defined by you:
> > 
> > - port@2 you have defined as pointing to external port, but here the
> > port should be rather subnode of ANX7625 - the chip has CC lines, see
> > beginning of [2].
> > 
> > - port@3 describes SS1, SS2 and SBU/AUX lines together, am I right? In
> > USB-C binding SBU and SS lines are represented by different ports,
> > different approach, but maybe better in this case.
> 
> I believe that, when connected to a DP display (either DP or eDP), the
> DisplayPort signals are output on SS1 and/or SS2. I this really wonder
> if we need two separate ports for this, it seems that port@2 and port@3
> should be merged.
OK, I will merge the port@2 and port@3, and use a flag to indicate
whether the control is external connector control or not.
> 
> > Maybe it would be good to add 2nd example with USB-C port.
> 
> That would help with the discussion, yes.
As we disabled USB-C feature in anx7625, we cannot define a USB-C port.
> 
> > [1]:
> > https://www.analogix.com/system/files/AA-002291-PB-6-ANX7625_ProductBrief.pdf
> > 
> > [2]: Documentation/devicetree/bindings/connector/usb-connector.txt
> > 
> > > +
> > > +required:
> > > +  - "#address-cells"
> > > +  - "#size-cells"
> > > +  - compatible
> > > +  - reg
> > > +  - port@0
> > > +  - port@3
> > > +
> > > +example:
> > > +  - |
> > > +    anx7625_bridge: encoder@58 {
> > > +        compatible = "analogix,anx7625";
> > > +        reg = <0x58>;
> > > +        status = "okay";
> > > +        panel-flags = <1>;
> > > +        enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
> > > +        reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
> > > +        #address-cells = <1>;
> > > +        #size-cells = <0>;
> > > +
> > > +        port@0 {
> > > +          reg = <0>;
> > > +          anx_1_in: endpoint {
> > > +            remote-endpoint = <&mipi_dsi>;
> > > +          };
> > > +        };
> > > +
> > > +        port@3 {
> > > +          reg = <3>;
> > > +          anx_1_out: endpoint {
> > > +            remote-endpoint = <&panel_in>;
> > > +          };
> > > +        };
> > > +    };
> 
> -- 
> Regards,
> 
> Laurent Pinchart
Laurent Pinchart Oct. 14, 2019, 10:16 p.m. UTC | #5
Hi Xin Ji,

On Mon, Oct 14, 2019 at 03:02:48AM +0000, Xin Ji wrote:
> On Fri, Oct 11, 2019 at 03:54:18PM +0300, Laurent Pinchart wrote:
> > On Fri, Oct 11, 2019 at 01:21:43PM +0200, Andrzej Hajda wrote:
> >> On 11.10.2019 04:21, Xin Ji wrote:
> >>> The ANX7625 is an ultra-low power 4K Mobile HD Transmitter designed
> >>> for portable device. It converts MIPI to DisplayPort 1.3 4K.
> >>>
> >>> You can add support to your board with binding.
> >>>
> >>> Example:
> >>> 	anx7625_bridge: encoder@58 {
> >>> 		compatible = "analogix,anx7625";
> >>> 		reg = <0x58>;
> >>> 		status = "okay";
> >>> 		panel-flags = <1>;
> >>> 		enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
> >>> 		reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
> >>> 		#address-cells = <1>;
> >>> 		#size-cells = <0>;
> >>>
> >>> 		port@0 {
> >>> 		  reg = <0>;
> >>> 		  anx_1_in: endpoint {
> >>> 		    remote-endpoint = <&mipi_dsi>;
> >>> 		  };
> >>> 		};
> >>>
> >>> 		port@3 {
> >>> 		  reg = <3>;
> >>> 		  anx_1_out: endpoint {
> >>> 		    remote-endpoint = <&panel_in>;
> >>> 		  };
> >>> 		};
> >>> 	};
> >>>
> >>> Signed-off-by: Xin Ji <xji@analogixsemi.com>
> >>> ---
> >>>  .../bindings/display/bridge/anx7625.yaml           | 96 ++++++++++++++++++++++
> >>>  1 file changed, 96 insertions(+)
> >>>  create mode 100644 Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/display/bridge/anx7625.yaml b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> >>> new file mode 100644
> >>> index 0000000..fc84683
> >>> --- /dev/null
> >>> +++ b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> >>> @@ -0,0 +1,96 @@
> >>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> >>> +# Copyright 2019 Analogix Semiconductor, Inc.
> >>> +%YAML 1.2
> >>> +---
> >>> +$id: "http://devicetree.org/schemas/display/bridge/anx7625.yaml#"
> >>> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> >>> +
> >>> +title: Analogix ANX7625 SlimPort (4K Mobile HD Transmitter)
> >>> +
> >>> +maintainers:
> >>> +  - Xin Ji <xji@analogixsemi.com>
> >>> +
> >>> +description: |
> >>> +  The ANX7625 is an ultra-low power 4K Mobile HD Transmitter
> >>> +  designed for portable devices.
> >>> +
> >>> +properties:
> >>> +  "#address-cells": true
> >>> +  "#size-cells": true
> >>> +
> >>> +  compatible:
> >>> +    items:
> >>> +      - const: analogix,anx7625
> >>> +
> >>> +  reg:
> >>> +    maxItems: 1
> >>> +
> >>> +  panel-flags:
> >>> +    description: indicate the panel is internal or external
> >>> +    maxItems: 1
> >>> +
> >>> +  interrupts:
> >>> +    maxItems: 1
> >>> +
> >>> +  enable-gpios:
> >>> +    description: used for power on chip control, POWER_EN pin D2.
> >>> +    maxItems: 1
> >>> +
> >>> +  reset-gpios:
> >>> +    description: used for reset chip control, RESET_N pin B7.
> >>> +    maxItems: 1
> >>> +
> >>> +  port@0:
> >>> +    type: object
> >>> +    description:
> >>> +      A port node pointing to MIPI DSI host port node.
> >>> +
> >>> +  port@1:
> >>> +    type: object
> >>> +    description:
> >>> +      A port node pointing to MIPI DPI host port node.
> >>> +
> >>> +  port@2:
> >>> +    type: object
> >>> +    description:
> >>> +      A port node pointing to external connector port node.
> >>> +
> >>> +  port@3:
> >>> +    type: object
> >>> +    description:
> >>> +      A port node pointing to eDP port node.
> >> 
> >> 
> >> Decrypting available product brief[1], there are following physical lines:
> >> 
> >> Input:
> >> 
> >> - MIPI DSI/DPI - video data, are DSI and DPI lines shared?
> > 
> > It would be much easier if we could have access to more complete
> > information. I believe the DSI and DPI pins could be muxed, but there
> > should be more DPI pins than DSI pins.
>
> Yes DPI pins more than DSI pins.
> 
> >> 
> >> - I2S - audio data,
> >> 
> >> - I2C - control line,
> >> 
> >> - ALERT/INTP - interrupt,
> >> 
> >> - USB 3.1 SSRc/Tx - for USB forwarding,
> >> 
> >> Output:
> >> 
> >> - SS1, SS2,
> >> 
> >> - SBU/AUX,
> >> 
> >> - CC1/2.
> >> 
> >> 
> >> Having this information I try to understand ports defined by you:
> >> 
> >> - port@2 you have defined as pointing to external port, but here the
> >> port should be rather subnode of ANX7625 - the chip has CC lines, see
> >> beginning of [2].
> >> 
> >> - port@3 describes SS1, SS2 and SBU/AUX lines together, am I right? In
> >> USB-C binding SBU and SS lines are represented by different ports,
> >> different approach, but maybe better in this case.
> > 
> > I believe that, when connected to a DP display (either DP or eDP), the
> > DisplayPort signals are output on SS1 and/or SS2. I this really wonder
> > if we need two separate ports for this, it seems that port@2 and port@3
> > should be merged.
>
> OK, I will merge the port@2 and port@3, and use a flag to indicate
> whether the control is external connector control or not.

Could this be inferred from the connected DT node ? If the node
connected to the endpoint is a display connector node, then we have an
external connector. Otherwise we have an eDP panel. Ideally this should
even be done at runtime, by communicating with the drm_bridge or
drm_panel corresponding to the connected node.

> >> Maybe it would be good to add 2nd example with USB-C port.
> > 
> > That would help with the discussion, yes.
>
> As we disabled USB-C feature in anx7625, we cannot define a USB-C port.

It's fine if the feature isn't implemented in the driver, but we should
still take it into account to design the DT bindings. Otherwise, when
someone will want to add support for USB-C to the ANX7625 bindings, they
may find it impossible to do so in a nice backward-compatible way.
That's why an example would already be useful.

> >> [1]:
> >> https://www.analogix.com/system/files/AA-002291-PB-6-ANX7625_ProductBrief.pdf
> >> 
> >> [2]: Documentation/devicetree/bindings/connector/usb-connector.txt
> >> 
> >>> +
> >>> +required:
> >>> +  - "#address-cells"
> >>> +  - "#size-cells"
> >>> +  - compatible
> >>> +  - reg
> >>> +  - port@0
> >>> +  - port@3
> >>> +
> >>> +example:
> >>> +  - |
> >>> +    anx7625_bridge: encoder@58 {
> >>> +        compatible = "analogix,anx7625";
> >>> +        reg = <0x58>;
> >>> +        status = "okay";
> >>> +        panel-flags = <1>;
> >>> +        enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
> >>> +        reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
> >>> +        #address-cells = <1>;
> >>> +        #size-cells = <0>;
> >>> +
> >>> +        port@0 {
> >>> +          reg = <0>;
> >>> +          anx_1_in: endpoint {
> >>> +            remote-endpoint = <&mipi_dsi>;
> >>> +          };
> >>> +        };
> >>> +
> >>> +        port@3 {
> >>> +          reg = <3>;
> >>> +          anx_1_out: endpoint {
> >>> +            remote-endpoint = <&panel_in>;
> >>> +          };
> >>> +        };
> >>> +    };
Xin Ji Oct. 15, 2019, 3:02 a.m. UTC | #6
Hi Laurent Pinchart,

On Tue, Oct 15, 2019 at 01:16:10AM +0300, Laurent Pinchart wrote:
> Hi Xin Ji,
> 
> On Mon, Oct 14, 2019 at 03:02:48AM +0000, Xin Ji wrote:
> > On Fri, Oct 11, 2019 at 03:54:18PM +0300, Laurent Pinchart wrote:
> > > On Fri, Oct 11, 2019 at 01:21:43PM +0200, Andrzej Hajda wrote:
> > >> On 11.10.2019 04:21, Xin Ji wrote:
> > >>> The ANX7625 is an ultra-low power 4K Mobile HD Transmitter designed
> > >>> for portable device. It converts MIPI to DisplayPort 1.3 4K.
> > >>>
> > >>> You can add support to your board with binding.
> > >>>
> > >>> Example:
> > >>> 	anx7625_bridge: encoder@58 {
> > >>> 		compatible = "analogix,anx7625";
> > >>> 		reg = <0x58>;
> > >>> 		status = "okay";
> > >>> 		panel-flags = <1>;
> > >>> 		enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
> > >>> 		reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
> > >>> 		#address-cells = <1>;
> > >>> 		#size-cells = <0>;
> > >>>
> > >>> 		port@0 {
> > >>> 		  reg = <0>;
> > >>> 		  anx_1_in: endpoint {
> > >>> 		    remote-endpoint = <&mipi_dsi>;
> > >>> 		  };
> > >>> 		};
> > >>>
> > >>> 		port@3 {
> > >>> 		  reg = <3>;
> > >>> 		  anx_1_out: endpoint {
> > >>> 		    remote-endpoint = <&panel_in>;
> > >>> 		  };
> > >>> 		};
> > >>> 	};
> > >>>
> > >>> Signed-off-by: Xin Ji <xji@analogixsemi.com>
> > >>> ---
> > >>>  .../bindings/display/bridge/anx7625.yaml           | 96 ++++++++++++++++++++++
> > >>>  1 file changed, 96 insertions(+)
> > >>>  create mode 100644 Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> > >>>
> > >>> diff --git a/Documentation/devicetree/bindings/display/bridge/anx7625.yaml b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> > >>> new file mode 100644
> > >>> index 0000000..fc84683
> > >>> --- /dev/null
> > >>> +++ b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
> > >>> @@ -0,0 +1,96 @@
> > >>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > >>> +# Copyright 2019 Analogix Semiconductor, Inc.
> > >>> +%YAML 1.2
> > >>> +---
> > >>> +$id: "http://devicetree.org/schemas/display/bridge/anx7625.yaml#"
> > >>> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> > >>> +
> > >>> +title: Analogix ANX7625 SlimPort (4K Mobile HD Transmitter)
> > >>> +
> > >>> +maintainers:
> > >>> +  - Xin Ji <xji@analogixsemi.com>
> > >>> +
> > >>> +description: |
> > >>> +  The ANX7625 is an ultra-low power 4K Mobile HD Transmitter
> > >>> +  designed for portable devices.
> > >>> +
> > >>> +properties:
> > >>> +  "#address-cells": true
> > >>> +  "#size-cells": true
> > >>> +
> > >>> +  compatible:
> > >>> +    items:
> > >>> +      - const: analogix,anx7625
> > >>> +
> > >>> +  reg:
> > >>> +    maxItems: 1
> > >>> +
> > >>> +  panel-flags:
> > >>> +    description: indicate the panel is internal or external
> > >>> +    maxItems: 1
> > >>> +
> > >>> +  interrupts:
> > >>> +    maxItems: 1
> > >>> +
> > >>> +  enable-gpios:
> > >>> +    description: used for power on chip control, POWER_EN pin D2.
> > >>> +    maxItems: 1
> > >>> +
> > >>> +  reset-gpios:
> > >>> +    description: used for reset chip control, RESET_N pin B7.
> > >>> +    maxItems: 1
> > >>> +
> > >>> +  port@0:
> > >>> +    type: object
> > >>> +    description:
> > >>> +      A port node pointing to MIPI DSI host port node.
> > >>> +
> > >>> +  port@1:
> > >>> +    type: object
> > >>> +    description:
> > >>> +      A port node pointing to MIPI DPI host port node.
> > >>> +
> > >>> +  port@2:
> > >>> +    type: object
> > >>> +    description:
> > >>> +      A port node pointing to external connector port node.
> > >>> +
> > >>> +  port@3:
> > >>> +    type: object
> > >>> +    description:
> > >>> +      A port node pointing to eDP port node.
> > >> 
> > >> 
> > >> Decrypting available product brief[1], there are following physical lines:
> > >> 
> > >> Input:
> > >> 
> > >> - MIPI DSI/DPI - video data, are DSI and DPI lines shared?
> > > 
> > > It would be much easier if we could have access to more complete
> > > information. I believe the DSI and DPI pins could be muxed, but there
> > > should be more DPI pins than DSI pins.
> >
> > Yes DPI pins more than DSI pins.
> > 
> > >> 
> > >> - I2S - audio data,
> > >> 
> > >> - I2C - control line,
> > >> 
> > >> - ALERT/INTP - interrupt,
> > >> 
> > >> - USB 3.1 SSRc/Tx - for USB forwarding,
> > >> 
> > >> Output:
> > >> 
> > >> - SS1, SS2,
> > >> 
> > >> - SBU/AUX,
> > >> 
> > >> - CC1/2.
> > >> 
> > >> 
> > >> Having this information I try to understand ports defined by you:
> > >> 
> > >> - port@2 you have defined as pointing to external port, but here the
> > >> port should be rather subnode of ANX7625 - the chip has CC lines, see
> > >> beginning of [2].
> > >> 
> > >> - port@3 describes SS1, SS2 and SBU/AUX lines together, am I right? In
> > >> USB-C binding SBU and SS lines are represented by different ports,
> > >> different approach, but maybe better in this case.
> > > 
> > > I believe that, when connected to a DP display (either DP or eDP), the
> > > DisplayPort signals are output on SS1 and/or SS2. I this really wonder
> > > if we need two separate ports for this, it seems that port@2 and port@3
> > > should be merged.
> >
> > OK, I will merge the port@2 and port@3, and use a flag to indicate
> > whether the control is external connector control or not.
> 
> Could this be inferred from the connected DT node ? If the node
> connected to the endpoint is a display connector node, then we have an
> external connector. Otherwise we have an eDP panel. Ideally this should
> even be done at runtime, by communicating with the drm_bridge or
> drm_panel corresponding to the connected node.

I think the port@2 should be removed, it could not be inferred from the
connected DT node.

> 
> > >> Maybe it would be good to add 2nd example with USB-C port.
> > > 
> > > That would help with the discussion, yes.
> >
> > As we disabled USB-C feature in anx7625, we cannot define a USB-C port.
> 
> It's fine if the feature isn't implemented in the driver, but we should
> still take it into account to design the DT bindings. Otherwise, when
> someone will want to add support for USB-C to the ANX7625 bindings, they
> may find it impossible to do so in a nice backward-compatible way.
> That's why an example would already be useful.
OK.
> 
> > >> [1]:
> > >> https://www.analogix.com/system/files/AA-002291-PB-6-ANX7625_ProductBrief.pdf
> > >> 
> > >> [2]: Documentation/devicetree/bindings/connector/usb-connector.txt
> > >> 
> > >>> +
> > >>> +required:
> > >>> +  - "#address-cells"
> > >>> +  - "#size-cells"
> > >>> +  - compatible
> > >>> +  - reg
> > >>> +  - port@0
> > >>> +  - port@3
> > >>> +
> > >>> +example:
> > >>> +  - |
> > >>> +    anx7625_bridge: encoder@58 {
> > >>> +        compatible = "analogix,anx7625";
> > >>> +        reg = <0x58>;
> > >>> +        status = "okay";
> > >>> +        panel-flags = <1>;
> > >>> +        enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
> > >>> +        reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
> > >>> +        #address-cells = <1>;
> > >>> +        #size-cells = <0>;
> > >>> +
> > >>> +        port@0 {
> > >>> +          reg = <0>;
> > >>> +          anx_1_in: endpoint {
> > >>> +            remote-endpoint = <&mipi_dsi>;
> > >>> +          };
> > >>> +        };
> > >>> +
> > >>> +        port@3 {
> > >>> +          reg = <3>;
> > >>> +          anx_1_out: endpoint {
> > >>> +            remote-endpoint = <&panel_in>;
> > >>> +          };
> > >>> +        };
> > >>> +    };
> 
> -- 
> Regards,
> 
> Laurent Pinchart

Patch
diff mbox series

diff --git a/Documentation/devicetree/bindings/display/bridge/anx7625.yaml b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
new file mode 100644
index 0000000..fc84683
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/bridge/anx7625.yaml
@@ -0,0 +1,96 @@ 
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright 2019 Analogix Semiconductor, Inc.
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/display/bridge/anx7625.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Analogix ANX7625 SlimPort (4K Mobile HD Transmitter)
+
+maintainers:
+  - Xin Ji <xji@analogixsemi.com>
+
+description: |
+  The ANX7625 is an ultra-low power 4K Mobile HD Transmitter
+  designed for portable devices.
+
+properties:
+  "#address-cells": true
+  "#size-cells": true
+
+  compatible:
+    items:
+      - const: analogix,anx7625
+
+  reg:
+    maxItems: 1
+
+  panel-flags:
+    description: indicate the panel is internal or external
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  enable-gpios:
+    description: used for power on chip control, POWER_EN pin D2.
+    maxItems: 1
+
+  reset-gpios:
+    description: used for reset chip control, RESET_N pin B7.
+    maxItems: 1
+
+  port@0:
+    type: object
+    description:
+      A port node pointing to MIPI DSI host port node.
+
+  port@1:
+    type: object
+    description:
+      A port node pointing to MIPI DPI host port node.
+
+  port@2:
+    type: object
+    description:
+      A port node pointing to external connector port node.
+
+  port@3:
+    type: object
+    description:
+      A port node pointing to eDP port node.
+
+required:
+  - "#address-cells"
+  - "#size-cells"
+  - compatible
+  - reg
+  - port@0
+  - port@3
+
+example:
+  - |
+    anx7625_bridge: encoder@58 {
+        compatible = "analogix,anx7625";
+        reg = <0x58>;
+        status = "okay";
+        panel-flags = <1>;
+        enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
+        reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        port@0 {
+          reg = <0>;
+          anx_1_in: endpoint {
+            remote-endpoint = <&mipi_dsi>;
+          };
+        };
+
+        port@3 {
+          reg = <3>;
+          anx_1_out: endpoint {
+            remote-endpoint = <&panel_in>;
+          };
+        };
+    };