All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: dri-devel@lists.freedesktop.org,
	Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
	Neil Armstrong <narmstrong@baylibre.com>
Cc: Jernej Skrabec <jernej.skrabec@siol.net>,
	Martyn Welch <martyn.welch@collabora.co.uk>,
	Jonas Karlman <jonas@kwiboo.se>,
	Peter Senna Tschudin <peter.senna@gmail.com>,
	Andrzej Hajda <a.hajda@samsung.com>,
	Thierry Reding <thierry.reding@gmail.com>,
	Sam Ravnborg <sam@ravnborg.org>,
	kbuild test robot <lkp@intel.com>
Subject: [PATCH v3 18/21] drm/bridge: nxp-ptn3460: add drm_panel_bridge support
Date: Fri,  3 Jul 2020 21:24:14 +0200	[thread overview]
Message-ID: <20200703192417.372164-19-sam@ravnborg.org> (raw)
In-Reply-To: <20200703192417.372164-1-sam@ravnborg.org>

Prepare the bridge driver for use in a chained setup by
replacing direct use of drm_panel with drm_panel_bridge support.

Note: the bridge panel will use the connector type from the panel.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Andrzej Hajda <a.hajda@samsung.com>
Cc: Neil Armstrong <narmstrong@baylibre.com>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Jonas Karlman <jonas@kwiboo.se>
Cc: Jernej Skrabec <jernej.skrabec@siol.net>
---
 drivers/gpu/drm/bridge/nxp-ptn3460.c | 51 ++++++++--------------------
 1 file changed, 14 insertions(+), 37 deletions(-)

diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c
index 438e566ce0a4..0bd9f0e451b3 100644
--- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
+++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
@@ -30,7 +30,7 @@ struct ptn3460_bridge {
 	struct i2c_client *client;
 	struct drm_bridge bridge;
 	struct edid *edid;
-	struct drm_panel *panel;
+	struct drm_bridge *panel_bridge;
 	struct gpio_desc *gpio_pd_n;
 	struct gpio_desc *gpio_rst_n;
 	u32 edid_emulation;
@@ -127,11 +127,6 @@ static void ptn3460_pre_enable(struct drm_bridge *bridge)
 	usleep_range(10, 20);
 	gpiod_set_value(ptn_bridge->gpio_rst_n, 1);
 
-	if (drm_panel_prepare(ptn_bridge->panel)) {
-		DRM_ERROR("failed to prepare panel\n");
-		return;
-	}
-
 	/*
 	 * There's a bug in the PTN chip where it falsely asserts hotplug before
 	 * it is fully functional. We're forced to wait for the maximum start up
@@ -146,16 +141,6 @@ static void ptn3460_pre_enable(struct drm_bridge *bridge)
 	ptn_bridge->enabled = true;
 }
 
-static void ptn3460_enable(struct drm_bridge *bridge)
-{
-	struct ptn3460_bridge *ptn_bridge = bridge_to_ptn3460(bridge);
-
-	if (drm_panel_enable(ptn_bridge->panel)) {
-		DRM_ERROR("failed to enable panel\n");
-		return;
-	}
-}
-
 static void ptn3460_disable(struct drm_bridge *bridge)
 {
 	struct ptn3460_bridge *ptn_bridge = bridge_to_ptn3460(bridge);
@@ -165,25 +150,10 @@ static void ptn3460_disable(struct drm_bridge *bridge)
 
 	ptn_bridge->enabled = false;
 
-	if (drm_panel_disable(ptn_bridge->panel)) {
-		DRM_ERROR("failed to disable panel\n");
-		return;
-	}
-
 	gpiod_set_value(ptn_bridge->gpio_rst_n, 1);
 	gpiod_set_value(ptn_bridge->gpio_pd_n, 0);
 }
 
-static void ptn3460_post_disable(struct drm_bridge *bridge)
-{
-	struct ptn3460_bridge *ptn_bridge = bridge_to_ptn3460(bridge);
-
-	if (drm_panel_unprepare(ptn_bridge->panel)) {
-		DRM_ERROR("failed to unprepare panel\n");
-		return;
-	}
-}
-
 static int ptn3460_get_modes(struct drm_connector *connector)
 {
 	struct ptn3460_bridge *ptn_bridge;
@@ -242,6 +212,11 @@ static int ptn3460_bridge_attach(struct drm_bridge *bridge,
 	struct ptn3460_bridge *ptn_bridge = bridge_to_ptn3460(bridge);
 	int ret;
 
+	ret = drm_bridge_attach(bridge->encoder, ptn_bridge->panel_bridge,
+				bridge, flags);
+	if (ret < 0)
+		return ret;
+
 	if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) {
 		DRM_ERROR("Fix bridge driver to make connector optional!");
 		return -EINVAL;
@@ -265,9 +240,6 @@ static int ptn3460_bridge_attach(struct drm_bridge *bridge,
 	drm_connector_attach_encoder(&ptn_bridge->connector,
 							bridge->encoder);
 
-	if (ptn_bridge->panel)
-		drm_panel_attach(ptn_bridge->panel, &ptn_bridge->connector);
-
 	drm_helper_hpd_irq_event(ptn_bridge->connector.dev);
 
 	return ret;
@@ -275,9 +247,7 @@ static int ptn3460_bridge_attach(struct drm_bridge *bridge,
 
 static const struct drm_bridge_funcs ptn3460_bridge_funcs = {
 	.pre_enable = ptn3460_pre_enable,
-	.enable = ptn3460_enable,
 	.disable = ptn3460_disable,
-	.post_disable = ptn3460_post_disable,
 	.attach = ptn3460_bridge_attach,
 };
 
@@ -286,6 +256,8 @@ static int ptn3460_probe(struct i2c_client *client,
 {
 	struct device *dev = &client->dev;
 	struct ptn3460_bridge *ptn_bridge;
+	struct drm_bridge *pbridge;
+	struct drm_panel *panel;
 	int ret;
 
 	ptn_bridge = devm_kzalloc(dev, sizeof(*ptn_bridge), GFP_KERNEL);
@@ -293,10 +265,15 @@ static int ptn3460_probe(struct i2c_client *client,
 		return -ENOMEM;
 	}
 
-	ret = drm_of_find_panel_or_bridge(dev->of_node, 0, 0, &ptn_bridge->panel, NULL);
+	ret = drm_of_find_panel_or_bridge(dev->of_node, 0, 0, &panel, NULL);
 	if (ret)
 		return ret;
 
+	pbridge = devm_drm_panel_bridge_add(dev, panel);
+	if (IS_ERR(pbridge))
+		return PTR_ERR(pbridge);
+
+	ptn_bridge->panel_bridge = pbridge;
 	ptn_bridge->client = client;
 
 	ptn_bridge->gpio_pd_n = devm_gpiod_get(&client->dev, "powerdown",
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2020-07-03 19:24 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-03 19:23 [PATCH v3 0/21] drm/bridge: support chained bridges + panel updates Sam Ravnborg
2020-07-03 19:23 ` [PATCH v3 01/21] drm/panel: add connector type to boe, hv070wsa-100 panel Sam Ravnborg
2020-07-10 21:32   ` [PATCH v3 01/21] drm/panel: add connector type to boe,hv070wsa-100 panel Laurent Pinchart
2020-07-03 19:23 ` [PATCH v3 02/21] drm/panel: panel-simple: add default connector_type Sam Ravnborg
2020-07-10 22:11   ` Laurent Pinchart
2020-07-11  7:48     ` Sam Ravnborg
2020-07-11  9:47       ` [PATCH] drm/panel: panel-simple: validate panel description Sam Ravnborg
2020-07-11 22:56         ` Laurent Pinchart
2020-07-12 10:58           ` Sam Ravnborg
2020-07-12 15:39             ` Laurent Pinchart
2020-07-03 19:23 ` [PATCH v3 03/21] drm/bridge: tc358764: drop drm_connector_(un)register Sam Ravnborg
2020-07-03 19:24 ` [PATCH v3 04/21] drm/bridge: tc358764: add drm_panel_bridge support Sam Ravnborg
2020-07-03 19:24 ` [PATCH v3 05/21] drm/bridge: tc358764: make connector creation optional Sam Ravnborg
2020-07-03 19:24 ` [PATCH v3 06/21] drm/bridge: tc358767: add drm_panel_bridge support Sam Ravnborg
2020-07-10 22:19   ` Laurent Pinchart
2020-07-19 13:06     ` Sam Ravnborg
2020-07-22 12:40       ` Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 07/21] drm/bridge: tc358767: add detect bridge operation Sam Ravnborg
2020-07-10 22:21   ` Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 08/21] drm/bridge: tc358767: add get_edid bride operation Sam Ravnborg
2020-07-10 22:24   ` Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 09/21] drm/bridge: tc358767: make connector creation optional Sam Ravnborg
2020-07-10 22:24   ` Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 10/21] drm/bridge: ti-tpd12s015: " Sam Ravnborg
2020-07-10 22:26   ` Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 11/21] drm/bridge: parade-ps8622: add drm_panel_bridge support Sam Ravnborg
2020-07-10 22:30   ` Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 12/21] drm/bridge: parade-ps8622: make connector creation optional Sam Ravnborg
2020-07-10 22:31   ` Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 13/21] drm/bridge: megachips: add helper to create connector Sam Ravnborg
2020-07-10 22:34   ` Laurent Pinchart
2020-07-26 19:57     ` Sam Ravnborg
2020-07-03 19:24 ` [PATCH v3 14/21] drm/bridge: megachips: get drm_device from bridge Sam Ravnborg
2020-07-10 22:35   ` Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 15/21] drm/bridge: megachips: enable detect bridge operation Sam Ravnborg
2020-07-10 22:36   ` Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 16/21] drm/bridge: megachips: add get_edid " Sam Ravnborg
2020-07-10 22:37   ` Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 17/21] drm/bridge: megachips: make connector creation optional Sam Ravnborg
2020-07-10 22:38   ` Laurent Pinchart
2020-07-03 19:24 ` Sam Ravnborg [this message]
2020-07-10 22:39   ` [PATCH v3 18/21] drm/bridge: nxp-ptn3460: add drm_panel_bridge support Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 19/21] drm/bridge: nxp-ptn3460: add get_modes bridge operation Sam Ravnborg
2020-07-10 22:42   ` Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 20/21] drm/bridge: nxp-ptn3460: make connector creation optional Sam Ravnborg
2020-07-10 22:43   ` Laurent Pinchart
2020-07-03 19:24 ` [PATCH v3 21/21] drm/bridge: ti-sn65dsi86: add drm_panel_bridge support Sam Ravnborg
2020-07-10 22:46   ` Laurent Pinchart

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=20200703192417.372164-19-sam@ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=a.hajda@samsung.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jernej.skrabec@siol.net \
    --cc=jonas@kwiboo.se \
    --cc=lkp@intel.com \
    --cc=martyn.welch@collabora.co.uk \
    --cc=narmstrong@baylibre.com \
    --cc=peter.senna@gmail.com \
    --cc=thierry.reding@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 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.