All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: Neil Armstrong <narmstrong@baylibre.com>
Cc: daniel@ffwll.ch, Laurent.pinchart@ideasonboard.com,
	martin.blumenstingl@googlemail.com,
	dri-devel@lists.freedesktop.org,
	linux-amlogic@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/7] drm/meson: remove useless recursive components matching
Date: Thu, 14 Oct 2021 19:49:46 +0200	[thread overview]
Message-ID: <YWhtuscoVWCdQAkY@ravnborg.org> (raw)
In-Reply-To: <20211014152606.2289528-3-narmstrong@baylibre.com>

Hi Neil,

one comment below. Other than that
Acked-by: Sam Ravnborg <sam@ravnborg.org>

	Sam

On Thu, Oct 14, 2021 at 05:26:01PM +0200, Neil Armstrong wrote:
> The initial design was recursive to cover all port/endpoints, but only the first layer
> of endpoints should be covered by the components list.
> This also breaks the MIPI-DSI init/bridge attach sequence, thus only parse the
> first endpoints instead of recursing.
> 
> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
> ---
>  drivers/gpu/drm/meson/meson_drv.c | 62 +++++++++++--------------------
>  1 file changed, 21 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index bc0d60df04ae..b53606d8825f 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -427,46 +427,6 @@ static int compare_of(struct device *dev, void *data)
>  	return dev->of_node == data;
>  }
>  
> -/* Possible connectors nodes to ignore */
> -static const struct of_device_id connectors_match[] = {
> -	{ .compatible = "composite-video-connector" },
> -	{ .compatible = "svideo-connector" },
> -	{ .compatible = "hdmi-connector" },
> -	{ .compatible = "dvi-connector" },
> -	{}
> -};
> -
> -static int meson_probe_remote(struct platform_device *pdev,
> -			      struct component_match **match,
> -			      struct device_node *parent,
> -			      struct device_node *remote)
> -{
> -	struct device_node *ep, *remote_node;
> -	int count = 1;
> -
> -	/* If node is a connector, return and do not add to match table */
> -	if (of_match_node(connectors_match, remote))
> -		return 1;
> -
> -	component_match_add(&pdev->dev, match, compare_of, remote);
> -
> -	for_each_endpoint_of_node(remote, ep) {
> -		remote_node = of_graph_get_remote_port_parent(ep);
> -		if (!remote_node ||
> -		    remote_node == parent || /* Ignore parent endpoint */
> -		    !of_device_is_available(remote_node)) {
> -			of_node_put(remote_node);
> -			continue;
> -		}
> -
> -		count += meson_probe_remote(pdev, match, remote, remote_node);
> -
> -		of_node_put(remote_node);
> -	}
> -
> -	return count;
> -}
> -
>  static void meson_drv_shutdown(struct platform_device *pdev)
>  {
>  	struct meson_drm *priv = dev_get_drvdata(&pdev->dev);
> @@ -478,6 +438,13 @@ static void meson_drv_shutdown(struct platform_device *pdev)
>  	drm_atomic_helper_shutdown(priv->drm);
>  }
>  
> +/* Possible connectors nodes to ignore */
> +static const struct of_device_id connectors_match[] = {
> +	{ .compatible = "composite-video-connector" },
> +	{ .compatible = "svideo-connector" },
> +	{}
> +};
> +
>  static int meson_drv_probe(struct platform_device *pdev)
>  {
>  	struct component_match *match = NULL;
> @@ -492,8 +459,21 @@ static int meson_drv_probe(struct platform_device *pdev)
>  			continue;
>  		}
>  
> -		count += meson_probe_remote(pdev, &match, np, remote);
> +		/* If an analog connector is detected, count it as an output */
> +		if (of_match_node(connectors_match, remote)) {
> +			++count;
> +			of_node_put(remote);
> +			continue;
> +		}
> +
> +		DRM_DEBUG_DRIVER("parent %pOF remote match add %pOF parent %s\n",
> +				  np, remote, dev_name(&pdev->dev));
Avoid the deprecated logging functions.
Use drm_dbg() or if there is no drm_device just dev_dbg().

I assume the driver uses DRM_xxx all over, so I understand if you keep
it as-is.

> +
> +		component_match_add(&pdev->dev, &match, compare_of, remote);
> +
>  		of_node_put(remote);
> +
> +		++count;
>  	}
>  
>  	if (count && !match)
> -- 
> 2.25.1

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

WARNING: multiple messages have this Message-ID (diff)
From: Sam Ravnborg <sam@ravnborg.org>
To: Neil Armstrong <narmstrong@baylibre.com>
Cc: daniel@ffwll.ch, Laurent.pinchart@ideasonboard.com,
	martin.blumenstingl@googlemail.com,
	dri-devel@lists.freedesktop.org,
	linux-amlogic@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/7] drm/meson: remove useless recursive components matching
Date: Thu, 14 Oct 2021 19:49:46 +0200	[thread overview]
Message-ID: <YWhtuscoVWCdQAkY@ravnborg.org> (raw)
In-Reply-To: <20211014152606.2289528-3-narmstrong@baylibre.com>

Hi Neil,

one comment below. Other than that
Acked-by: Sam Ravnborg <sam@ravnborg.org>

	Sam

On Thu, Oct 14, 2021 at 05:26:01PM +0200, Neil Armstrong wrote:
> The initial design was recursive to cover all port/endpoints, but only the first layer
> of endpoints should be covered by the components list.
> This also breaks the MIPI-DSI init/bridge attach sequence, thus only parse the
> first endpoints instead of recursing.
> 
> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
> ---
>  drivers/gpu/drm/meson/meson_drv.c | 62 +++++++++++--------------------
>  1 file changed, 21 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index bc0d60df04ae..b53606d8825f 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -427,46 +427,6 @@ static int compare_of(struct device *dev, void *data)
>  	return dev->of_node == data;
>  }
>  
> -/* Possible connectors nodes to ignore */
> -static const struct of_device_id connectors_match[] = {
> -	{ .compatible = "composite-video-connector" },
> -	{ .compatible = "svideo-connector" },
> -	{ .compatible = "hdmi-connector" },
> -	{ .compatible = "dvi-connector" },
> -	{}
> -};
> -
> -static int meson_probe_remote(struct platform_device *pdev,
> -			      struct component_match **match,
> -			      struct device_node *parent,
> -			      struct device_node *remote)
> -{
> -	struct device_node *ep, *remote_node;
> -	int count = 1;
> -
> -	/* If node is a connector, return and do not add to match table */
> -	if (of_match_node(connectors_match, remote))
> -		return 1;
> -
> -	component_match_add(&pdev->dev, match, compare_of, remote);
> -
> -	for_each_endpoint_of_node(remote, ep) {
> -		remote_node = of_graph_get_remote_port_parent(ep);
> -		if (!remote_node ||
> -		    remote_node == parent || /* Ignore parent endpoint */
> -		    !of_device_is_available(remote_node)) {
> -			of_node_put(remote_node);
> -			continue;
> -		}
> -
> -		count += meson_probe_remote(pdev, match, remote, remote_node);
> -
> -		of_node_put(remote_node);
> -	}
> -
> -	return count;
> -}
> -
>  static void meson_drv_shutdown(struct platform_device *pdev)
>  {
>  	struct meson_drm *priv = dev_get_drvdata(&pdev->dev);
> @@ -478,6 +438,13 @@ static void meson_drv_shutdown(struct platform_device *pdev)
>  	drm_atomic_helper_shutdown(priv->drm);
>  }
>  
> +/* Possible connectors nodes to ignore */
> +static const struct of_device_id connectors_match[] = {
> +	{ .compatible = "composite-video-connector" },
> +	{ .compatible = "svideo-connector" },
> +	{}
> +};
> +
>  static int meson_drv_probe(struct platform_device *pdev)
>  {
>  	struct component_match *match = NULL;
> @@ -492,8 +459,21 @@ static int meson_drv_probe(struct platform_device *pdev)
>  			continue;
>  		}
>  
> -		count += meson_probe_remote(pdev, &match, np, remote);
> +		/* If an analog connector is detected, count it as an output */
> +		if (of_match_node(connectors_match, remote)) {
> +			++count;
> +			of_node_put(remote);
> +			continue;
> +		}
> +
> +		DRM_DEBUG_DRIVER("parent %pOF remote match add %pOF parent %s\n",
> +				  np, remote, dev_name(&pdev->dev));
Avoid the deprecated logging functions.
Use drm_dbg() or if there is no drm_device just dev_dbg().

I assume the driver uses DRM_xxx all over, so I understand if you keep
it as-is.

> +
> +		component_match_add(&pdev->dev, &match, compare_of, remote);
> +
>  		of_node_put(remote);
> +
> +		++count;
>  	}
>  
>  	if (count && !match)
> -- 
> 2.25.1

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Sam Ravnborg <sam@ravnborg.org>
To: Neil Armstrong <narmstrong@baylibre.com>
Cc: daniel@ffwll.ch, Laurent.pinchart@ideasonboard.com,
	martin.blumenstingl@googlemail.com,
	dri-devel@lists.freedesktop.org,
	linux-amlogic@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/7] drm/meson: remove useless recursive components matching
Date: Thu, 14 Oct 2021 19:49:46 +0200	[thread overview]
Message-ID: <YWhtuscoVWCdQAkY@ravnborg.org> (raw)
In-Reply-To: <20211014152606.2289528-3-narmstrong@baylibre.com>

Hi Neil,

one comment below. Other than that
Acked-by: Sam Ravnborg <sam@ravnborg.org>

	Sam

On Thu, Oct 14, 2021 at 05:26:01PM +0200, Neil Armstrong wrote:
> The initial design was recursive to cover all port/endpoints, but only the first layer
> of endpoints should be covered by the components list.
> This also breaks the MIPI-DSI init/bridge attach sequence, thus only parse the
> first endpoints instead of recursing.
> 
> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
> ---
>  drivers/gpu/drm/meson/meson_drv.c | 62 +++++++++++--------------------
>  1 file changed, 21 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index bc0d60df04ae..b53606d8825f 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -427,46 +427,6 @@ static int compare_of(struct device *dev, void *data)
>  	return dev->of_node == data;
>  }
>  
> -/* Possible connectors nodes to ignore */
> -static const struct of_device_id connectors_match[] = {
> -	{ .compatible = "composite-video-connector" },
> -	{ .compatible = "svideo-connector" },
> -	{ .compatible = "hdmi-connector" },
> -	{ .compatible = "dvi-connector" },
> -	{}
> -};
> -
> -static int meson_probe_remote(struct platform_device *pdev,
> -			      struct component_match **match,
> -			      struct device_node *parent,
> -			      struct device_node *remote)
> -{
> -	struct device_node *ep, *remote_node;
> -	int count = 1;
> -
> -	/* If node is a connector, return and do not add to match table */
> -	if (of_match_node(connectors_match, remote))
> -		return 1;
> -
> -	component_match_add(&pdev->dev, match, compare_of, remote);
> -
> -	for_each_endpoint_of_node(remote, ep) {
> -		remote_node = of_graph_get_remote_port_parent(ep);
> -		if (!remote_node ||
> -		    remote_node == parent || /* Ignore parent endpoint */
> -		    !of_device_is_available(remote_node)) {
> -			of_node_put(remote_node);
> -			continue;
> -		}
> -
> -		count += meson_probe_remote(pdev, match, remote, remote_node);
> -
> -		of_node_put(remote_node);
> -	}
> -
> -	return count;
> -}
> -
>  static void meson_drv_shutdown(struct platform_device *pdev)
>  {
>  	struct meson_drm *priv = dev_get_drvdata(&pdev->dev);
> @@ -478,6 +438,13 @@ static void meson_drv_shutdown(struct platform_device *pdev)
>  	drm_atomic_helper_shutdown(priv->drm);
>  }
>  
> +/* Possible connectors nodes to ignore */
> +static const struct of_device_id connectors_match[] = {
> +	{ .compatible = "composite-video-connector" },
> +	{ .compatible = "svideo-connector" },
> +	{}
> +};
> +
>  static int meson_drv_probe(struct platform_device *pdev)
>  {
>  	struct component_match *match = NULL;
> @@ -492,8 +459,21 @@ static int meson_drv_probe(struct platform_device *pdev)
>  			continue;
>  		}
>  
> -		count += meson_probe_remote(pdev, &match, np, remote);
> +		/* If an analog connector is detected, count it as an output */
> +		if (of_match_node(connectors_match, remote)) {
> +			++count;
> +			of_node_put(remote);
> +			continue;
> +		}
> +
> +		DRM_DEBUG_DRIVER("parent %pOF remote match add %pOF parent %s\n",
> +				  np, remote, dev_name(&pdev->dev));
Avoid the deprecated logging functions.
Use drm_dbg() or if there is no drm_device just dev_dbg().

I assume the driver uses DRM_xxx all over, so I understand if you keep
it as-is.

> +
> +		component_match_add(&pdev->dev, &match, compare_of, remote);
> +
>  		of_node_put(remote);
> +
> +		++count;
>  	}
>  
>  	if (count && !match)
> -- 
> 2.25.1

  reply	other threads:[~2021-10-14 17:50 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-14 15:25 [PATCH 0/7] drm/meson: rework encoders to pass ATTACH_NO_CONNECTOR Neil Armstrong
2021-10-14 15:25 ` Neil Armstrong
2021-10-14 15:25 ` Neil Armstrong
2021-10-14 15:26 ` [PATCH 1/7] drm/bridge: display-connector: implement bus fmts callbacks Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 17:45   ` Sam Ravnborg
2021-10-14 17:45     ` Sam Ravnborg
2021-10-14 17:45     ` Sam Ravnborg
2021-10-14 15:26 ` [PATCH 2/7] drm/meson: remove useless recursive components matching Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 17:49   ` Sam Ravnborg [this message]
2021-10-14 17:49     ` Sam Ravnborg
2021-10-14 17:49     ` Sam Ravnborg
2021-10-15  7:53     ` Neil Armstrong
2021-10-15  7:53       ` Neil Armstrong
2021-10-15  7:53       ` Neil Armstrong
2021-10-14 15:26 ` [PATCH 3/7] drm/meson: split out encoder from meson_dw_hdmi Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 18:07   ` Sam Ravnborg
2021-10-14 18:07     ` Sam Ravnborg
2021-10-14 18:07     ` Sam Ravnborg
2021-10-15  7:55     ` Neil Armstrong
2021-10-15  7:55       ` Neil Armstrong
2021-10-15  7:55       ` Neil Armstrong
2021-10-14 15:26 ` [PATCH 4/7] drm/bridge: synopsys: dw-hdmi: also allow interlace on bridge Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 18:08   ` Sam Ravnborg
2021-10-14 18:08     ` Sam Ravnborg
2021-10-14 18:08     ` Sam Ravnborg
2021-10-15  8:01     ` Neil Armstrong
2021-10-15  8:01       ` Neil Armstrong
2021-10-15  8:01       ` Neil Armstrong
2021-10-14 15:26 ` [PATCH 5/7] drm/meson: encoder_hdmi: switch to bridge DRM_BRIDGE_ATTACH_NO_CONNECTOR Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 18:19   ` Sam Ravnborg
2021-10-14 18:19     ` Sam Ravnborg
2021-10-14 18:19     ` Sam Ravnborg
2021-10-14 15:26 ` [PATCH 6/7] drm/meson: rename venc_cvbs to encoder_cvbs Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 18:15   ` Sam Ravnborg
2021-10-14 18:15     ` Sam Ravnborg
2021-10-14 18:15     ` Sam Ravnborg
2021-10-14 15:26 ` [PATCH 7/7] drm/meson: encoder_cvbs: switch to bridge with ATTACH_NO_CONNECTOR Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 15:26   ` Neil Armstrong
2021-10-14 18:15   ` Sam Ravnborg
2021-10-14 18:15     ` Sam Ravnborg
2021-10-14 18:15     ` Sam Ravnborg
2021-10-15  7:56     ` Neil Armstrong
2021-10-15  7:56       ` Neil Armstrong
2021-10-15  7:56       ` Neil Armstrong

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=YWhtuscoVWCdQAkY@ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-amlogic@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=martin.blumenstingl@googlemail.com \
    --cc=narmstrong@baylibre.com \
    /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.