[PATCH v2 07/10] drm: rcar-du: Skip LVDS1 output on Gen3 when using dual-link LVDS mode
Jacopo Mondi
jacopo at jmondi.org
Tue May 28 09:38:09 UTC 2019
HI Laurent,
On Sun, May 12, 2019 at 12:06:59AM +0300, Laurent Pinchart wrote:
> In dual-link LVDS mode, the LVDS1 encoder is used as a companion for
> LVDS0, and both encoders transmit data from DU0. The LVDS1 output of DU1
> can't be used in that case, don't create an encoder and connector for
> it.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas at ideasonboard.com>
> ---
> drivers/gpu/drm/rcar-du/rcar_du_encoder.c | 12 ++++++++++++
> drivers/gpu/drm/rcar-du/rcar_du_kms.c | 2 +-
> 2 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_encoder.c b/drivers/gpu/drm/rcar-du/rcar_du_encoder.c
> index 6c91753af7bc..fe046d194944 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_encoder.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_encoder.c
> @@ -16,6 +16,7 @@
> #include "rcar_du_drv.h"
> #include "rcar_du_encoder.h"
> #include "rcar_du_kms.h"
> +#include "rcar_lvds.h"
>
> /* -----------------------------------------------------------------------------
> * Encoder
> @@ -97,6 +98,17 @@ int rcar_du_encoder_init(struct rcar_du_device *rcdu,
> }
> }
>
> + /*
> + * On Gen3 skip the LVDS1 output if the LVDS1 encoder is used as a
> + * companion for LVDS0 in dual-link mode.
> + */
> + if (rcdu->info->gen >= 3 && output == RCAR_DU_OUTPUT_LVDS1) {
> + if (bridge && rcar_lvds_dual_link(bridge)) {
If you get here, 'bridge' is guaranteed to be valid.
> + ret = -ENOLINK;
> + goto done;
> + }
> + }
> +
> ret = drm_encoder_init(rcdu->ddev, encoder, &encoder_funcs,
> DRM_MODE_ENCODER_NONE, NULL);
> if (ret < 0)
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> index f8f7fff34dff..95c81e59e2f1 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> @@ -378,7 +378,7 @@ static int rcar_du_encoders_init_one(struct rcar_du_device *rcdu,
> }
>
> ret = rcar_du_encoder_init(rcdu, output, entity);
> - if (ret && ret != -EPROBE_DEFER)
> + if (ret && ret != -EPROBE_DEFER && ret != -ENOLINK)
Apart from the minor above
Reviewed-by: Jacopo Mondi <jacopo+renesas at jmondi.org>
Thanks
j
> dev_warn(rcdu->dev,
> "failed to initialize encoder %pOF on output %u (%d), skipping\n",
> entity, output, ret);
> --
> Regards,
>
> Laurent Pinchart
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20190528/79b0a9a9/attachment.sig>
More information about the dri-devel
mailing list