Re: [PATCH RESEND 3/4] dt-bindings: drm/bridge: analogix-anx78xx: support bypass GPIO
From: Laurent Pinchart
Date: Mon Dec 09 2019 - 09:56:04 EST
Hi Hsin-Yi,
Thank you for the patch.
On Mon, Dec 09, 2019 at 10:50:15PM +0800, Hsin-Yi Wang wrote:
> Support optional feature: bypass GPIO.
>
> Some SoC (eg. mt8173) have a hardware mux that connects to 2 ports:
> anx7688 and hdmi. When the GPIO is active, the bridge is bypassed.
This doesn't look like the right place to fix this, as the mux is
unrelated to the bridge. You would have to duplicate this logic in every
bridge driver otherwise.
Could you describe the hardware topology in a bit more details ? I can
then try to advise on how to best support it.
> Signed-off-by: Hsin-Yi Wang <hsinyi@xxxxxxxxxxxx>
> ---
> .../bindings/display/bridge/anx7688.txt | 40 ++++++++++++++++++-
> 1 file changed, 39 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/display/bridge/anx7688.txt b/Documentation/devicetree/bindings/display/bridge/anx7688.txt
> index 78b55bdb18f7..44185dcac839 100644
> --- a/Documentation/devicetree/bindings/display/bridge/anx7688.txt
> +++ b/Documentation/devicetree/bindings/display/bridge/anx7688.txt
> @@ -15,10 +15,13 @@ Required properties:
> Optional properties:
>
> - Video port for HDMI input, using the DT bindings defined in [1].
> + - bypass-gpios : External GPIO. If this GPIO is active, we assume
> + the bridge is bypassed (e.g. by a mux).
> + - pinctrl-0, pinctrl-names: the pincontrol settings to configure bypass GPIO.
>
> [1]: Documentation/devicetree/bindings/media/video-interfaces.txt
>
> -Example:
> +Example 1:
>
> anx7688: anx7688@2c {
> compatible = "analogix,anx7688";
> @@ -30,3 +33,38 @@ Example:
> };
> };
> };
> +
> +Example 2:
> +
> + anx7688: anx7688@2c {
> + compatible = "analogix,anx7688";
> + status = "okay";
> + reg = <0x2c>;
> + ddc-i2c-bus = <&hdmiddc0>;
> +
> + bypass-gpios = <&pio 36 GPIO_ACTIVE_HIGH>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&hdmi_mux_pins>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 { /* input */
> + reg = <0>;
> +
> + anx7688_in: endpoint {
> + remote-endpoint = <&hdmi_out_anx>;
> + };
> + };
> +
> + port@1 { /* output */
> + reg = <1>;
> +
> + anx7688_out: endpoint {
> + remote-endpoint = <&hdmi_connector_in>;
> + };
> + };
> + };
> + };
> +
--
Regards,
Laurent Pinchart