All of lore.kernel.org
 help / color / mirror / Atom feed
From: abhinavk@codeaurora.org
To: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Rob Clark <robdclark@gmail.com>, Sean Paul <sean@poorly.run>,
	David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	Kalyan Thota <kalyan_t@codeaurora.org>,
	Kuogee Hsieh <khsieh@codeaurora.org>,
	Rob Herring <robh+dt@kernel.org>,
	Stephen Boyd <swboyd@chromium.org>,
	linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org,
	freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: Re: [Freedreno] [PATCH v3 1/5] drm/msm/dp: Remove global g_dp_display variable
Date: Tue, 05 Oct 2021 13:11:36 -0700	[thread overview]
Message-ID: <4e36028549fcadd5e31a6b5694d6be8f@codeaurora.org> (raw)
In-Reply-To: <20211001180058.1021913-2-bjorn.andersson@linaro.org>

On 2021-10-01 11:00, Bjorn Andersson wrote:
> As the Qualcomm DisplayPort driver only supports a single instance of
> the driver the commonly used struct dp_display is kept in a global
> variable. As we introduce additional instances this obviously doesn't
> work.
> 
> Replace this with a combination of existing references to adjacent
> objects and drvdata.
> 
> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Abhinav Kumar <abhinavk@codeaurora.org>
> ---
> 
> Changes since v2:
> - None
> 
>  drivers/gpu/drm/msm/dp/dp_display.c | 80 ++++++++---------------------
>  1 file changed, 21 insertions(+), 59 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c
> b/drivers/gpu/drm/msm/dp/dp_display.c
> index fbe4c2cd52a3..5d3ee5ef07c2 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -27,7 +27,6 @@
>  #include "dp_audio.h"
>  #include "dp_debug.h"
> 
> -static struct msm_dp *g_dp_display;
>  #define HPD_STRING_SIZE 30
> 
>  enum {
> @@ -121,6 +120,13 @@ static const struct of_device_id dp_dt_match[] = {
>  	{}
>  };
> 
> +static struct dp_display_private *dev_get_dp_display_private(struct
> device *dev)
> +{
> +	struct msm_dp *dp = dev_get_drvdata(dev);
> +
> +	return container_of(dp, struct dp_display_private, dp_display);
> +}
> +
>  static int dp_add_event(struct dp_display_private *dp_priv, u32 event,
>  						u32 data, u32 delay)
>  {
> @@ -197,15 +203,12 @@ static int dp_display_bind(struct device *dev,
> struct device *master,
>  			   void *data)
>  {
>  	int rc = 0;
> -	struct dp_display_private *dp;
> -	struct drm_device *drm;
> +	struct dp_display_private *dp = dev_get_dp_display_private(dev);
>  	struct msm_drm_private *priv;
> +	struct drm_device *drm;
> 
>  	drm = dev_get_drvdata(master);
> 
> -	dp = container_of(g_dp_display,
> -			struct dp_display_private, dp_display);
> -
>  	dp->dp_display.drm_dev = drm;
>  	priv = drm->dev_private;
>  	priv->dp = &(dp->dp_display);
> @@ -240,13 +243,10 @@ static int dp_display_bind(struct device *dev,
> struct device *master,
>  static void dp_display_unbind(struct device *dev, struct device 
> *master,
>  			      void *data)
>  {
> -	struct dp_display_private *dp;
> +	struct dp_display_private *dp = dev_get_dp_display_private(dev);
>  	struct drm_device *drm = dev_get_drvdata(master);
>  	struct msm_drm_private *priv = drm->dev_private;
> 
> -	dp = container_of(g_dp_display,
> -			struct dp_display_private, dp_display);
> -
>  	dp_power_client_deinit(dp->power);
>  	dp_aux_unregister(dp->aux);
>  	priv->dp = NULL;
> @@ -379,38 +379,17 @@ static void dp_display_host_deinit(struct
> dp_display_private *dp)
> 
>  static int dp_display_usbpd_configure_cb(struct device *dev)
>  {
> -	int rc = 0;
> -	struct dp_display_private *dp;
> -
> -	if (!dev) {
> -		DRM_ERROR("invalid dev\n");
> -		rc = -EINVAL;
> -		goto end;
> -	}
> -
> -	dp = container_of(g_dp_display,
> -			struct dp_display_private, dp_display);
> +	struct dp_display_private *dp = dev_get_dp_display_private(dev);
> 
>  	dp_display_host_init(dp, false);
> 
> -	rc = dp_display_process_hpd_high(dp);
> -end:
> -	return rc;
> +	return dp_display_process_hpd_high(dp);
>  }
> 
>  static int dp_display_usbpd_disconnect_cb(struct device *dev)
>  {
>  	int rc = 0;
> -	struct dp_display_private *dp;
> -
> -	if (!dev) {
> -		DRM_ERROR("invalid dev\n");
> -		rc = -EINVAL;
> -		return rc;
> -	}
> -
> -	dp = container_of(g_dp_display,
> -			struct dp_display_private, dp_display);
> +	struct dp_display_private *dp = dev_get_dp_display_private(dev);
> 
>  	dp_add_event(dp, EV_USER_NOTIFICATION, false, 0);
> 
> @@ -472,15 +451,7 @@ static int dp_display_usbpd_attention_cb(struct
> device *dev)
>  {
>  	int rc = 0;
>  	u32 sink_request;
> -	struct dp_display_private *dp;
> -
> -	if (!dev) {
> -		DRM_ERROR("invalid dev\n");
> -		return -EINVAL;
> -	}
> -
> -	dp = container_of(g_dp_display,
> -			struct dp_display_private, dp_display);
> +	struct dp_display_private *dp = dev_get_dp_display_private(dev);
> 
>  	/* check for any test request issued by sink */
>  	rc = dp_link_process_request(dp->link);
> @@ -647,7 +618,7 @@ static int dp_hpd_unplug_handle(struct
> dp_display_private *dp, u32 data)
> 
>  	DRM_DEBUG_DP("hpd_state=%d\n", state);
>  	/* signal the disconnect event early to ensure proper teardown */
> -	dp_display_handle_plugged_change(g_dp_display, false);
> +	dp_display_handle_plugged_change(&dp->dp_display, false);
> 
>  	/* enable HDP plug interrupt to prepare for next plugin */
>  	dp_catalog_hpd_config_intr(dp->catalog, DP_DP_HPD_PLUG_INT_MASK, 
> true);
> @@ -842,9 +813,7 @@ static int dp_display_prepare(struct msm_dp *dp)
>  static int dp_display_enable(struct dp_display_private *dp, u32 data)
>  {
>  	int rc = 0;
> -	struct msm_dp *dp_display;
> -
> -	dp_display = g_dp_display;
> +	struct msm_dp *dp_display = &dp->dp_display;
> 
>  	DRM_DEBUG_DP("sink_count=%d\n", dp->link->sink_count);
>  	if (dp_display->power_on) {
> @@ -880,9 +849,7 @@ static int dp_display_post_enable(struct msm_dp 
> *dp_display)
> 
>  static int dp_display_disable(struct dp_display_private *dp, u32 data)
>  {
> -	struct msm_dp *dp_display;
> -
> -	dp_display = g_dp_display;
> +	struct msm_dp *dp_display = &dp->dp_display;
> 
>  	if (!dp_display->power_on)
>  		return 0;
> @@ -1237,14 +1204,13 @@ static int dp_display_probe(struct
> platform_device *pdev)
>  	}
> 
>  	mutex_init(&dp->event_mutex);
> -	g_dp_display = &dp->dp_display;
> 
>  	/* Store DP audio handle inside DP display */
> -	g_dp_display->dp_audio = dp->audio;
> +	dp->dp_display.dp_audio = dp->audio;
> 
>  	init_completion(&dp->audio_comp);
> 
> -	platform_set_drvdata(pdev, g_dp_display);
> +	platform_set_drvdata(pdev, &dp->dp_display);
> 
>  	rc = component_add(&pdev->dev, &dp_display_comp_ops);
>  	if (rc) {
> @@ -1257,10 +1223,7 @@ static int dp_display_probe(struct 
> platform_device *pdev)
> 
>  static int dp_display_remove(struct platform_device *pdev)
>  {
> -	struct dp_display_private *dp;
> -
> -	dp = container_of(g_dp_display,
> -			struct dp_display_private, dp_display);
> +	struct dp_display_private *dp = 
> dev_get_dp_display_private(&pdev->dev);
> 
>  	dp_display_deinit_sub_modules(dp);
> 
> @@ -1315,8 +1278,7 @@ static int dp_pm_resume(struct device *dev)
>  	else
>  		dp->dp_display.is_connected = false;
> 
> -	dp_display_handle_plugged_change(g_dp_display,
> -				dp->dp_display.is_connected);
> +	dp_display_handle_plugged_change(dp_display, 
> dp->dp_display.is_connected);
> 
>  	DRM_DEBUG_DP("After, sink_count=%d is_connected=%d core_inited=%d
> power_on=%d\n",
>  			dp->link->sink_count, dp->dp_display.is_connected,

  reply	other threads:[~2021-10-05 20:11 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-01 18:00 [PATCH v3 0/5] drm/msm/dp: Support multiple DP instances and add sc8180x Bjorn Andersson
2021-10-01 18:00 ` [PATCH v3 1/5] drm/msm/dp: Remove global g_dp_display variable Bjorn Andersson
2021-10-05 20:11   ` abhinavk [this message]
2021-10-01 18:00 ` [PATCH v3 2/5] drm/msm/dp: Modify prototype of encoder based API Bjorn Andersson
2021-10-05 20:13   ` [Freedreno] " abhinavk
2021-10-01 18:00 ` [PATCH v3 3/5] drm/msm/dp: Support up to 3 DP controllers Bjorn Andersson
2021-10-05  0:58   ` Stephen Boyd
2021-10-05  1:15     ` Bjorn Andersson
2021-10-05  1:17       ` Stephen Boyd
2021-10-05 20:16   ` [Freedreno] " abhinavk
2021-10-05 20:19     ` abhinavk
2021-10-01 18:00 ` [PATCH v3 4/5] dt-bindings: msm/dp: Add SC8180x compatibles Bjorn Andersson
2021-10-05 20:20   ` abhinavk
2021-10-01 18:00 ` [PATCH v3 5/5] drm/msm/dp: Add sc8180x DP controllers Bjorn Andersson
2021-10-05 20:20   ` [Freedreno] " abhinavk

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=4e36028549fcadd5e31a6b5694d6be8f@codeaurora.org \
    --to=abhinavk@codeaurora.org \
    --cc=airlied@linux.ie \
    --cc=bjorn.andersson@linaro.org \
    --cc=daniel@ffwll.ch \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=kalyan_t@codeaurora.org \
    --cc=khsieh@codeaurora.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robdclark@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=sean@poorly.run \
    --cc=swboyd@chromium.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.