mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Cc: dri-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org,
	Sam Ravnborg <sam@ravnborg.org>,
	Douglas Anderson <dianders@chromium.org>,
	linux-kernel@vger.kernel.org,
	Andrzej Hajda <andrzej.hajda@intel.com>,
	Neil Armstrong <narmstrong@baylibre.com>,
	Robert Foss <robert.foss@linaro.org>,
	Jonas Karlman <jonas@kwiboo.se>,
	Jernej Skrabec <jernej.skrabec@gmail.com>,
	David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>
Subject: Re: [PATCH v3 1/3] drm/bridge: ti-sn65dsi86: Support DisplayPort (non-eDP) mode
Date: Thu, 10 Mar 2022 18:18:25 +0200	[thread overview]
Message-ID: <Yiok0XZUgDyveWKj@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20220310152227.2122960-2-kieran.bingham+renesas@ideasonboard.com>

Hi Kieran,

Thank you for the patch.

On Thu, Mar 10, 2022 at 03:22:25PM +0000, Kieran Bingham wrote:
> From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> 
> Despite the SN65DSI86 being an eDP bridge, on some systems its output is
> routed to a DisplayPort connector. Enable DisplayPort mode when the next
> component in the display pipeline is detected as a DisplayPort
> connector, and disable eDP features in that case.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> Reworked to set bridge type based on the next bridge/connector.
> Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

(I know I'm listed as the author, but your changes look good :-))

> --
> Changes since v1/RFC:
>  - Rebased on top of "drm/bridge: ti-sn65dsi86: switch to
>    devm_drm_of_get_bridge"
>  - eDP/DP mode determined from the next bridge connector type.
> 
> Changes since v2:
>  - Remove setting of Standard DP Scrambler Seed. (It's read-only).
>  - Prevent setting DP_EDP_CONFIGURATION_SET in
>    ti_sn_bridge_atomic_enable()
>  - Use Doug's suggested text for disabling ASSR on DP mode.
> 
>  drivers/gpu/drm/bridge/ti-sn65dsi86.c | 23 ++++++++++++++++++++---
>  1 file changed, 20 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
> index c892ecba91c7..93b54fcba8ba 100644
> --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
> +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
> @@ -62,6 +62,7 @@
>  #define SN_LN_ASSIGN_REG			0x59
>  #define  LN_ASSIGN_WIDTH			2
>  #define SN_ENH_FRAME_REG			0x5A
> +#define  ASSR_CONTROL				BIT(0)
>  #define  VSTREAM_ENABLE				BIT(3)
>  #define  LN_POLRS_OFFSET			4
>  #define  LN_POLRS_MASK				0xf0
> @@ -93,6 +94,8 @@
>  #define SN_DATARATE_CONFIG_REG			0x94
>  #define  DP_DATARATE_MASK			GENMASK(7, 5)
>  #define  DP_DATARATE(x)				((x) << 5)
> +#define SN_TRAINING_SETTING_REG			0x95
> +#define  SCRAMBLE_DISABLE			BIT(4)
>  #define SN_ML_TX_MODE_REG			0x96
>  #define  ML_TX_MAIN_LINK_OFF			0
>  #define  ML_TX_NORMAL_MODE			BIT(0)
> @@ -982,6 +985,17 @@ static int ti_sn_link_training(struct ti_sn65dsi86 *pdata, int dp_rate_idx,
>  		goto exit;
>  	}
>  
> +	/*
> +	 * eDP panels use an Alternate Scrambler Seed compared to displays
> +	 * hooked up via a full DisplayPort connector. SN65DSI86 only supports
> +	 * the alternate scrambler seed, not the normal one, so the only way we
> +	 * can support full DisplayPort displays is by fully turning off the
> +	 * scrambler.
> +	 */
> +	if (pdata->bridge.type == DRM_MODE_CONNECTOR_DisplayPort)
> +		regmap_update_bits(pdata->regmap, SN_TRAINING_SETTING_REG,
> +				   SCRAMBLE_DISABLE, SCRAMBLE_DISABLE);
> +
>  	/*
>  	 * We'll try to link train several times.  As part of link training
>  	 * the bridge chip will write DP_SET_POWER_D0 to DP_SET_POWER.  If
> @@ -1046,12 +1060,13 @@ static void ti_sn_bridge_atomic_enable(struct drm_bridge *bridge,
>  
>  	/*
>  	 * The SN65DSI86 only supports ASSR Display Authentication method and
> -	 * this method is enabled by default. An eDP panel must support this
> +	 * this method is enabled for eDP panels. An eDP panel must support this
>  	 * authentication method. We need to enable this method in the eDP panel
>  	 * at DisplayPort address 0x0010A prior to link training.
>  	 */
> -	drm_dp_dpcd_writeb(&pdata->aux, DP_EDP_CONFIGURATION_SET,
> -			   DP_ALTERNATE_SCRAMBLER_RESET_ENABLE);
> +	if (pdata->bridge.type == DRM_MODE_CONNECTOR_eDP)
> +		drm_dp_dpcd_writeb(&pdata->aux, DP_EDP_CONFIGURATION_SET,
> +				   DP_ALTERNATE_SCRAMBLER_RESET_ENABLE);
>  
>  	/* Set the DP output format (18 bpp or 24 bpp) */
>  	val = (ti_sn_bridge_get_bpp(old_bridge_state) == 18) ? BPP_18_RGB : 0;
> @@ -1215,6 +1230,8 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev,
>  
>  	pdata->bridge.funcs = &ti_sn_bridge_funcs;
>  	pdata->bridge.of_node = np;
> +	pdata->bridge.type = pdata->next_bridge->type == DRM_MODE_CONNECTOR_DisplayPort
> +			   ? DRM_MODE_CONNECTOR_DisplayPort : DRM_MODE_CONNECTOR_eDP;
>  
>  	drm_bridge_add(&pdata->bridge);
>  

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2022-03-10 16:19 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-10 15:22 [PATCH v3 0/3] drm/bridge: ti-sn65dsi86: Support non-eDP DisplayPort connectors Kieran Bingham
2022-03-10 15:22 ` [PATCH v3 1/3] drm/bridge: ti-sn65dsi86: Support DisplayPort (non-eDP) mode Kieran Bingham
2022-03-10 16:18   ` Laurent Pinchart [this message]
2022-03-10 23:10   ` Doug Anderson
2022-03-10 15:22 ` [PATCH v3 2/3] drm/bridge: ti-sn65dsi86: Implement bridge connector operations Kieran Bingham
2022-03-10 16:23   ` Laurent Pinchart
2022-03-10 23:10   ` Doug Anderson
2022-03-16 23:24     ` Kieran Bingham
2022-03-10 15:22 ` [PATCH v3 3/3] drm/bridge: ti-sn65dsi86: Support hotplug detection Kieran Bingham
2022-03-10 15:26   ` Kieran Bingham
2022-03-10 16:42   ` Laurent Pinchart
2022-03-10 17:39     ` Kieran Bingham
2022-03-10 23:10   ` Doug Anderson
2022-03-11  5:47     ` Kieran Bingham
2022-03-11 15:24       ` Doug Anderson
2022-03-10 23:21 ` [PATCH v3 0/3] drm/bridge: ti-sn65dsi86: Support non-eDP DisplayPort connectors Doug Anderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Yiok0XZUgDyveWKj@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=airlied@linux.ie \
    --cc=andrzej.hajda@intel.com \
    --cc=daniel@ffwll.ch \
    --cc=dianders@chromium.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonas@kwiboo.se \
    --cc=kieran.bingham+renesas@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=narmstrong@baylibre.com \
    --cc=robert.foss@linaro.org \
    --cc=sam@ravnborg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®