[PATCH] sn65dsi83.c: fix dual-channel LVDS output also divide porches
Dmitry Baryshkov
dmitry.baryshkov at linaro.org
Sat Nov 30 09:54:11 UTC 2024
On Tue, Nov 26, 2024 at 09:42:45AM +0000, Bauer, Markus wrote:
> sn65dsi83.c: fix dual-channel LVDS output also divide porches
Please use drm/bridge: ti-sn65dsi83: as subject prefix. Drop the first
line of the commit message.
>
> When generating dual-channel LVDS to a single display, the
> horizontal part has to be divided in halves for each channel.
> This was done correctly for hactive, but not for the porches.
I don't see this being handled for hactive. Could you please point out
the code?
>
> Of course this does only apply to sn65dsi84, which is also covered
> by this driver.
>
> Cc: stable at vger.kernel.org
Also:
Fixes: ceb515ba29ba ("drm/bridge: ti-sn65dsi83: Add TI SN65DSI83 and SN65DSI84 driver")
> Signed-off-by: Markus Bauer <markus.bauer2 at avnet.com>
> ---
> drivers/gpu/drm/bridge/ti-sn65dsi83.c | 16 +++++++++++++---
> 1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c b/drivers/gpu/drm/bridge/ti-sn65dsi83.c
> index ad73f69d768d..d71f752e79ec 100644
> --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c
> +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c
> @@ -399,7 +399,7 @@ static void sn65dsi83_atomic_pre_enable(struct drm_bridge *bridge,
> unsigned int pval;
> __le16 le16val;
> u16 val;
> - int ret;
> + int ret, hfront, hback;
>
> ret = regulator_enable(ctx->vcc);
> if (ret) {
> @@ -521,12 +521,22 @@ static void sn65dsi83_atomic_pre_enable(struct drm_bridge *bridge,
> le16val = cpu_to_le16(mode->vsync_end - mode->vsync_start);
> regmap_bulk_write(ctx->regmap, REG_VID_CHA_VSYNC_PULSE_WIDTH_LOW,
> &le16val, 2);
> +
> + hback = mode->htotal - mode->hsync_end;
> + if (ctx->lvds_dual_link)
> + hback /= 2;
> +
> regmap_write(ctx->regmap, REG_VID_CHA_HORIZONTAL_BACK_PORCH,
> - mode->htotal - mode->hsync_end);
> + hback);
> regmap_write(ctx->regmap, REG_VID_CHA_VERTICAL_BACK_PORCH,
> mode->vtotal - mode->vsync_end);
> +
> + hfront = mode->hsync_start - mode->hdisplay;
> + if (ctx->lvds_dual_link)
> + hfront /= 2;
> +
> regmap_write(ctx->regmap, REG_VID_CHA_HORIZONTAL_FRONT_PORCH,
> - mode->hsync_start - mode->hdisplay);
> + hfront);
> regmap_write(ctx->regmap, REG_VID_CHA_VERTICAL_FRONT_PORCH,
> mode->vsync_start - mode->vdisplay);
> regmap_write(ctx->regmap, REG_VID_CHA_TEST_PATTERN, 0x00);
> --
> 2.34.1
>
>
> --
> Markus Bauer
>
> Avnet Embedded is becoming TRIA:
> www.tria-technologies.com
>
>
>
> We continuously commit to comply with the applicable data protection laws and ensure fair and transparent processing of your personal data.
> Please read our privacy statement including an information notice and data protection policy for detailed information on our website.
--
With best wishes
Dmitry
More information about the dri-devel
mailing list