linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: icenowy@aosc.io
To: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Rob Herring <robh+dt@kernel.org>, Chen-Yu Tsai <wens@csie.org>,
	dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org,
	linux-sunxi@googlegroups.com, linux-kernel-owner@vger.kernel.org
Subject: Re: [RFC PATCH 03/11] drm: sun4i: ignore swapped mixer<->tcon connection for DE2
Date: Sun, 04 Jun 2017 22:19:46 +0800	[thread overview]
Message-ID: <e5602515955fd2e90196d48138191f77@aosc.io> (raw)
In-Reply-To: <20170524081440.cbtjvvmj5okrri6z@flea.home>

在 2017-05-24 16:14,Maxime Ripard 写道:
> On Sat, May 20, 2017 at 02:00:22AM +0800, Icenowy Zheng wrote:
>> 
>> 
>> 于 2017年5月20日 GMT+08:00 上午1:57:53, Maxime Ripard 
>> <maxime.ripard@free-electrons.com> 写到:
>> >On Thu, May 18, 2017 at 12:43:46AM +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@aosc.io>
>> >> ---
>> >>  drivers/gpu/drm/sun4i/sun4i_drv.c  | 27 ++++++++++++++++++++++++++
>> >>  drivers/gpu/drm/sun4i/sun4i_tcon.c | 39
>> >+++++++++++++++++++++++++++++---------
>> >>  drivers/gpu/drm/sun4i/sun4i_tcon.h |  2 ++
>> >>  3 files changed, 59 insertions(+), 9 deletions(-)
>> >>
>> >> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c
>> >b/drivers/gpu/drm/sun4i/sun4i_drv.c
>> >> index 1dd1948025d2..29bf1325ded6 100644
>> >> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
>> >> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
>> >> @@ -173,6 +173,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") ||
>> >> @@ -249,6 +256,26 @@ 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 of_endpoint endpoint;
>> >> +
>> >> +			if (of_graph_parse_endpoint(ep, &endpoint)) {
>> >> +				DRM_DEBUG_DRIVER("Couldn't parse endpoint\n");
>> >> +				continue;
>> >> +			}
>> >> +
>> >> +			if (endpoint.id) {
>> >> +				DRM_DEBUG_DRIVER("Endpoint is an unused connection for DE2
>> >mixer... skipping\n");
>> >> +				continue;
>> >> +			}
>> >> +		}
>> >> +
>> >>  		/* Walk down our tree */
>> >>  		count += sun4i_drv_add_endpoints(dev, match, remote);
>> >>
>> >> diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c
>> >b/drivers/gpu/drm/sun4i/sun4i_tcon.c
>> >> index f44a37a5993d..89a215ff2370 100644
>> >> --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c
>> >> +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c
>> >> @@ -425,7 +425,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;
>> >> @@ -439,6 +440,20 @@ static struct sunxi_engine
>> >*sun4i_tcon_find_engine(struct sun4i_drv *drv,
>> >>  		if (!remote)
>> >>  			continue;
>> >>
>> >> +		if (skip_bonus_ep) {
>> >> +			struct of_endpoint endpoint;
>> >> +
>> >> +			if (of_graph_parse_endpoint(ep, &endpoint)) {
>> >> +				DRM_DEBUG_DRIVER("Couldn't parse endpoint\n");
>> >> +				continue;
>> >> +			}
>> >> +
>> >> +			if (endpoint.id) {
>> >> +				DRM_DEBUG_DRIVER("Skipping bonus mixer->TCON connection when
>> >searching engine\n");
>> >> +				continue;
>> >> +			}
>> >> +		}
>> >> +
>> >
>> >You don't list the mixers in the tcon's output, why do you need that
>> >exactly?
>> 
>> Mixers are TCONs' input, not output...
> 
> Then why are they even parsed? The whole parsing logic in the driver
> only searches for output nodes.

Here it's really parsing the input node, for searching for a connected
engine.

In the situation of DE1 TCON has only one input endpoint and it must be
the connected backend.

But in the situation of DE2 it has now two input endpoints, and it's
now needed to figure out which connection is used.

> 
> Maxime

  reply	other threads:[~2017-06-04 14:19 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-17 16:43 [RFC PATCH 00/11] Support for H3 Composite Output support Icenowy Zheng
2017-05-17 16:43 ` [RFC PATCH 01/11] dt-bindings: update the binding for Allwinner H3 TVE support Icenowy Zheng
2017-05-19 18:02   ` Maxime Ripard
2017-05-19 18:06     ` Icenowy Zheng
2017-05-20  2:01       ` [linux-sunxi] " Chen-Yu Tsai
2017-05-17 16:43 ` [RFC PATCH 02/11] drm: sun4i: add support for H3 mixers Icenowy Zheng
2017-05-19 17:47   ` Maxime Ripard
2017-05-19 17:49     ` [linux-sunxi] " Icenowy Zheng
2017-05-19 18:00       ` Jernej Škrabec
2017-05-17 16:43 ` [RFC PATCH 03/11] drm: sun4i: ignore swapped mixer<->tcon connection for DE2 Icenowy Zheng
2017-05-19 17:57   ` Maxime Ripard
2017-05-19 18:00     ` Icenowy Zheng
2017-05-24  8:14       ` Maxime Ripard
2017-06-04 14:19         ` icenowy [this message]
2017-05-17 16:43 ` [RFC PATCH 04/11] drm: sun4i: add support for H3's TCON0/1 Icenowy Zheng
2017-05-17 16:43 ` [RFC PATCH 05/11] drm: sun4i: add compatible for H3 display engine Icenowy Zheng
2017-05-17 16:43 ` [RFC PATCH 06/11] drm: sun4i: add color space correction support for DE2 mixer Icenowy Zheng
2017-05-17 20:14   ` [linux-sunxi] " Jernej Škrabec
2017-05-17 16:43 ` [RFC PATCH 07/11] drm: sun4i: add support for the TV encoder in H3 SoC Icenowy Zheng
2017-05-19 18:03   ` Maxime Ripard
2017-05-19 18:08     ` Icenowy Zheng
2017-05-19 18:23       ` [linux-sunxi] " Jernej Škrabec
2017-05-20  1:37         ` Chen-Yu Tsai
2017-05-22 17:55           ` Jernej Škrabec
2017-05-23 12:53             ` Maxime Ripard
2017-05-23 12:56               ` Icenowy Zheng
2017-05-23 13:00               ` icenowy
2017-05-24  7:30                 ` Maxime Ripard
2017-05-24  8:25                   ` Icenowy Zheng
2017-05-24 15:23                     ` Jernej Škrabec
2017-05-31 18:43                     ` Maxime Ripard
2017-06-01 14:11                       ` icenowy
2017-06-02 22:21                         ` Maxime Ripard
2017-06-04 14:29                   ` icenowy
2017-06-07  7:58                     ` Maxime Ripard
2017-05-17 16:43 ` [RFC PATCH 08/11] clk: sunxi-ng: allow CLK_DE to set CLK_PLL_DE for H3 Icenowy Zheng
2017-05-17 16:43 ` [RFC PATCH 09/11] clk: sunxi-ng: export " Icenowy Zheng
2017-05-17 16:43 ` [RFC PATCH 10/11] ARM: sun8i: h3: add display engine pipeline for TVE Icenowy Zheng
2017-05-17 20:19   ` [linux-sunxi] " Jernej Škrabec
2017-05-19 18:06   ` Maxime Ripard
2017-05-19 18:10     ` [linux-sunxi] " Icenowy Zheng
2017-05-24  8:19       ` Maxime Ripard
2017-05-24  5:24   ` [linux-sunxi] " Chen-Yu Tsai
2017-05-24  5:28     ` Icenowy Zheng
2017-05-24  5:34       ` Chen-Yu Tsai
2017-05-24  5:36         ` Icenowy Zheng
2017-05-17 16:43 ` [RFC PATCH 11/11] [DO NOT MERGE] ARM: sun8i: h3: enable TV output on Orange Pi PC Icenowy Zheng

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=e5602515955fd2e90196d48138191f77@aosc.io \
    --to=icenowy@aosc.io \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel-owner@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=maxime.ripard@free-electrons.com \
    --cc=robh+dt@kernel.org \
    --cc=wens@csie.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).