linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: dri-devel@lists.freedesktop.org
Cc: linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org,
	kernel@pengutronix.de, "Andy Yan" <andy.yan@rock-chips.com>,
	"Benjamin Gaignard" <benjamin.gaignard@collabora.com>,
	"Michael Riesch" <michael.riesch@wolfvision.net>,
	"Sandy Huang" <hjc@rock-chips.com>,
	"Heiko Stübner" <heiko@sntech.de>,
	"Peter Geis" <pgwipeout@gmail.com>,
	"Sascha Hauer" <s.hauer@pengutronix.de>
Subject: [PATCH v9 03/23] drm/rockchip: Add crtc_endpoint_id to rockchip_encoder
Date: Mon, 28 Mar 2022 17:10:56 +0200	[thread overview]
Message-ID: <20220328151116.2034635-4-s.hauer@pengutronix.de> (raw)
In-Reply-To: <20220328151116.2034635-1-s.hauer@pengutronix.de>

The VOP2 has an interface mux which decides to which encoder(s) a CRTC
is routed to. The encoders and CRTCs are connected via of_graphs in the
device tree. When given an encoder the VOP2 driver needs to know to
which internal register setting this encoder matches. For this the VOP2
binding offers different endpoints, one for each possible encoder. The
endpoint ids of these endpoints are used as a key from an encoders
device tree description to the internal register setting.

This patch adds the key aka endpoint id to struct rockchip_encoder plus
a function to read the endpoint id starting from the encoders device
node.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---

Notes:
    Changes since v6:
    - new patch

 drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 33 +++++++++++++++++++++
 drivers/gpu/drm/rockchip/rockchip_drm_drv.h |  4 ++-
 2 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index ac190e2b1f7aa..214214190fef1 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -236,6 +236,39 @@ static const struct dev_pm_ops rockchip_drm_pm_ops = {
 static struct platform_driver *rockchip_sub_drivers[MAX_ROCKCHIP_SUB_DRIVERS];
 static int num_rockchip_sub_drivers;
 
+/*
+ * Get the endpoint id of the remote endpoint of the given encoder. This
+ * information is used by the VOP2 driver to identify the encoder.
+ *
+ * @rkencoder: The encoder to get the remote endpoint id from
+ * @np: The encoder device node
+ * @port: The number of the port leading to the VOP2
+ * @reg: The endpoint number leading to the VOP2
+ */
+int rockchip_drm_encoder_set_crtc_endpoint_id(struct rockchip_encoder *rkencoder,
+					      struct device_node *np, int port, int reg)
+{
+	struct of_endpoint ep;
+	struct device_node *en, *ren;
+	int ret;
+
+	en = of_graph_get_endpoint_by_regs(np, port, reg);
+	if (!en)
+		return -ENOENT;
+
+	ren = of_graph_get_remote_endpoint(en);
+	if (!ren)
+		return -ENOENT;
+
+	ret = of_graph_parse_endpoint(ren, &ep);
+	if (ret)
+		return ret;
+
+	rkencoder->crtc_endpoint_id = ep.id;
+
+	return 0;
+}
+
 /*
  * Check if a vop endpoint is leading to a rockchip subdriver or bridge.
  * Should be called from the component bind stage of the drivers
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
index 686f687a76a37..1f66a447acada 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
@@ -49,6 +49,7 @@ struct rockchip_drm_private {
 };
 
 struct rockchip_encoder {
+	int crtc_endpoint_id;
 	struct drm_encoder encoder;
 };
 
@@ -57,7 +58,8 @@ int rockchip_drm_dma_attach_device(struct drm_device *drm_dev,
 void rockchip_drm_dma_detach_device(struct drm_device *drm_dev,
 				    struct device *dev);
 int rockchip_drm_wait_vact_end(struct drm_crtc *crtc, unsigned int mstimeout);
-
+int rockchip_drm_encoder_set_crtc_endpoint_id(struct rockchip_encoder *rencoder,
+					      struct device_node *np, int port, int reg);
 int rockchip_drm_endpoint_is_subdriver(struct device_node *ep);
 extern struct platform_driver cdn_dp_driver;
 extern struct platform_driver dw_hdmi_rockchip_pltfm_driver;
-- 
2.30.2


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

  parent reply	other threads:[~2022-03-28 15:19 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-28 15:10 [PATCH v9 00/23] drm/rockchip: RK356x VOP2 support Sascha Hauer
2022-03-28 15:10 ` [PATCH v9 01/23] clk: rk3568: Mark hclk_vo as critical Sascha Hauer
2022-03-29 13:22   ` Dmitry Osipenko
2022-04-06 11:15   ` Robin Murphy
2022-03-28 15:10 ` [PATCH v9 02/23] drm/rockchip: Embed drm_encoder into rockchip_decoder Sascha Hauer
2022-03-28 15:10 ` Sascha Hauer [this message]
2022-03-28 15:10 ` [PATCH v9 04/23] drm/rockchip: dw_hdmi: rename vpll clock to reference clock Sascha Hauer
2022-03-28 15:10 ` [PATCH v9 05/23] dt-bindings: display: rockchip: dw-hdmi: use "ref" as clock name Sascha Hauer
2022-03-28 15:10 ` [PATCH v9 06/23] arm64: dts: rockchip: rk3399: rename HDMI ref clock to 'ref' Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 07/23] drm/rockchip: dw_hdmi: add rk3568 support Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 08/23] dt-bindings: display: rockchip: dw-hdmi: Add compatible for rk3568 HDMI Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 09/23] drm/rockchip: dw_hdmi: add regulator support Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 10/23] dt-bindings: display: rockchip: dw-hdmi: Add " Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 11/23] drm/rockchip: dw_hdmi: Use auto-generated tables Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 12/23] drm/rockchip: dw_hdmi: drop mode_valid hook Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 13/23] drm/rockchip: dw_hdmi: Set cur_ctr to 0 always Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 14/23] drm/rockchip: dw_hdmi: add default 594Mhz clk for 4K@60hz Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 15/23] dt-bindings: display: rockchip: dw-hdmi: Make unwedge pinctrl optional Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 16/23] arm64: dts: rockchip: rk356x: Add VOP2 nodes Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 17/23] arm64: dts: rockchip: rk356x: Add HDMI nodes Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 18/23] arm64: dts: rockchip: rk3568-evb: Enable VOP2 and hdmi Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 19/23] arm64: dts: rockchip: enable vop2 and hdmi tx on quartz64a Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 20/23] drm/rockchip: Make VOP driver optional Sascha Hauer
2022-03-29 11:56   ` Andy Yan
2022-03-30  6:39     ` Sascha Hauer
2022-03-30 12:50       ` Andy Yan
2022-03-31  7:06         ` Sascha Hauer
2022-03-31  7:20           ` Andy Yan
2022-03-31  8:18             ` Sascha Hauer
2022-03-31 11:00               ` Andy Yan
2022-04-01 12:55                 ` Sascha Hauer
2022-04-02  1:25                   ` Andy Yan
2022-04-05  9:05                     ` Sascha Hauer
2022-04-06  1:43                       ` Andy Yan
2022-04-06  7:04                         ` Sascha Hauer
2022-04-06  7:47                           ` Andy Yan
2022-04-06  8:00                             ` Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 22/23] dt-bindings: display: rockchip: Add binding for VOP2 Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 23/23] dt-bindings: display: rockchip: dw-hdmi: fix ports description Sascha Hauer
2022-03-29  7:31 ` [PATCH v9 00/23] drm/rockchip: RK356x VOP2 support Piotr Oniszczuk
2022-03-30  7:28   ` Sascha Hauer
2022-03-30  8:41     ` piotro.oniszczuk@google.com
2022-03-30  9:45       ` Sascha Hauer
2022-03-30 10:01         ` piotro.oniszczuk@google.com
2022-03-30 10:20           ` Sascha Hauer
2022-03-30 14:52             ` Piotr Oniszczuk
2022-03-30 19:20               ` Sascha Hauer
2022-03-30 19:35                 ` Piotr Oniszczuk
2022-03-30 19:59                   ` Sascha Hauer
2022-03-31 12:13                 ` Andy Yan
2022-03-31 12:19                   ` Sascha Hauer
2022-03-31 14:53                   ` Piotr Oniszczuk
2022-03-31 15:00                     ` Sascha Hauer
2022-03-31 15:06                       ` Piotr Oniszczuk
2022-03-31 15:19                         ` Piotr Oniszczuk
     [not found]                     ` <622c8786-2c3f-13ff-66b7-ad9c8cb9425e@rock-chips.com>
2022-04-01  7:06                       ` Sascha Hauer
     [not found]                       ` <041d7795-fdec-8e7d-a9ee-aa79c0faa6f3@rock-chips.com>
2022-04-01 12:53                         ` Piotr Oniszczuk
2022-04-01 12:52   ` Sascha Hauer
2022-04-01 13:05     ` Piotr Oniszczuk
2022-04-06  9:47       ` Piotr Oniszczuk
2022-04-06 14:58         ` Sascha Hauer
2022-04-06 16:00           ` Piotr Oniszczuk
2022-04-07 10:16             ` Sascha Hauer
2022-04-07 15:02               ` Piotr Oniszczuk
2022-04-08  8:07         ` Sascha Hauer
2022-04-08 12:00           ` Sascha Hauer
2022-04-08 15:54             ` Piotr Oniszczuk
2022-04-11  9:08               ` Sascha Hauer
2022-04-11 11:07                 ` Piotr Oniszczuk
2022-04-12  7:50                   ` Sascha Hauer
2022-04-12  8:10                     ` Lucas Stach
2022-04-12 10:14                       ` Piotr Oniszczuk
2022-04-12 11:30                         ` Daniel Stone
2022-04-15 11:11                           ` Piotr Oniszczuk
2022-04-25 14:54                             ` Daniel Stone
2022-04-12  9:28                     ` Piotr Oniszczuk
2022-04-02  1:37     ` Andy Yan
2022-04-05  9:37       ` Sascha Hauer
2022-04-06  2:02         ` Andy Yan
2022-04-06  8:13           ` Sascha Hauer
2022-04-06  8:36             ` Andy Yan
2022-04-06 14:54               ` Sascha Hauer

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=20220328151116.2034635-4-s.hauer@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=andy.yan@rock-chips.com \
    --cc=benjamin.gaignard@collabora.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=heiko@sntech.de \
    --cc=hjc@rock-chips.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=michael.riesch@wolfvision.net \
    --cc=pgwipeout@gmail.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 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).