* [PATCH v2 0/2] drm/bridge: lt9211: Add drive-strength-microamp DT property
@ 2026-05-13 13:31 Boerge Struempfel
2026-05-13 13:31 ` [PATCH v2 1/2] dt-bindings: display/bridge: lt9211: Add drive-strength-microamp property Boerge Struempfel
2026-05-13 13:31 ` [PATCH v2 2/2] drm/bridge: lt9211: Add drive-strength-microamp DT property Boerge Struempfel
0 siblings, 2 replies; 6+ messages in thread
From: Boerge Struempfel @ 2026-05-13 13:31 UTC (permalink / raw)
To: Marek Vasut, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: dri-devel, devicetree, linux-kernel, Boerge Struempfel
The LT9211 LVDS TX output driver current is currently hardcoded to
0x8 (~25 uA). Some board layouts require a different drive strength
to meet signal integrity requirements.
This series adds support for the standard 'drive-strength-microamp'
DT property, allowing board DTs to select one of sixteen discrete
current levels between 12 uA and 36 uA. The default preserves the
existing behaviour.
Changes in v2:
- Use u8 instead of u32 for the lookup table array (values fit in u8)
- Warn when drive-strength-microamp exists in DT but is malformed
Link to v1: https://lore.kernel.org/dri-devel/20260512164609.3390700-1-bstruempfel@data-modul.com/
Boerge Struempfel (2):
dt-bindings: display/bridge: lt9211: Add drive-strength-microamp
property
drm/bridge: lt9211: Add drive-strength-microamp DT property
.../display/bridge/lontium,lt9211.yaml | 7 +++++
drivers/gpu/drm/bridge/lontium-lt9211.c | 31 ++++++++++++++++++-
2 files changed, 37 insertions(+), 1 deletion(-)
--
2.54.0
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v2 1/2] dt-bindings: display/bridge: lt9211: Add drive-strength-microamp property 2026-05-13 13:31 [PATCH v2 0/2] drm/bridge: lt9211: Add drive-strength-microamp DT property Boerge Struempfel @ 2026-05-13 13:31 ` Boerge Struempfel 2026-05-13 13:41 ` Marek Vasut 2026-05-14 5:26 ` sashiko-bot 2026-05-13 13:31 ` [PATCH v2 2/2] drm/bridge: lt9211: Add drive-strength-microamp DT property Boerge Struempfel 1 sibling, 2 replies; 6+ messages in thread From: Boerge Struempfel @ 2026-05-13 13:31 UTC (permalink / raw) To: Marek Vasut, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: dri-devel, devicetree, linux-kernel, Boerge Struempfel, Conor Dooley Add the 'drive-strength-microamp' property to allow board DTs to configure the LT9211 LVDS TX output driver current. Sixteen discrete levels are supported, ranging from 12 uA to 36 uA. Defaults to 25 uA. Signed-off-by: Boerge Struempfel <bstruempfel@data-modul.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> --- .../devicetree/bindings/display/bridge/lontium,lt9211.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Documentation/devicetree/bindings/display/bridge/lontium,lt9211.yaml b/Documentation/devicetree/bindings/display/bridge/lontium,lt9211.yaml index 9a6e9b25d14a..381b69c761b8 100644 --- a/Documentation/devicetree/bindings/display/bridge/lontium,lt9211.yaml +++ b/Documentation/devicetree/bindings/display/bridge/lontium,lt9211.yaml @@ -31,6 +31,13 @@ properties: vccio-supply: description: Regulator for 1.8V IO power. + drive-strength-microamp: + description: + LVDS TX output driver current. Sixteen discrete levels are supported, + corresponding to the following nominal values in microamps. + enum: [12, 14, 16, 17, 19, 20, 22, 23, 25, 27, 28, 30, 31, 33, 34, 36] + default: 25 + ports: $ref: /schemas/graph.yaml#/properties/ports -- 2.54.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: display/bridge: lt9211: Add drive-strength-microamp property 2026-05-13 13:31 ` [PATCH v2 1/2] dt-bindings: display/bridge: lt9211: Add drive-strength-microamp property Boerge Struempfel @ 2026-05-13 13:41 ` Marek Vasut 2026-05-14 5:26 ` sashiko-bot 1 sibling, 0 replies; 6+ messages in thread From: Marek Vasut @ 2026-05-13 13:41 UTC (permalink / raw) To: Boerge Struempfel, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: dri-devel, devicetree, linux-kernel, Conor Dooley On 5/13/26 3:31 PM, Boerge Struempfel wrote: > Add the 'drive-strength-microamp' property to allow board DTs to > configure the LT9211 LVDS TX output driver current. Sixteen discrete > levels are supported, ranging from 12 uA to 36 uA. Defaults to 25 uA. > > Signed-off-by: Boerge Struempfel <bstruempfel@data-modul.com> > Acked-by: Conor Dooley <conor.dooley@microchip.com> AB goes before SoB line. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: display/bridge: lt9211: Add drive-strength-microamp property 2026-05-13 13:31 ` [PATCH v2 1/2] dt-bindings: display/bridge: lt9211: Add drive-strength-microamp property Boerge Struempfel 2026-05-13 13:41 ` Marek Vasut @ 2026-05-14 5:26 ` sashiko-bot 1 sibling, 0 replies; 6+ messages in thread From: sashiko-bot @ 2026-05-14 5:26 UTC (permalink / raw) To: Boerge Struempfel; +Cc: krzk+dt, conor+dt, devicetree, robh Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [High] The values for `drive-strength-microamp` are scaled incorrectly by a factor of 100, violating the standard device tree unit suffix. -- commit ab265d46e886455894986f313701d72a9407a58e Author: Boerge Struempfel <bstruempfel@data-modul.com> dt-bindings: display/bridge: lt9211: Add drive-strength-microamp property This commit adds the drive-strength-microamp property to configure the LT9211 LVDS TX output driver current. It specifies sixteen discrete levels ranging from 12 to 36. > diff --git a/Documentation/devicetree/bindings/display/bridge/lontium,lt9211.yaml b/Documentation/devicetree/bindings/display/bridge/lontium,lt9211.yaml > --- a/Documentation/devicetree/bindings/display/bridge/lontium,lt9211.yaml > +++ b/Documentation/devicetree/bindings/display/bridge/lontium,lt9211.yaml [ ... ] > + drive-strength-microamp: > + description: > + LVDS TX output driver current. Sixteen discrete levels are supported, > + corresponding to the following nominal values in microamps. > + enum: [12, 14, 16, 17, 19, 20, 22, 23, 25, 27, 28, 30, 31, 33, 34, 36] Are these values scaled incorrectly for a property ending in -microamp? Properties with the -microamp suffix typically require values in true microamperes. A standard LVDS driver requires differential currents in the milliamp range, typically 1.25 mA to 3.59 mA, to generate a standard 350 mV swing over a 100-ohm termination. Values from 12 to 36 microamps appear to be physically insufficient for LVDS signaling. If the actual intended currents are 1.25 mA to 3.59 mA, shouldn't the enum values be 1250, 1406, 1562, up to 3594 to accurately reflect true microamperes? -- Sashiko AI review · https://sashiko.dev/#/patchset/20260513133127.376458-1-bstruempfel@data-modul.com?part=1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] drm/bridge: lt9211: Add drive-strength-microamp DT property 2026-05-13 13:31 [PATCH v2 0/2] drm/bridge: lt9211: Add drive-strength-microamp DT property Boerge Struempfel 2026-05-13 13:31 ` [PATCH v2 1/2] dt-bindings: display/bridge: lt9211: Add drive-strength-microamp property Boerge Struempfel @ 2026-05-13 13:31 ` Boerge Struempfel 2026-05-13 13:45 ` Marek Vasut 1 sibling, 1 reply; 6+ messages in thread From: Boerge Struempfel @ 2026-05-13 13:31 UTC (permalink / raw) To: Marek Vasut, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: dri-devel, devicetree, linux-kernel, Boerge Struempfel The LT9211 LVDS TX output driver current (RG_MLTX_HSDRV_ISEL) was previously hardcoded to 0x8 (~25 uA), which may not be optimal for all board layouts. The hardware supports 16 discrete current levels starting at 12.5 uA with a step of 1.5625 uA. These are exposed as rounded integer microamp values in the lookup table. Add support for the 'drive-strength-microamp' DT property. A lookup table maps the sixteen supported microamp values (12..36 uA) to the corresponding register field. Defaults to 25 uA when the property is absent, preserving the existing behaviour. Signed-off-by: Boerge Struempfel <bstruempfel@data-modul.com> --- drivers/gpu/drm/bridge/lontium-lt9211.c | 31 ++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/lontium-lt9211.c b/drivers/gpu/drm/bridge/lontium-lt9211.c index 03fc8fd10f20..5edd2d2e3da6 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9211.c +++ b/drivers/gpu/drm/bridge/lontium-lt9211.c @@ -40,6 +40,11 @@ /* DSI lane count - 0 means 4 lanes ; 1, 2, 3 means 1, 2, 3 lanes. */ #define REG_DSI_LANE_COUNT(n) ((n) & 3) +/* Maps register value (index) to drive-strength-microamp DT property value */ +static const u8 lt9211_hsdrv_microamp[] = { + 12, 14, 16, 17, 19, 20, 22, 23, 25, 27, 28, 30, 31, 33, 34, 36 +}; + struct lt9211 { struct drm_bridge bridge; struct device *dev; @@ -50,6 +55,7 @@ struct lt9211 { struct regulator *vccio; bool lvds_dual_link; bool lvds_dual_link_even_odd_swap; + u8 lvds_hsdrv_isel; }; static const struct regmap_range lt9211_rw_ranges[] = { @@ -374,7 +380,8 @@ static int lt9211_configure_tx(struct lt9211 *ctx, bool jeida, /* BIT(7) is LVDS dual-port */ { 0x823b, 0x38 | (ctx->lvds_dual_link ? BIT(7) : 0) }, { 0x823e, 0x92 }, - { 0x823f, 0x48 }, + /* bits 3:0: RG_MLTX_HSDRV_ISEL, LVDS TX driver current */ + { 0x823f, 0x40 | ctx->lvds_hsdrv_isel }, { 0x8240, 0x31 }, { 0x8243, 0x80 }, { 0x8244, 0x00 }, @@ -629,7 +636,9 @@ static int lt9211_parse_dt(struct lt9211 *ctx) struct device *dev = ctx->dev; struct drm_panel *panel; int dual_link; + u32 microamp; int ret; + int i; ctx->vccio = devm_regulator_get(dev, "vccio"); if (IS_ERR(ctx->vccio)) @@ -666,6 +675,26 @@ static int lt9211_parse_dt(struct lt9211 *ctx) ctx->panel_bridge = panel_bridge; + ctx->lvds_hsdrv_isel = 8; /* default: 25 uA */ + ret = of_property_read_u32(dev->of_node, "drive-strength-microamp", + µamp); + if (!ret) { + for (i = 0; i < ARRAY_SIZE(lt9211_hsdrv_microamp); i++) { + if (lt9211_hsdrv_microamp[i] == microamp) { + ctx->lvds_hsdrv_isel = i; + break; + } + } + if (i == ARRAY_SIZE(lt9211_hsdrv_microamp)) { + dev_err(dev, "Invalid drive-strength-microamp value %u\n", + microamp); + return -EINVAL; + } + } else if (ret != -EINVAL) { + dev_warn(dev, "Failed to read drive-strength-microamp: %d, using default\n", + ret); + } + return 0; } -- 2.54.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] drm/bridge: lt9211: Add drive-strength-microamp DT property 2026-05-13 13:31 ` [PATCH v2 2/2] drm/bridge: lt9211: Add drive-strength-microamp DT property Boerge Struempfel @ 2026-05-13 13:45 ` Marek Vasut 0 siblings, 0 replies; 6+ messages in thread From: Marek Vasut @ 2026-05-13 13:45 UTC (permalink / raw) To: Boerge Struempfel, Marek Vasut, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: dri-devel, devicetree, linux-kernel On 5/13/26 3:31 PM, Boerge Struempfel wrote: [...] > @@ -666,6 +675,26 @@ static int lt9211_parse_dt(struct lt9211 *ctx) > > ctx->panel_bridge = panel_bridge; > > + ctx->lvds_hsdrv_isel = 8; /* default: 25 uA */ > + ret = of_property_read_u32(dev->of_node, "drive-strength-microamp", > + µamp); if (ret && ret != -EINVAL) { ... error handling ... return ret; } Then you won't need the if (!ret) conditional and can reduce indent. I also wonder whether it wouldn't be better to simply bail with dev_err_probe() if the property is invalid, let the user know they should fix their DTs before it is too late. > + if (!ret) { > + for (i = 0; i < ARRAY_SIZE(lt9211_hsdrv_microamp); i++) { > + if (lt9211_hsdrv_microamp[i] == microamp) { > + ctx->lvds_hsdrv_isel = i; > + break; > + } > + } > + if (i == ARRAY_SIZE(lt9211_hsdrv_microamp)) { > + dev_err(dev, "Invalid drive-strength-microamp value %u\n", > + microamp); > + return -EINVAL; > + } [...] > + > return 0; > } ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-05-14 5:26 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-05-13 13:31 [PATCH v2 0/2] drm/bridge: lt9211: Add drive-strength-microamp DT property Boerge Struempfel 2026-05-13 13:31 ` [PATCH v2 1/2] dt-bindings: display/bridge: lt9211: Add drive-strength-microamp property Boerge Struempfel 2026-05-13 13:41 ` Marek Vasut 2026-05-14 5:26 ` sashiko-bot 2026-05-13 13:31 ` [PATCH v2 2/2] drm/bridge: lt9211: Add drive-strength-microamp DT property Boerge Struempfel 2026-05-13 13:45 ` Marek Vasut
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox