All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Tretter <m.tretter@pengutronix.de>
To: dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org
Cc: kernel@pengutronix.de, Laurent.pinchart@ideasonboard.com,
	krzk@kernel.org, narmstrong@baylibre.com,
	b.zolnierkie@samsung.com, sylvester.nawrocki@gmail.com,
	a.hajda@samsung.com, inki.dae@samsung.com,
	jy0922.shim@samsung.com, sw0312.kim@samsung.com,
	Michael Tretter <m.tretter@pengutronix.de>
Subject: [PATCH v2 11/16] drm/exynos: convert encoder functions to bridge function
Date: Fri, 11 Sep 2020 15:54:08 +0200	[thread overview]
Message-ID: <20200911135413.3654800-12-m.tretter@pengutronix.de> (raw)
In-Reply-To: <20200911135413.3654800-1-m.tretter@pengutronix.de>

If other drivers use the exynos_dsi driver as a bridge, they might bring
their own encoder. Enable and disable the MIPI-DSI bridge using the
bridge functions instead of the encoder functions.

Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
---
v2: none
---
 drivers/gpu/drm/exynos/exynos_drm_dsi.c | 33 +++++++++++++++----------
 1 file changed, 20 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
index 5e7c1a99a3ee..a4f17d50d1d8 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
@@ -1455,9 +1455,8 @@ static void exynos_dsi_unregister_te_irq(struct exynos_dsi *dsi)
 	}
 }
 
-static void exynos_dsi_enable(struct drm_encoder *encoder)
+static void exynos_dsi_enable(struct exynos_dsi *dsi)
 {
-	struct exynos_dsi *dsi = encoder_to_dsi(encoder);
 	struct drm_bridge *iter;
 	int ret;
 
@@ -1505,9 +1504,8 @@ static void exynos_dsi_enable(struct drm_encoder *encoder)
 	pm_runtime_put(dsi->dev);
 }
 
-static void exynos_dsi_disable(struct drm_encoder *encoder)
+static void exynos_dsi_disable(struct exynos_dsi *dsi)
 {
-	struct exynos_dsi *dsi = encoder_to_dsi(encoder);
 	struct drm_bridge *iter;
 
 	if (!(dsi->state & DSIM_STATE_ENABLED))
@@ -1598,11 +1596,6 @@ static int exynos_dsi_create_connector(struct drm_encoder *encoder)
 	return 0;
 }
 
-static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = {
-	.enable = exynos_dsi_enable,
-	.disable = exynos_dsi_disable,
-};
-
 static int exynos_dsi_bridge_attach(struct drm_bridge *bridge,
 				    enum drm_bridge_attach_flags flags)
 {
@@ -1640,7 +1633,7 @@ static void exynos_dsi_bridge_detach(struct drm_bridge *bridge)
 
 	if (dsi->panel) {
 		mutex_lock(&drm->mode_config.mutex);
-		exynos_dsi_disable(&dsi->encoder);
+		exynos_dsi_disable(dsi);
 		dsi->panel = NULL;
 		dsi->connector.status = connector_status_disconnected;
 		mutex_unlock(&drm->mode_config.mutex);
@@ -1652,9 +1645,25 @@ static void exynos_dsi_bridge_detach(struct drm_bridge *bridge)
 	}
 }
 
+static void exynos_dsi_bridge_enable(struct drm_bridge *bridge)
+{
+	struct exynos_dsi *dsi = bridge->driver_private;
+
+	exynos_dsi_enable(dsi);
+}
+
+static void exynos_dsi_bridge_disable(struct drm_bridge *bridge)
+{
+	struct exynos_dsi *dsi = bridge->driver_private;
+
+	exynos_dsi_disable(dsi);
+}
+
 static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = {
 	.attach = exynos_dsi_bridge_attach,
 	.detach = exynos_dsi_bridge_detach,
+	.enable = exynos_dsi_bridge_enable,
+	.disable = exynos_dsi_bridge_disable,
 };
 
 MODULE_DEVICE_TABLE(of, exynos_dsi_of_match);
@@ -1800,8 +1809,6 @@ static int exynos_dsi_bind(struct device *dev, struct device *master,
 
 	drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
 
-	drm_encoder_helper_add(encoder, &exynos_dsi_encoder_helper_funcs);
-
 	ret = exynos_drm_set_possible_crtcs(encoder, EXYNOS_DISPLAY_TYPE_LCD);
 	if (ret < 0)
 		return ret;
@@ -1831,7 +1838,7 @@ static void exynos_dsi_unbind(struct device *dev, struct device *master,
 	struct exynos_dsi *dsi = dev_get_drvdata(dev);
 	struct drm_encoder *encoder = &dsi->encoder;
 
-	exynos_dsi_disable(encoder);
+	exynos_dsi_disable(dsi);
 
 	drm_encoder_cleanup(encoder);
 }
-- 
2.20.1


WARNING: multiple messages have this Message-ID (diff)
From: Michael Tretter <m.tretter@pengutronix.de>
To: dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org
Cc: jy0922.shim@samsung.com, b.zolnierkie@samsung.com,
	narmstrong@baylibre.com, sw0312.kim@samsung.com,
	Michael Tretter <m.tretter@pengutronix.de>,
	krzk@kernel.org, a.hajda@samsung.com,
	Laurent.pinchart@ideasonboard.com, kernel@pengutronix.de,
	sylvester.nawrocki@gmail.com
Subject: [PATCH v2 11/16] drm/exynos: convert encoder functions to bridge function
Date: Fri, 11 Sep 2020 15:54:08 +0200	[thread overview]
Message-ID: <20200911135413.3654800-12-m.tretter@pengutronix.de> (raw)
In-Reply-To: <20200911135413.3654800-1-m.tretter@pengutronix.de>

If other drivers use the exynos_dsi driver as a bridge, they might bring
their own encoder. Enable and disable the MIPI-DSI bridge using the
bridge functions instead of the encoder functions.

Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
---
v2: none
---
 drivers/gpu/drm/exynos/exynos_drm_dsi.c | 33 +++++++++++++++----------
 1 file changed, 20 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
index 5e7c1a99a3ee..a4f17d50d1d8 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
@@ -1455,9 +1455,8 @@ static void exynos_dsi_unregister_te_irq(struct exynos_dsi *dsi)
 	}
 }
 
-static void exynos_dsi_enable(struct drm_encoder *encoder)
+static void exynos_dsi_enable(struct exynos_dsi *dsi)
 {
-	struct exynos_dsi *dsi = encoder_to_dsi(encoder);
 	struct drm_bridge *iter;
 	int ret;
 
@@ -1505,9 +1504,8 @@ static void exynos_dsi_enable(struct drm_encoder *encoder)
 	pm_runtime_put(dsi->dev);
 }
 
-static void exynos_dsi_disable(struct drm_encoder *encoder)
+static void exynos_dsi_disable(struct exynos_dsi *dsi)
 {
-	struct exynos_dsi *dsi = encoder_to_dsi(encoder);
 	struct drm_bridge *iter;
 
 	if (!(dsi->state & DSIM_STATE_ENABLED))
@@ -1598,11 +1596,6 @@ static int exynos_dsi_create_connector(struct drm_encoder *encoder)
 	return 0;
 }
 
-static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = {
-	.enable = exynos_dsi_enable,
-	.disable = exynos_dsi_disable,
-};
-
 static int exynos_dsi_bridge_attach(struct drm_bridge *bridge,
 				    enum drm_bridge_attach_flags flags)
 {
@@ -1640,7 +1633,7 @@ static void exynos_dsi_bridge_detach(struct drm_bridge *bridge)
 
 	if (dsi->panel) {
 		mutex_lock(&drm->mode_config.mutex);
-		exynos_dsi_disable(&dsi->encoder);
+		exynos_dsi_disable(dsi);
 		dsi->panel = NULL;
 		dsi->connector.status = connector_status_disconnected;
 		mutex_unlock(&drm->mode_config.mutex);
@@ -1652,9 +1645,25 @@ static void exynos_dsi_bridge_detach(struct drm_bridge *bridge)
 	}
 }
 
+static void exynos_dsi_bridge_enable(struct drm_bridge *bridge)
+{
+	struct exynos_dsi *dsi = bridge->driver_private;
+
+	exynos_dsi_enable(dsi);
+}
+
+static void exynos_dsi_bridge_disable(struct drm_bridge *bridge)
+{
+	struct exynos_dsi *dsi = bridge->driver_private;
+
+	exynos_dsi_disable(dsi);
+}
+
 static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = {
 	.attach = exynos_dsi_bridge_attach,
 	.detach = exynos_dsi_bridge_detach,
+	.enable = exynos_dsi_bridge_enable,
+	.disable = exynos_dsi_bridge_disable,
 };
 
 MODULE_DEVICE_TABLE(of, exynos_dsi_of_match);
@@ -1800,8 +1809,6 @@ static int exynos_dsi_bind(struct device *dev, struct device *master,
 
 	drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
 
-	drm_encoder_helper_add(encoder, &exynos_dsi_encoder_helper_funcs);
-
 	ret = exynos_drm_set_possible_crtcs(encoder, EXYNOS_DISPLAY_TYPE_LCD);
 	if (ret < 0)
 		return ret;
@@ -1831,7 +1838,7 @@ static void exynos_dsi_unbind(struct device *dev, struct device *master,
 	struct exynos_dsi *dsi = dev_get_drvdata(dev);
 	struct drm_encoder *encoder = &dsi->encoder;
 
-	exynos_dsi_disable(encoder);
+	exynos_dsi_disable(dsi);
 
 	drm_encoder_cleanup(encoder);
 }
-- 
2.20.1

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

  parent reply	other threads:[~2020-09-11 16:11 UTC|newest]

Thread overview: 118+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20200911165401epcas1p3c7ee84dd01db93f472d6fa21c1100f29@epcas1p3.samsung.com>
2020-09-11 13:53 ` [PATCH v2 00/16] drm/exynos: Convert driver to drm bridge Michael Tretter
2020-09-11 13:53   ` Michael Tretter
2020-09-11 13:53   ` [PATCH v2 01/16] drm/encoder: remove obsolete documentation of bridge Michael Tretter
2020-09-11 13:53     ` Michael Tretter
2020-11-07 15:07     ` Adam Ford
2020-11-07 15:07       ` Adam Ford
2020-11-10  8:46       ` Michael Tretter
2020-11-10  8:46         ` Michael Tretter
2020-11-07 22:17     ` Sam Ravnborg
2020-11-07 22:17       ` Sam Ravnborg
2020-09-11 13:53   ` [PATCH v2 02/16] drm/exynos: remove in_bridge_node from exynos_dsi Michael Tretter
2020-09-11 13:53     ` Michael Tretter
2020-11-07 22:19     ` Sam Ravnborg
2020-11-07 22:19       ` Sam Ravnborg
2020-11-09  2:24       ` Inki Dae
2020-09-11 13:54   ` [PATCH v2 03/16] drm/exynos: use exynos_dsi as drvdata Michael Tretter
2020-09-11 13:54     ` Michael Tretter
2020-11-07 22:24     ` Sam Ravnborg
2020-11-07 22:24       ` Sam Ravnborg
2020-11-09  2:24       ` Inki Dae
2020-11-09  2:24         ` Inki Dae
2020-09-11 13:54   ` [PATCH v2 04/16] drm/exynos: extract helper functions for probe Michael Tretter
2020-09-11 13:54     ` Michael Tretter
2020-11-07 22:27     ` Sam Ravnborg
2020-11-07 22:27       ` Sam Ravnborg
2020-11-09  2:52       ` Inki Dae
2020-11-09  2:52         ` Inki Dae
2020-09-11 13:54   ` [PATCH v2 05/16] drm/exynos: move dsi host registration to probe Michael Tretter
2020-09-11 13:54     ` Michael Tretter
2020-09-11 13:54   ` [PATCH v2 06/16] drm/exynos: shift register values to fields on write Michael Tretter
2020-09-11 13:54     ` Michael Tretter
2020-11-07 22:39     ` Sam Ravnborg
2020-11-07 22:39       ` Sam Ravnborg
2020-11-10  8:28       ` Michael Tretter
2020-11-10  8:28         ` Michael Tretter
2020-09-11 13:54   ` [PATCH v2 07/16] drm/exynos: use identifier instead of register offsets Michael Tretter
2020-09-11 13:54     ` Michael Tretter
2020-09-11 13:54   ` [PATCH v2 08/16] drm/exynos: add host_ops callback for platform drivers Michael Tretter
2020-09-11 13:54     ` Michael Tretter
2020-09-15 17:07     ` Andrzej Hajda
2020-09-15 17:07       ` Andrzej Hajda
2020-09-15 18:02       ` Michael Tretter
2020-09-15 18:02         ` Michael Tretter
2020-09-16 22:01         ` Andrzej Hajda
2020-09-16 22:01           ` Andrzej Hajda
2020-09-11 13:54   ` [PATCH v2 09/16] drm/exynos: add callback for tearing effect handler Michael Tretter
2020-09-11 13:54     ` Michael Tretter
2020-09-11 13:54   ` [PATCH v2 10/16] drm/exynos: implement a drm bridge Michael Tretter
2020-09-11 13:54     ` Michael Tretter
2020-09-14  8:29     ` Marek Szyprowski
2020-09-14  8:29       ` Marek Szyprowski
2020-09-14 12:31       ` Marek Szyprowski
2020-09-14 12:31         ` Marek Szyprowski
2020-09-14 20:01         ` Michael Tretter
2020-09-14 20:01           ` Michael Tretter
2020-09-14 21:19           ` Andrzej Hajda
2020-09-14 21:19             ` Andrzej Hajda
2020-09-15 19:40             ` Andrzej Hajda
2020-09-15 19:40               ` Andrzej Hajda
2021-02-01 16:33               ` Michael Tretter
2021-02-01 16:33                 ` Michael Tretter
2021-02-03 20:31                 ` Michael Tretter
2021-02-03 20:31                   ` Michael Tretter
2021-02-04 10:17                   ` Daniel Vetter
2021-02-04 10:17                     ` Daniel Vetter
2021-02-04 10:56                     ` Michael Tretter
2021-02-04 10:56                       ` Michael Tretter
2021-02-04 16:05                       ` Daniel Vetter
2021-02-04 16:05                         ` Daniel Vetter
2021-02-04 16:28                         ` Andrzej Hajda
2021-02-04 16:28                           ` Andrzej Hajda
2021-02-04 17:19                           ` Daniel Vetter
2021-02-04 17:19                             ` Daniel Vetter
2021-02-04 17:26                             ` Laurent Pinchart
2021-02-04 17:26                               ` Laurent Pinchart
2021-02-04 17:46                               ` Daniel Vetter
2021-02-04 17:46                                 ` Daniel Vetter
2021-02-10  9:10                                 ` Frieder Schrempf
2021-02-10  9:10                                   ` Frieder Schrempf
2021-02-18  8:04                                   ` Michael Tretter
2021-02-18  8:04                                     ` Michael Tretter
2021-02-18 16:02                                     ` Andrzej Hajda
2021-02-18 16:02                                       ` Andrzej Hajda
2021-02-23 12:07                                       ` Daniel Vetter
2021-02-23 12:07                                         ` Daniel Vetter
2021-04-20 11:42                                         ` Frieder Schrempf
2021-04-20 11:42                                           ` Frieder Schrempf
2021-04-20 14:27                                           ` Laurent Pinchart
2021-04-20 14:27                                             ` Laurent Pinchart
2020-09-11 13:54   ` Michael Tretter [this message]
2020-09-11 13:54     ` [PATCH v2 11/16] drm/exynos: convert encoder functions to bridge function Michael Tretter
2020-09-11 13:54   ` [PATCH v2 12/16] drm/exynos: configure mode on drm bridge Michael Tretter
2020-09-11 13:54     ` Michael Tretter
2020-09-11 13:54   ` [PATCH v2 13/16] drm/exynos: get encoder from bridge whenever possible Michael Tretter
2020-09-11 13:54     ` Michael Tretter
2020-09-11 13:54   ` [PATCH v2 14/16] drm/exynos: add API functions for platform drivers Michael Tretter
2020-09-11 13:54     ` Michael Tretter
2020-09-11 13:54   ` [PATCH v2 15/16] drm/exynos: split out platform specific code Michael Tretter
2020-09-11 13:54     ` Michael Tretter
2020-09-11 13:54   ` [PATCH v2 16/16] drm/exynos: move bridge driver to bridges Michael Tretter
2020-09-16  7:58     ` Daniel Vetter
2020-09-16  8:58       ` Michael Tretter
2020-09-16  9:03         ` Daniel Vetter
2020-11-09  3:15   ` [PATCH v2 00/16] drm/exynos: Convert driver to drm bridge Inki Dae
2020-11-09  3:15     ` Inki Dae
2020-11-10  8:13     ` Michael Tretter
2020-11-10  8:13       ` Michael Tretter
2020-11-10 12:34       ` Marek Szyprowski
2020-11-10 12:34         ` Marek Szyprowski
2020-11-10 18:52         ` Sam Ravnborg
2020-11-11  3:04       ` Inki Dae
2020-11-11  3:04         ` Inki Dae
2020-11-11  3:11         ` Inki Dae
2020-11-11  3:11           ` Inki Dae
2020-11-11 10:18           ` Michael Tretter
2020-11-11 10:18             ` Michael Tretter
2020-11-13  9:34             ` Inki Dae
2020-11-13  9:34               ` Inki Dae

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=20200911135413.3654800-12-m.tretter@pengutronix.de \
    --to=m.tretter@pengutronix.de \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=a.hajda@samsung.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=inki.dae@samsung.com \
    --cc=jy0922.shim@samsung.com \
    --cc=kernel@pengutronix.de \
    --cc=krzk@kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=narmstrong@baylibre.com \
    --cc=sw0312.kim@samsung.com \
    --cc=sylvester.nawrocki@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.