devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: Icenowy Zheng <icenowy-h8G6r0blFSE@public.gmane.org>
Cc: "Rob Herring" <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	"Chen-Yu Tsai" <wens-jdAy2FN1RRM@public.gmane.org>,
	"Jernej Škrabec" <jernej.skrabec-gGgVlfcn5nU@public.gmane.org>,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: [PATCH v2 03/11] drm: sun4i: ignore swapped mixer<->tcon connection for DE2
Date: Wed, 7 Jun 2017 11:35:12 +0200	[thread overview]
Message-ID: <20170607093512.rfvpefmyskgjw3ik@flea.lan> (raw)
In-Reply-To: <20170604160149.30230-4-icenowy-h8G6r0blFSE@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 6230 bytes --]

On Mon, Jun 05, 2017 at 12:01:41AM +0800, Icenowy Zheng wrote:
> Some SoC's DE2 has two mixers. Defaultly the mixer0 is connected to
> tcon0 and mixer1 is connected to tcon1; however by setting a bit
> the connection can be swapped.
> 
> As we now hardcode the default connection, ignore the bonus endpoint for
> the mixer's output and the TCON's input, as they stands for the swapped
> connection.
> 
> Signed-off-by: Icenowy Zheng <icenowy-h8G6r0blFSE@public.gmane.org>

So, I'm still not quite sure what this patch exactly is supposed to be
doing.

You mention that the routing between the mixers and tcons can be
changed, and that we need to ignore the TCON input...

> ---
> Changes in v2:
> - Change to use new endpoint reg definition.
> 
>  drivers/gpu/drm/sun4i/sun4i_drv.c  | 45 ++++++++++++++++++++++++++++
>  drivers/gpu/drm/sun4i/sun4i_tcon.c | 61 ++++++++++++++++++++++++++++++++------
>  drivers/gpu/drm/sun4i/sun4i_tcon.h |  2 ++
>  3 files changed, 99 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> index f19100c91c2b..775eee82d8a9 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> @@ -178,6 +178,13 @@ static bool sun4i_drv_node_is_frontend(struct device_node *node)
>  		of_device_is_compatible(node, "allwinner,sun8i-a33-display-frontend");
>  }
>  
> +static bool sun4i_drv_node_is_swappable_de2_mixer(struct device_node *node)
> +{
> +	/* The V3s has only one mixer-tcon pair, so it's not listed here. */
> +	return of_device_is_compatible(node, "allwinner,sun8i-h3-de2-mixer0") ||
> +		of_device_is_compatible(node, "allwinner,sun8i-h3-de2-mixer1");
> +}
> +
>  static bool sun4i_drv_node_is_tcon(struct device_node *node)
>  {
>  	return of_device_is_compatible(node, "allwinner,sun5i-a13-tcon") ||
> @@ -261,6 +268,44 @@ static int sun4i_drv_add_endpoints(struct device *dev,
>  			}
>  		}
>  
> +		/*
> +		 * The second endpoint of the output of a swappable DE2 mixer
> +		 * is the TCON after connection swapping.
> +		 * Ignore it now, as we now hardcode mixer0->tcon0,
> +		 * mixer1->tcon1 connection.
> +		 */
> +		if (sun4i_drv_node_is_swappable_de2_mixer(node)) {
> +			struct device_node *remote_ep_node;
> +			struct of_endpoint local_endpoint, remote_endpoint;
> +
> +			remote_ep_node = of_graph_get_remote_endpoint(ep);
> +			if (!remote_ep_node) {
> +				DRM_DEBUG_DRIVER("Couldn't get remote endpoint\n");
> +				continue;
> +			}
> +
> +			if (of_graph_parse_endpoint(ep, &local_endpoint)) {
> +				DRM_DEBUG_DRIVER("Couldn't parse local endpoint\n");
> +				of_node_put(remote_ep_node);
> +				continue;
> +			}
> +
> +			if (of_graph_parse_endpoint(remote_ep_node,
> +						    &remote_endpoint)) {
> +				DRM_DEBUG_DRIVER("Couldn't parse remote endpoint\n");
> +				of_node_put(remote_ep_node);
> +				continue;
> +			}
> +
> +			if (local_endpoint.id != remote_endpoint.id) {
> +				DRM_DEBUG_DRIVER("Endpoint is an unused connection for DE2 mixer... skipping\n");
> +				of_node_put(remote_ep_node);
> +				continue;
> +			}
> +
> +			of_node_put(remote_ep_node);
> +		}
> +
>  		/* Walk down our tree */
>  		count += sun4i_drv_add_endpoints(dev, match, remote);

... yet this is not parsing the input at all, but only the output nodes.


> diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c
> index d9791292553e..568cea0e5f8f 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c
> @@ -464,7 +464,8 @@ static int sun4i_tcon_init_regmap(struct device *dev,
>   * requested via the get_id function of the engine.
>   */
>  static struct sunxi_engine *sun4i_tcon_find_engine(struct sun4i_drv *drv,
> -						   struct device_node *node)
> +						   struct device_node *node,
> +						   bool skip_bonus_ep)
>  {
>  	struct device_node *port, *ep, *remote;
>  	struct sunxi_engine *engine;
> @@ -478,6 +479,42 @@ static struct sunxi_engine *sun4i_tcon_find_engine(struct sun4i_drv *drv,
>  		if (!remote)
>  			continue;
>  
> +		if (skip_bonus_ep) {
> +			struct device_node *remote_ep_node;
> +			struct of_endpoint local_endpoint, remote_endpoint;
> +
> +			remote_ep_node = of_graph_get_remote_endpoint(ep);
> +			if (!remote_ep_node) {
> +				DRM_DEBUG_DRIVER("Couldn't get remote endpoint\n");
> +				of_node_put(remote);
> +				continue;
> +			}
> +
> +			if (of_graph_parse_endpoint(ep, &local_endpoint)) {
> +				DRM_DEBUG_DRIVER("Couldn't parse local endpoint\n");
> +				of_node_put(remote);
> +				of_node_put(remote_ep_node);
> +				continue;
> +			}
> +
> +			if (of_graph_parse_endpoint(remote_ep_node,
> +						    &remote_endpoint)) {
> +				DRM_DEBUG_DRIVER("Couldn't parse remote endpoint\n");
> +				of_node_put(remote);
> +				of_node_put(remote_ep_node);
> +				continue;
> +			}
> +
> +			if (local_endpoint.id != remote_endpoint.id) {
> +				DRM_DEBUG_DRIVER("Skipping bonus mixer->TCON connection when searching engine\n");
> +				of_node_put(remote);
> +				of_node_put(remote_ep_node);
> +				continue;
> +			}
> +
> +			of_node_put(remote_ep_node);
> +		}
> +

I have no idea what this is supposed to be doing either.

I might be wrong, but I really feel like there's a big mismatch
between your commit log, and what you actually implement.

In your commit log, you should state:

A) What is the current behaviour
B) Why that is a problem
C) How do you address it

And you don't.

However, after discussing it with Chen-Yu, it seems like you're trying
to have all the mixers probed before the TCONs. If that is so, there's
nothing specific to the H3 here, and we also have the same issue on
dual-pipeline DE1 (A10, A20, A31). Chen-Yu worked on that a bit, but
the easiest solution would be to move from a DFS algorithm to walk
down the graph to a BFS one.

That way, we would add all mixers first, then the TCONs, then the
encoders, and the component framework will probe them in order.

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

  parent reply	other threads:[~2017-06-07  9:35 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-04 16:01 [PATCH v2 00/11] Support for H3 Composite Output support Icenowy Zheng
     [not found] ` <20170604160149.30230-1-icenowy-h8G6r0blFSE@public.gmane.org>
2017-06-04 16:01   ` [PATCH v2 01/11] dt-bindings: update the binding for Allwinner H3 TVE support Icenowy Zheng
     [not found]     ` <20170604160149.30230-2-icenowy-h8G6r0blFSE@public.gmane.org>
2017-06-07  8:45       ` Maxime Ripard
     [not found]         ` <20170607084544.kgclybyxxttfk3ko-ZC1Zs529Oq4@public.gmane.org>
2017-06-07  8:48           ` Icenowy Zheng
     [not found]             ` <092D4797-0034-4C39-A30A-92CFAB23AAF8-h8G6r0blFSE@public.gmane.org>
2017-06-09 16:49               ` Maxime Ripard
     [not found]                 ` <20170609164915.enap3epreg5vr2gy-YififvaboMKzQB+pC5nmwQ@public.gmane.org>
2017-06-09 16:51                   ` Icenowy Zheng
     [not found]                     ` <53E8FC74-8AC0-461A-B875-812EE4A3267E-h8G6r0blFSE@public.gmane.org>
2017-06-09 21:24                       ` Jernej Škrabec
2017-06-10 15:26                         ` [linux-sunxi] " icenowy
2017-06-13  7:41                       ` Maxime Ripard
2017-06-04 16:01   ` [PATCH v2 02/11] drm: sun4i: add support for H3 mixers Icenowy Zheng
2017-06-04 16:01   ` [PATCH v2 03/11] drm: sun4i: ignore swapped mixer<->tcon connection for DE2 Icenowy Zheng
     [not found]     ` <20170604160149.30230-4-icenowy-h8G6r0blFSE@public.gmane.org>
2017-06-07  9:35       ` Maxime Ripard [this message]
     [not found]         ` <20170607093512.rfvpefmyskgjw3ik-ZC1Zs529Oq4@public.gmane.org>
2017-06-07  9:44           ` Icenowy Zheng
2017-06-07 10:01         ` Icenowy Zheng
     [not found]           ` <01A7F22E-C4FF-4B4B-A9BC-FF0C96B996B9-h8G6r0blFSE@public.gmane.org>
2017-06-07 14:38             ` Maxime Ripard
     [not found]               ` <20170607143827.4ng5gedvzn3f5pyx-ZC1Zs529Oq4@public.gmane.org>
2017-06-07 18:15                 ` Jernej Škrabec
2017-06-09 14:45                   ` Maxime Ripard
2017-06-08  5:01                 ` icenowy-h8G6r0blFSE
     [not found]                   ` <66881eac1dd06d918692482bdb1ea9e6-h8G6r0blFSE@public.gmane.org>
2017-06-09 14:46                     ` Maxime Ripard
     [not found]                       ` <20170609144649.67i3zscq26jt5hhe-YififvaboMKzQB+pC5nmwQ@public.gmane.org>
2017-06-10 14:57                         ` icenowy-h8G6r0blFSE
     [not found]                           ` <03e5cb4ada3e19ed3476e1d562450f6f-h8G6r0blFSE@public.gmane.org>
2017-06-10 15:16                             ` icenowy-h8G6r0blFSE
2017-06-13  9:46                               ` Maxime Ripard
2017-06-13  9:43                             ` Maxime Ripard
     [not found]                               ` <20170613094347.nlvxcaopd5qyq3tb-ZC1Zs529Oq4@public.gmane.org>
2017-06-13 10:05                                 ` Chen-Yu Tsai
2017-06-23  7:31                                   ` Maxime Ripard
2017-06-04 16:01   ` [PATCH v2 04/11] drm: sun4i: add support for H3's TCON0/1 Icenowy Zheng
     [not found]     ` <20170604160149.30230-5-icenowy-h8G6r0blFSE@public.gmane.org>
2017-06-04 18:46       ` Jernej Škrabec
2017-06-04 19:03         ` Icenowy Zheng
     [not found]           ` <493AC6F2-3CB3-48F5-9568-A34AA927238F-h8G6r0blFSE@public.gmane.org>
2017-06-07  9:43             ` Maxime Ripard
     [not found]               ` <20170607094343.qqiwnu2mhmoi6jn7-ZC1Zs529Oq4@public.gmane.org>
2017-06-07  9:44                 ` Icenowy Zheng
     [not found]                   ` <52F9F9C7-9A9C-435D-A0AF-FDD4317DAD69-h8G6r0blFSE@public.gmane.org>
2017-06-07 14:19                     ` Maxime Ripard
     [not found]                       ` <20170607141957.akonr7hmuwpt7hlt-ZC1Zs529Oq4@public.gmane.org>
2017-06-07 14:21                         ` Icenowy Zheng
2017-06-09 14:48                           ` Maxime Ripard
2017-06-07 10:00                 ` Icenowy Zheng
2017-06-04 22:43       ` kbuild test robot
2017-06-04 16:01   ` [PATCH v2 05/11] drm: sun4i: add compatible for H3 display engine Icenowy Zheng
2017-06-04 16:01   ` [PATCH v2 06/11] drm: sun4i: add color space correction support for DE2 mixer Icenowy Zheng
2017-06-04 16:01   ` [PATCH v2 07/11] drm: sun4i: add support for the TV encoder in H3 SoC Icenowy Zheng
     [not found]     ` <20170604160149.30230-8-icenowy-h8G6r0blFSE@public.gmane.org>
2017-06-07  9:38       ` Maxime Ripard
     [not found]         ` <20170607093845.cu5kk55nj72roysf-ZC1Zs529Oq4@public.gmane.org>
2017-06-11  6:43           ` icenowy-h8G6r0blFSE
     [not found]             ` <362bb72d74cd7181ae02dbf73b0e724e-h8G6r0blFSE@public.gmane.org>
2017-06-13  7:44               ` Maxime Ripard
     [not found]                 ` <20170613074432.btwgc4e7pndtsvbf-ZC1Zs529Oq4@public.gmane.org>
2017-06-13  9:51                   ` Icenowy Zheng
     [not found]                     ` <5A2149A9-CC7B-4946-9219-A4FE3228B402-h8G6r0blFSE@public.gmane.org>
2017-06-23 14:44                       ` Maxime Ripard
2017-06-04 16:01   ` [PATCH v2 08/11] clk: sunxi-ng: allow CLK_DE to set CLK_PLL_DE for H3 Icenowy Zheng
2017-06-04 16:01   ` [PATCH v2 09/11] clk: sunxi-ng: export " Icenowy Zheng
2017-06-04 16:01   ` [PATCH v2 10/11] ARM: sun8i: h3: add display engine pipeline for TVE Icenowy Zheng
     [not found]     ` <20170604160149.30230-11-icenowy-h8G6r0blFSE@public.gmane.org>
2017-06-07  9:42       ` Maxime Ripard
     [not found]         ` <20170607094241.65dcm42aacrn4eev-ZC1Zs529Oq4@public.gmane.org>
2017-06-11  6:58           ` icenowy-h8G6r0blFSE
     [not found]             ` <87bf6e8c54286fd0630bd876ec0c6c56-h8G6r0blFSE@public.gmane.org>
2017-06-13  8:02               ` Maxime Ripard
2017-06-04 16:01   ` [PATCH v2 11/11] [DO NOT MERGE] ARM: sun8i: h3: enable TV output on Orange Pi PC Icenowy Zheng
2017-06-07  0:26   ` [PATCH v2 00/11] Support for H3 Composite Output support icenowy-h8G6r0blFSE

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=20170607093512.rfvpefmyskgjw3ik@flea.lan \
    --to=maxime.ripard-wi1+55scjutkeb57/3fjtnbpr1lh4cv8@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=icenowy-h8G6r0blFSE@public.gmane.org \
    --cc=jernej.skrabec-gGgVlfcn5nU@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=wens-jdAy2FN1RRM@public.gmane.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;
as well as URLs for NNTP newsgroup(s).