* [PATCH v6 0/2] drm: bridge: Add TI tmds181 and sn65dp159 driver [not found] <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.949ef384-8293-46b8-903f-40a477c056ae.28f0984e-19d0-491e-b8f0-87290b72fea5@emailsignatures365.codetwo.com> @ 2025-09-22 12:18 ` Mike Looijmans [not found] ` <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.949ef384-8293-46b8-903f-40a477c056ae.0c2f242e-bdcc-4862-a215-2a988591f8cc@emailsignatures365.codetwo.com> 0 siblings, 1 reply; 3+ messages in thread From: Mike Looijmans @ 2025-09-22 12:18 UTC (permalink / raw) To: dri-devel Cc: Mike Looijmans, Andrzej Hajda, Conor Dooley, David Airlie, Jernej Skrabec, Jonas Karlman, Krzysztof Kozlowski, Laurent Pinchart, Maarten Lankhorst, Maxime Ripard, Neil Armstrong, Rob Herring, Robert Foss, Simona Vetter, Thomas Zimmermann, devicetree, linux-kernel In the past I've seen (and contributed to) hacks that model the chips as phy or even (really!) clock drivers. Since the chip usually sits between a signal that is (almost) HDMI and a HDMI connector, I decided to stop lying and write it as a DRM bridge driver. Our experience with these chips is that they work best under manual control enabling them only once the signal is active. At low resolutions (under 4k), the optimal setting is usually to only use redriver mode. Setting the termination to 150-300 Ohms improves EMC performance at lower resolutions, hence the driver enables 75-150 Ohms for HDMI2 modes and defaults to 150-300 Ohm termination for other modes. Changes in v6: Rename ti,mode to ti,retimer-mode Add DRM_DISPLAY_HDMI_HELPER to Kconfig Change "ti,mode" to "ti,retimer-mode" Changes in v5: ti,equalizer and ti,mode changed to enum Rename ti,slew-rate to slew-rate Make properties conditional for DP159/TMDS181 Remove ti,dvi-mode (always set to avoid conflict) Really added vcc/vdd regulator support "oe" gpio is now "reset" (reversed logic) devicetree enums ti,equalizer and ti,mode Always disable HDMI_SEL (formerly "dvi-mode") Changes in v4: Use fallback compatible dev_err_probe, this_module, of_match_ptr Use fallback compatible Add vcc-supply and vdd-supply Changes in v3: Fix duplicate links Add vcc-supply and vdd-supply Fix missing type for ti,slew-rate Lower-case hex values and use defines for EYESCAN registers Remove equalizer code (unlikely to be used) Remove attributes (no longer useful, undocumented) Fix build for 6.17 kernel Use devm_drm_bridge_alloc Sort includes and add linux/bitfield.h Check chip type and complain on mismatch Changes in v2: Document driver specific bindings like slew-rate and threshold Use atomic_enable/disable Use #defines for bit fields in registers Allow HDMI 2 compliance Filter modes on clock range Use cross-over pixel frequency instead of manual overides Devicetree bindings according to standards Mike Looijmans (2): dt-bindings: drm/bridge: ti-tmds181: Add TI TMDS181 and SN65DP159 bindings drm: bridge: Add TI tmds181 and sn65dp159 driver .../bindings/display/bridge/ti,tmds181.yaml | 170 +++++++ drivers/gpu/drm/bridge/Kconfig | 12 + drivers/gpu/drm/bridge/Makefile | 1 + drivers/gpu/drm/bridge/ti-tmds181.c | 427 ++++++++++++++++++ 4 files changed, 610 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/bridge/ti,tmds181.yaml create mode 100644 drivers/gpu/drm/bridge/ti-tmds181.c -- 2.43.0 base-commit: 53e760d8949895390e256e723e7ee46618310361 branch: drm-ti-tmds181 Met vriendelijke groet / kind regards, Mike Looijmans System Expert TOPIC Embedded Products B.V. Materiaalweg 4, 5681 RJ Best The Netherlands T: +31 (0) 499 33 69 69 E: mike.looijmans@topic.nl W: www.topic.nl Please consider the environment before printing this e-mail ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.949ef384-8293-46b8-903f-40a477c056ae.0c2f242e-bdcc-4862-a215-2a988591f8cc@emailsignatures365.codetwo.com>]
* [PATCH v6 1/2] dt-bindings: drm/bridge: ti-tmds181: Add TI TMDS181 and SN65DP159 bindings [not found] ` <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.949ef384-8293-46b8-903f-40a477c056ae.0c2f242e-bdcc-4862-a215-2a988591f8cc@emailsignatures365.codetwo.com> @ 2025-09-22 12:18 ` Mike Looijmans 2025-09-24 17:38 ` Rob Herring (Arm) 0 siblings, 1 reply; 3+ messages in thread From: Mike Looijmans @ 2025-09-22 12:18 UTC (permalink / raw) To: dri-devel Cc: Mike Looijmans, Andrzej Hajda, Conor Dooley, David Airlie, Jernej Skrabec, Jonas Karlman, Krzysztof Kozlowski, Laurent Pinchart, Maarten Lankhorst, Maxime Ripard, Neil Armstrong, Rob Herring, Robert Foss, Simona Vetter, Thomas Zimmermann, devicetree, linux-kernel Add DT binding document for TI TMDS181 and SN65DP159 HDMI retimers. The two chips have similar register maps, but different applications (source vs. sink). Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> --- Changes in v6: Rename ti,mode to ti,retimer-mode Changes in v5: ti,equalizer and ti,mode changed to enum Rename ti,slew-rate to slew-rate Make properties conditional for DP159/TMDS181 Remove ti,dvi-mode (always set to avoid conflict) Changes in v4: Use fallback compatible Changes in v3: Fix duplicate links Add vcc-supply and vdd-supply Fix missing type for ti,slew-rate Changes in v2: Document driver specific bindings like slew-rate and threshold .../bindings/display/bridge/ti,tmds181.yaml | 170 ++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/bridge/ti,tmds181.yaml diff --git a/Documentation/devicetree/bindings/display/bridge/ti,tmds181.yaml b/Documentation/devicetree/bindings/display/bridge/ti,tmds181.yaml new file mode 100644 index 000000000000..9b23221634bb --- /dev/null +++ b/Documentation/devicetree/bindings/display/bridge/ti,tmds181.yaml @@ -0,0 +1,170 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/bridge/ti,tmds181.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: TMDS181 and SN65DP159 HDMI retimer/redriver chips + +maintainers: + - Mike Looijmans <mike.looijmans@topic.nl> + +description: | + Texas Instruments TMDS181 and SN65DP159 retimer and redriver chips. + https://www.ti.com/product/TMDS181 + https://www.ti.com/product/SN65DP159 + When I2C control is enabled, various pin strapping options like equalizer and + slew-rate are unavailable. These can be configured through I2C using the + properties defined here. + A common application for these chips is to convert AC coupled serdes outputs + from an FPGA or SoC into HDMI compliant signals. + +properties: + compatible: + oneOf: + - const: ti,tmds181 + - items: + - const: ti,sn65dp159 + - const: ti,tmds181 + + reg: + enum: + - 0x5b + - 0x5c + - 0x5d + - 0x5e + + reset-gpios: + maxItems: 1 + description: GPIO specifier for OE pin which acts as active low reset. + + vdd-supply: + description: Core power supply, 1.1V + + vcc-supply: + description: IO power supply, 3.3V + + ports: + $ref: /schemas/graph.yaml#/properties/ports + + properties: + port@0: + $ref: /schemas/graph.yaml#/$defs/port-base + unevaluatedProperties: false + description: Video port for HDMI (ish) input + + properties: + endpoint: + $ref: /schemas/media/video-interfaces.yaml# + unevaluatedProperties: false + + port@1: + $ref: /schemas/graph.yaml#/$defs/port-base + unevaluatedProperties: false + description: Video port for HDMI output (panel or bridge) + + properties: + endpoint: + $ref: /schemas/media/video-interfaces.yaml# + unevaluatedProperties: false + + required: + - port@0 + - port@1 + + ti,retimer-mode: + enum: + - source + - sink + description: + Force chip to operate in "source" or "sink" mode. + + ti,retimer-threshold-hz: + minimum: 25000000 + maximum: 600000000 + default: 200000000 + description: + Cross-over point. Up until this pixel clock frequency the chip remains in + the low-power redriver mode. Above the threshold the chip should operate + in retimer mode. + + slew-rate: + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 3 + default: 3 + description: Set slew rate, 0 is slowest, 3 is fastest. + + ti,equalizer: + enum: + - adaptive + - disabled + - fixed + default: adaptive + description: Configure the equalizer + +if: + properties: + compatible: + contains: + const: ti,sn65dp159 + +then: + properties: + ti,retimer-mode: + default: source + +else: + properties: + ti,retimer-mode: + default: sink + slew-rate: false + +required: + - compatible + - reg + - ports + +additionalProperties: false + +examples: + - | + #include <dt-bindings/gpio/gpio.h> + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + bridge@5b { + compatible = "ti,sn65dp159", "ti,tmds181"; + reg = <0x5b>; + vdd-supply = <&vcc_1v1_reg>; + vcc-supply = <&vcc_3v3_reg>; + reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>; + slew-rate = <2>; + ti,retimer-threshold-hz = <350000000>; + ti,retimer-mode = "source"; + ti,equalizer = "disabled"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + endpoint { + remote-endpoint = <&encoder_out>; + }; + }; + + port@1 { + reg = <1>; + + endpoint { + remote-endpoint = <&hdmi_connector_in>; + }; + }; + }; + }; + }; -- 2.43.0 Met vriendelijke groet / kind regards, Mike Looijmans System Expert TOPIC Embedded Products B.V. Materiaalweg 4, 5681 RJ Best The Netherlands T: +31 (0) 499 33 69 69 E: mike.looijmans@topic.nl W: www.topic.nl Please consider the environment before printing this e-mail ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v6 1/2] dt-bindings: drm/bridge: ti-tmds181: Add TI TMDS181 and SN65DP159 bindings 2025-09-22 12:18 ` [PATCH v6 1/2] dt-bindings: drm/bridge: ti-tmds181: Add TI TMDS181 and SN65DP159 bindings Mike Looijmans @ 2025-09-24 17:38 ` Rob Herring (Arm) 0 siblings, 0 replies; 3+ messages in thread From: Rob Herring (Arm) @ 2025-09-24 17:38 UTC (permalink / raw) To: Mike Looijmans Cc: Conor Dooley, Jonas Karlman, Maxime Ripard, linux-kernel, David Airlie, Krzysztof Kozlowski, Neil Armstrong, Thomas Zimmermann, devicetree, Robert Foss, Laurent Pinchart, Simona Vetter, Andrzej Hajda, dri-devel, Jernej Skrabec, Maarten Lankhorst On Mon, 22 Sep 2025 14:18:44 +0200, Mike Looijmans wrote: > Add DT binding document for TI TMDS181 and SN65DP159 HDMI retimers. > > The two chips have similar register maps, but different applications > (source vs. sink). > > Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> > > --- > > Changes in v6: > Rename ti,mode to ti,retimer-mode > > Changes in v5: > ti,equalizer and ti,mode changed to enum > Rename ti,slew-rate to slew-rate > Make properties conditional for DP159/TMDS181 > Remove ti,dvi-mode (always set to avoid conflict) > > Changes in v4: > Use fallback compatible > > Changes in v3: > Fix duplicate links > Add vcc-supply and vdd-supply > Fix missing type for ti,slew-rate > > Changes in v2: > Document driver specific bindings like slew-rate and threshold > > .../bindings/display/bridge/ti,tmds181.yaml | 170 ++++++++++++++++++ > 1 file changed, 170 insertions(+) > create mode 100644 Documentation/devicetree/bindings/display/bridge/ti,tmds181.yaml > Reviewed-by: Rob Herring (Arm) <robh@kernel.org> ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-09-24 17:38 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.949ef384-8293-46b8-903f-40a477c056ae.28f0984e-19d0-491e-b8f0-87290b72fea5@emailsignatures365.codetwo.com>
2025-09-22 12:18 ` [PATCH v6 0/2] drm: bridge: Add TI tmds181 and sn65dp159 driver Mike Looijmans
[not found] ` <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.949ef384-8293-46b8-903f-40a477c056ae.0c2f242e-bdcc-4862-a215-2a988591f8cc@emailsignatures365.codetwo.com>
2025-09-22 12:18 ` [PATCH v6 1/2] dt-bindings: drm/bridge: ti-tmds181: Add TI TMDS181 and SN65DP159 bindings Mike Looijmans
2025-09-24 17:38 ` Rob Herring (Arm)
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).