dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/28] drm/bridge: Consolidate initialization
@ 2019-12-04 11:48 Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 01/28] drm: Introduce drm_bridge_init() Mihail Atanassov
                   ` (29 more replies)
  0 siblings, 30 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Martyn Welch, Neil Armstrong, David Airlie, Peter Senna Tschudin,
	Russell King, Laurent Pinchart, Boris Brezillon, Mihail Atanassov,
	Sam Ravnborg, Jerome Brunet, linux-renesas-soc@vger.kernel.org,
	linux-samsung-soc@vger.kernel.org, Vincent Abriou,
	Martin Donnelly, Krzysztof Kozlowski, Vasily Khoruzhick,
	Kukjin Kim, Icenowy Zheng, Jonas Karlman,
	linux-arm-msm@vger.kernel.org, Brian Masney,
	linux-mediatek@lists.infradead.org, Matthias Brugger, nd,
	Sean Paul, linux-arm-kernel@lists.infradead.org, Jernej Skrabec,
	Wolfram Sang, Seung-Woo Kim, Douglas Anderson,
	linux-kernel@vger.kernel.org, Yannick Fertré, Kyungmin Park,
	Kieran Bingham, Torsten Duwe, Dariusz Marcinkiewicz,
	freedreno@lists.freedesktop.org

Hi all,

I've dropped the fun parts of this series since they need more work, but
figured drm_bridge_init() as a concept is still valuable on its own (and
I think I'll need it to roll out device links for registered bridges),
so here goes.

v2:
 - expanded commit messages and added some extra bridge-related
   documentation (Daniel)
 - dropped v1 patches 29 and 30: 29 needs more work, and 30 depends on
   it
 - added all remaining drm_bridge implementers, found by searching for
   drm_bridge_funcs which is mandatory for any bridge; new uses in
   patches 3, 27, and 28 (Sam)
 - due to the above, I've decided to squash all analogix changes into
   one patch

---
v1 [https://patchwork.freedesktop.org/series/70039/] cover text below:

This series adds device links support to drm_bridge. The motivation
behind it is that a drm_bridge in a module could get removed under the
feet of the bridge user without warning, so we need a way to remove and
reprobe the client as needed to avoid peering into the void.

1: Add a drm_bridge_init() function which wraps all initialisation of
the structure prior to calling drm_bridge_add().

2-26,28: Apply the drm_bridge_init() refactor to every bridge that uses
drm_bridge_add().

27: Minor cleanup in rcar-du.

29: Add of_drm_find_bridge_devlink() which functions the same as
of_drm_find_bridge() plus adds a device device link from the owning
drm_device to the bridge device.

30: As a motivating example, convert komeda to exclusively use
drm_bridge for its pipe outputs; this isn't a regression in usability
any more since device links bring the same automatic remove/reprobe
feature as components.

Mihail Atanassov (28):
  drm: Introduce drm_bridge_init()
  drm/bridge: adv7511: Use drm_bridge_init()
  drm/bridge/analogix: Use drm_bridge_init()
  drm/bridge: cdns: Use drm_bridge_init()
  drm/bridge: dumb-vga-dac: Use drm_bridge_init()
  drm/bridge: lvds-encoder: Use drm_bridge_init()
  drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: Use drm_bridge_init()
  drm/bridge: nxp-ptn3460: Use drm_bridge_init()
  drm/bridge: panel: Use drm_bridge_init()
  drm/bridge: ps8622: Use drm_bridge_init()
  drm/bridge: sii902x: Use drm_bridge_init()
  gpu: drm: bridge: sii9234: Use drm_bridge_init()
  drm/bridge: sil_sii8620: Use drm_bridge_init()
  drm/bridge: dw-hdmi: Use drm_bridge_init()
  drm/bridge/synopsys: dsi: Use drm_bridge_init()
  drm/bridge: tc358764: Use drm_bridge_init()
  drm/bridge: tc358767: Use drm_bridge_init()
  drm/bridge: thc63: Use drm_bridge_init()
  drm/bridge: ti-sn65dsi86: Use drm_bridge_init()
  drm/bridge: ti-tfp410: Use drm_bridge_init()
  drm/exynos: mic: Use drm_bridge_init()
  drm/i2c: tda998x: Use drm_bridge_init()
  drm/mcde: dsi: Use drm_bridge_init()
  drm/mediatek: hdmi: Use drm_bridge_init()
  drm: rcar-du: lvds: Use drm_bridge_init()
  drm: rcar-du: lvds: Don't set drm_bridge private pointer
  drm/sti: Use drm_bridge_init()
  drm/msm: Use drm_bridge_init()

 drivers/gpu/drm/bridge/adv7511/adv7511_drv.c  |  5 ++-
 .../drm/bridge/analogix/analogix-anx6345.c    |  5 ++-
 .../drm/bridge/analogix/analogix-anx78xx.c    |  8 ++---
 .../drm/bridge/analogix/analogix_dp_core.c    |  5 ++-
 drivers/gpu/drm/bridge/cdns-dsi.c             |  4 +--
 drivers/gpu/drm/bridge/dumb-vga-dac.c         |  6 ++--
 drivers/gpu/drm/bridge/lvds-encoder.c         |  7 ++--
 .../bridge/megachips-stdpxxxx-ge-b850v3-fw.c  |  4 +--
 drivers/gpu/drm/bridge/nxp-ptn3460.c          |  4 +--
 drivers/gpu/drm/bridge/panel.c                |  7 ++--
 drivers/gpu/drm/bridge/parade-ps8622.c        |  3 +-
 drivers/gpu/drm/bridge/sii902x.c              |  5 ++-
 drivers/gpu/drm/bridge/sii9234.c              |  3 +-
 drivers/gpu/drm/bridge/sil-sii8620.c          |  3 +-
 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c     |  7 ++--
 drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c |  7 ++--
 drivers/gpu/drm/bridge/tc358764.c             |  4 +--
 drivers/gpu/drm/bridge/tc358767.c             |  3 +-
 drivers/gpu/drm/bridge/thc63lvd1024.c         |  7 ++--
 drivers/gpu/drm/bridge/ti-sn65dsi86.c         |  5 ++-
 drivers/gpu/drm/bridge/ti-tfp410.c            |  5 ++-
 drivers/gpu/drm/drm_bridge.c                  | 34 ++++++++++++++++++-
 drivers/gpu/drm/exynos/exynos_drm_mic.c       |  8 +----
 drivers/gpu/drm/i2c/tda998x_drv.c             |  6 +---
 drivers/gpu/drm/mcde/mcde_dsi.c               |  3 +-
 drivers/gpu/drm/mediatek/mtk_hdmi.c           |  4 +--
 drivers/gpu/drm/msm/dsi/dsi_manager.c         |  4 +--
 drivers/gpu/drm/msm/edp/edp_bridge.c          |  3 +-
 drivers/gpu/drm/msm/hdmi/hdmi_bridge.c        |  4 +--
 drivers/gpu/drm/rcar-du/rcar_lvds.c           |  5 ++-
 drivers/gpu/drm/sti/sti_dvo.c                 |  4 +--
 drivers/gpu/drm/sti/sti_hda.c                 |  3 +-
 drivers/gpu/drm/sti/sti_hdmi.c                |  3 +-
 include/drm/drm_bridge.h                      | 15 +++++++-
 34 files changed, 100 insertions(+), 103 deletions(-)

-- 
2.23.0

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

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [PATCH v2 01/28] drm: Introduce drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 13:10   ` Daniel Vetter
  2019-12-05 12:40   ` Laurent Pinchart
  2019-12-04 11:48 ` [PATCH v2 02/28] drm/bridge: adv7511: Use drm_bridge_init() Mihail Atanassov
                   ` (28 subsequent siblings)
  29 siblings, 2 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Mihail Atanassov, David Airlie, linux-kernel@vger.kernel.org, nd

A simple convenience function to initialize the struct drm_bridge. The
goal is to standardize initialization for any bridge registered with
drm_bridge_add() so that we can later add device links for consumers of
those bridges.

v2:
 - s/WARN_ON(!funcs)/WARN_ON(!funcs || !dev)/ as suggested by Daniel
 - expand on some kerneldoc comments as suggested by Daniel
 - update commit message as suggested by Daniel

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/drm_bridge.c | 34 +++++++++++++++++++++++++++++++++-
 include/drm/drm_bridge.h     | 15 ++++++++++++++-
 2 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
index cba537c99e43..50e1c1b46e20 100644
--- a/drivers/gpu/drm/drm_bridge.c
+++ b/drivers/gpu/drm/drm_bridge.c
@@ -64,7 +64,10 @@ static DEFINE_MUTEX(bridge_lock);
 static LIST_HEAD(bridge_list);
 
 /**
- * drm_bridge_add - add the given bridge to the global bridge list
+ * drm_bridge_add - add the given bridge to the global bridge list.
+ *
+ * Drivers should call drm_bridge_init() prior adding it to the list.
+ * Drivers should call drm_bridge_remove() to clean up the bridge list.
  *
  * @bridge: bridge control structure
  */
@@ -89,6 +92,35 @@ void drm_bridge_remove(struct drm_bridge *bridge)
 }
 EXPORT_SYMBOL(drm_bridge_remove);
 
+/**
+ * drm_bridge_init - initialise a drm_bridge structure
+ *
+ * @bridge: bridge control structure
+ * @funcs: control functions
+ * @dev: device associated with this drm_bridge
+ * @timings: timing specification for the bridge; optional (may be NULL)
+ * @driver_private: pointer to the bridge driver internal context (may be NULL)
+ */
+void drm_bridge_init(struct drm_bridge *bridge, struct device *dev,
+		     const struct drm_bridge_funcs *funcs,
+		     const struct drm_bridge_timings *timings,
+		     void *driver_private)
+{
+	WARN_ON(!funcs || !dev);
+
+	bridge->dev = NULL;
+	bridge->encoder = NULL;
+	bridge->next = NULL;
+
+#ifdef CONFIG_OF
+	bridge->of_node = dev->of_node;
+#endif
+	bridge->timings = timings;
+	bridge->funcs = funcs;
+	bridge->driver_private = driver_private;
+}
+EXPORT_SYMBOL(drm_bridge_init);
+
 /**
  * drm_bridge_attach - attach the bridge to an encoder's chain
  *
diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index c0a2286a81e9..949e4f401a53 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -373,7 +373,16 @@ struct drm_bridge_timings {
 };
 
 /**
- * struct drm_bridge - central DRM bridge control structure
+ * struct drm_bridge - central DRM bridge control structure.
+ *
+ * Bridge drivers should call drm_bridge_init() to initialize a bridge
+ * driver, and then register it with drm_bridge_add().
+ *
+ * Users of bridges link a bridge driver into their overall display output
+ * pipeline by calling drm_bridge_attach().
+ *
+ * Modular drivers in OF systems can query the list of registered bridges
+ * with of_drm_find_bridge().
  */
 struct drm_bridge {
 	/** @dev: DRM device this bridge belongs to */
@@ -402,6 +411,10 @@ struct drm_bridge {
 
 void drm_bridge_add(struct drm_bridge *bridge);
 void drm_bridge_remove(struct drm_bridge *bridge);
+void drm_bridge_init(struct drm_bridge *bridge, struct device *dev,
+		     const struct drm_bridge_funcs *funcs,
+		     const struct drm_bridge_timings *timings,
+		     void *driver_private);
 struct drm_bridge *of_drm_find_bridge(struct device_node *np);
 int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
 		      struct drm_bridge *previous);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 02/28] drm/bridge: adv7511: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 01/28] drm: Introduce drm_bridge_init() Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 03/28] drm/bridge/analogix: " Mihail Atanassov
                   ` (27 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Rob Clark, Jernej Skrabec, Mihail Atanassov, Jonas Karlman,
	David Airlie, Neil Armstrong, Wolfram Sang,
	linux-kernel@vger.kernel.org, Laurent Pinchart, nd, Sam Ravnborg,
	Matt Redfearn

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
index 9e13e466e72c..73600d8766f8 100644
--- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
+++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
@@ -1216,9 +1216,8 @@ static int adv7511_probe(struct i2c_client *i2c, const struct i2c_device_id *id)
 	if (ret)
 		goto err_unregister_cec;
 
-	adv7511->bridge.funcs = &adv7511_bridge_funcs;
-	adv7511->bridge.of_node = dev->of_node;
-
+	drm_bridge_init(&adv7511->bridge, dev, &adv7511_bridge_funcs,
+			NULL, NULL);
 	drm_bridge_add(&adv7511->bridge);
 
 	adv7511_audio_init(dev, adv7511);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 03/28] drm/bridge/analogix: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 01/28] drm: Introduce drm_bridge_init() Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 02/28] drm/bridge: adv7511: Use drm_bridge_init() Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-05 13:29   ` Laurent Pinchart
  2019-12-04 11:48 ` [PATCH v2 04/28] drm/bridge: cdns: " Mihail Atanassov
                   ` (26 subsequent siblings)
  29 siblings, 1 reply; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, Icenowy Zheng, Brian Masney,
	linux-kernel@vger.kernel.org, Vasily Khoruzhick, Boris Brezillon,
	Torsten Duwe, Laurent Pinchart, Sean Paul, nd, Sam Ravnborg,
	Maxime Ripard

No functional change.

The setting of bridge->of_node by drm_bridge_init() in
analogix_dp_core.c is safe, since ->of_node isn't used directly and the
bridge isn't published with drm_bridge_add().

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/analogix/analogix-anx6345.c | 5 ++---
 drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c | 8 ++------
 drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 5 ++---
 3 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
index b4f3a923a52a..130d5c3a07ef 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
@@ -696,8 +696,6 @@ static int anx6345_i2c_probe(struct i2c_client *client,
 
 	mutex_init(&anx6345->lock);
 
-	anx6345->bridge.of_node = client->dev.of_node;
-
 	anx6345->client = client;
 	i2c_set_clientdata(client, anx6345);
 
@@ -760,7 +758,8 @@ static int anx6345_i2c_probe(struct i2c_client *client,
 	/* Look for supported chip ID */
 	anx6345_poweron(anx6345);
 	if (anx6345_get_chip_id(anx6345)) {
-		anx6345->bridge.funcs = &anx6345_bridge_funcs;
+		drm_bridge_init(&anx6345->bridge, &client->dev,
+				&anx6345_bridge_funcs, NULL, NULL);
 		drm_bridge_add(&anx6345->bridge);
 
 		return 0;
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
index 41867be03751..e37892cdc9cf 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
@@ -1214,10 +1214,6 @@ static int anx78xx_i2c_probe(struct i2c_client *client,
 
 	mutex_init(&anx78xx->lock);
 
-#if IS_ENABLED(CONFIG_OF)
-	anx78xx->bridge.of_node = client->dev.of_node;
-#endif
-
 	anx78xx->client = client;
 	i2c_set_clientdata(client, anx78xx);
 
@@ -1321,8 +1317,8 @@ static int anx78xx_i2c_probe(struct i2c_client *client,
 		goto err_poweroff;
 	}
 
-	anx78xx->bridge.funcs = &anx78xx_bridge_funcs;
-
+	drm_bridge_init(&anx78xx->bridge, &client->dev, &anx78xx_bridge_funcs,
+			NULL, NULL);
 	drm_bridge_add(&anx78xx->bridge);
 
 	/* If cable is pulled out, just poweroff and wait for HPD event */
diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
index bb411fe52ae8..4042ba9a98d8 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
@@ -1585,9 +1585,8 @@ static int analogix_dp_create_bridge(struct drm_device *drm_dev,
 
 	dp->bridge = bridge;
 
-	bridge->driver_private = dp;
-	bridge->funcs = &analogix_dp_bridge_funcs;
-
+	drm_bridge_init(bridge, drm_dev->dev, &analogix_dp_bridge_funcs,
+			NULL, dp);
 	ret = drm_bridge_attach(dp->encoder, bridge, NULL);
 	if (ret) {
 		DRM_ERROR("failed to attach drm bridge\n");
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 04/28] drm/bridge: cdns: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (2 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 03/28] drm/bridge/analogix: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 05/28] drm/bridge: dumb-vga-dac: " Mihail Atanassov
                   ` (25 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/cdns-dsi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/bridge/cdns-dsi.c b/drivers/gpu/drm/bridge/cdns-dsi.c
index 3a5bd4e7fd1e..58b2aa8b6c24 100644
--- a/drivers/gpu/drm/bridge/cdns-dsi.c
+++ b/drivers/gpu/drm/bridge/cdns-dsi.c
@@ -1233,8 +1233,8 @@ static int cdns_dsi_drm_probe(struct platform_device *pdev)
 	 * CDNS_DPI_INPUT.
 	 */
 	input->id = CDNS_DPI_INPUT;
-	input->bridge.funcs = &cdns_dsi_bridge_funcs;
-	input->bridge.of_node = pdev->dev.of_node;
+	drm_bridge_init(&input->bridge, &pdev->dev, &cdns_dsi_bridge_funcs,
+			NULL, NULL);
 
 	/* Mask all interrupts before registering the IRQ handler. */
 	writel(0, dsi->regs + MCTL_MAIN_STS_CTL);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 05/28] drm/bridge: dumb-vga-dac: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (3 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 04/28] drm/bridge: cdns: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 06/28] drm/bridge: lvds-encoder: " Mihail Atanassov
                   ` (24 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/dumb-vga-dac.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/bridge/dumb-vga-dac.c b/drivers/gpu/drm/bridge/dumb-vga-dac.c
index cc33dc411b9e..896f27272e38 100644
--- a/drivers/gpu/drm/bridge/dumb-vga-dac.c
+++ b/drivers/gpu/drm/bridge/dumb-vga-dac.c
@@ -205,10 +205,8 @@ static int dumb_vga_probe(struct platform_device *pdev)
 		}
 	}
 
-	vga->bridge.funcs = &dumb_vga_bridge_funcs;
-	vga->bridge.of_node = pdev->dev.of_node;
-	vga->bridge.timings = of_device_get_match_data(&pdev->dev);
-
+	drm_bridge_init(&vga->bridge, &pdev->dev, &dumb_vga_bridge_funcs,
+			of_device_get_match_data(&pdev->dev), NULL);
 	drm_bridge_add(&vga->bridge);
 
 	return 0;
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 06/28] drm/bridge: lvds-encoder: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (4 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 05/28] drm/bridge: dumb-vga-dac: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 07/28] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: " Mihail Atanassov
                   ` (23 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/lvds-encoder.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/bridge/lvds-encoder.c b/drivers/gpu/drm/bridge/lvds-encoder.c
index e2132a8d5106..155406510416 100644
--- a/drivers/gpu/drm/bridge/lvds-encoder.c
+++ b/drivers/gpu/drm/bridge/lvds-encoder.c
@@ -112,11 +112,10 @@ static int lvds_encoder_probe(struct platform_device *pdev)
 		return PTR_ERR(lvds_encoder->panel_bridge);
 
 	/* The panel_bridge bridge is attached to the panel's of_node,
-	 * but we need a bridge attached to our of_node for our user
-	 * to look up.
+	 * but we need a bridge attached to our of_node (in dev->of_node)
+	 * for our user to look up.
 	 */
-	lvds_encoder->bridge.of_node = dev->of_node;
-	lvds_encoder->bridge.funcs = &funcs;
+	drm_bridge_init(&lvds_encoder->bridge, dev, &funcs, NULL, NULL);
 	drm_bridge_add(&lvds_encoder->bridge);
 
 	platform_set_drvdata(pdev, lvds_encoder);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 07/28] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (5 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 06/28] drm/bridge: lvds-encoder: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 08/28] drm/bridge: nxp-ptn3460: " Mihail Atanassov
                   ` (22 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Martyn Welch, Neil Armstrong,
	David Airlie, Peter Senna Tschudin, linux-kernel@vger.kernel.org,
	Jonas Karlman, Laurent Pinchart, nd, Martin Donnelly

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
index e8a49f6146c6..d567cd63810f 100644
--- a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
+++ b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
@@ -303,8 +303,8 @@ static int stdp4028_ge_b850v3_fw_probe(struct i2c_client *stdp4028_i2c,
 	i2c_set_clientdata(stdp4028_i2c, ge_b850v3_lvds_ptr);
 
 	/* drm bridge initialization */
-	ge_b850v3_lvds_ptr->bridge.funcs = &ge_b850v3_lvds_funcs;
-	ge_b850v3_lvds_ptr->bridge.of_node = dev->of_node;
+	drm_bridge_init(&ge_b850v3_lvds_ptr->bridge, dev, &ge_b850v3_lvds_funcs,
+			NULL, NULL);
 	drm_bridge_add(&ge_b850v3_lvds_ptr->bridge);
 
 	/* Clear pending interrupts since power up. */
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 08/28] drm/bridge: nxp-ptn3460: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (6 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 07/28] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 10/28] drm/bridge: ps8622: " Mihail Atanassov
                   ` (21 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/nxp-ptn3460.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c
index 57ff01339559..2656a188b434 100644
--- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
+++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
@@ -320,8 +320,8 @@ static int ptn3460_probe(struct i2c_client *client,
 		return ret;
 	}
 
-	ptn_bridge->bridge.funcs = &ptn3460_bridge_funcs;
-	ptn_bridge->bridge.of_node = dev->of_node;
+	drm_bridge_init(&ptn_bridge->bridge, dev, &ptn3460_bridge_funcs,
+			NULL, NULL);
 	drm_bridge_add(&ptn_bridge->bridge);
 
 	i2c_set_clientdata(client, ptn_bridge);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 09/28] drm/bridge: panel: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (8 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 10/28] drm/bridge: ps8622: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 11/28] drm/bridge: sii902x: " Mihail Atanassov
                   ` (19 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/panel.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c
index f4e293e7cf64..91d68d0337cc 100644
--- a/drivers/gpu/drm/bridge/panel.c
+++ b/drivers/gpu/drm/bridge/panel.c
@@ -192,11 +192,8 @@ struct drm_bridge *drm_panel_bridge_add_typed(struct drm_panel *panel,
 	panel_bridge->connector_type = connector_type;
 	panel_bridge->panel = panel;
 
-	panel_bridge->bridge.funcs = &panel_bridge_bridge_funcs;
-#ifdef CONFIG_OF
-	panel_bridge->bridge.of_node = panel->dev->of_node;
-#endif
-
+	drm_bridge_init(&panel_bridge->bridge, panel->dev,
+			&panel_bridge_bridge_funcs, NULL, NULL);
 	drm_bridge_add(&panel_bridge->bridge);
 
 	return &panel_bridge->bridge;
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 10/28] drm/bridge: ps8622: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (7 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 08/28] drm/bridge: nxp-ptn3460: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 09/28] drm/bridge: panel: " Mihail Atanassov
                   ` (20 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/parade-ps8622.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c b/drivers/gpu/drm/bridge/parade-ps8622.c
index b7a72dfdcac3..8454dbb238bb 100644
--- a/drivers/gpu/drm/bridge/parade-ps8622.c
+++ b/drivers/gpu/drm/bridge/parade-ps8622.c
@@ -588,8 +588,7 @@ static int ps8622_probe(struct i2c_client *client,
 		ps8622->bl->props.brightness = PS8622_MAX_BRIGHTNESS;
 	}
 
-	ps8622->bridge.funcs = &ps8622_bridge_funcs;
-	ps8622->bridge.of_node = dev->of_node;
+	drm_bridge_init(&ps8622->bridge, dev, &ps8622_bridge_funcs, NULL, NULL);
 	drm_bridge_add(&ps8622->bridge);
 
 	i2c_set_clientdata(client, ps8622);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 11/28] drm/bridge: sii902x: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (9 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 09/28] drm/bridge: panel: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 12/28] gpu: drm: bridge: sii9234: " Mihail Atanassov
                   ` (18 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/sii902x.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c
index b70e8c5cf2e1..2a9db621484d 100644
--- a/drivers/gpu/drm/bridge/sii902x.c
+++ b/drivers/gpu/drm/bridge/sii902x.c
@@ -1017,9 +1017,8 @@ static int sii902x_probe(struct i2c_client *client,
 			return ret;
 	}
 
-	sii902x->bridge.funcs = &sii902x_bridge_funcs;
-	sii902x->bridge.of_node = dev->of_node;
-	sii902x->bridge.timings = &default_sii902x_timings;
+	drm_bridge_init(&sii902x->bridge, dev, &sii902x_bridge_funcs,
+			&default_sii902x_timings, NULL);
 	drm_bridge_add(&sii902x->bridge);
 
 	sii902x_audio_codec_init(sii902x, dev);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 12/28] gpu: drm: bridge: sii9234: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (10 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 11/28] drm/bridge: sii902x: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-05 12:10   ` Neil Armstrong
  2019-12-04 11:48 ` [PATCH v2 13/28] drm/bridge: sil_sii8620: " Mihail Atanassov
                   ` (17 subsequent siblings)
  29 siblings, 1 reply; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/sii9234.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/bridge/sii9234.c b/drivers/gpu/drm/bridge/sii9234.c
index f81f81b7051f..bfd3832baa1a 100644
--- a/drivers/gpu/drm/bridge/sii9234.c
+++ b/drivers/gpu/drm/bridge/sii9234.c
@@ -925,8 +925,7 @@ static int sii9234_probe(struct i2c_client *client,
 
 	i2c_set_clientdata(client, ctx);
 
-	ctx->bridge.funcs = &sii9234_bridge_funcs;
-	ctx->bridge.of_node = dev->of_node;
+	drm_bridge_init(&ctx->bridge, dev, &sii9234_bridge_funcs, NULL, NULL);
 	drm_bridge_add(&ctx->bridge);
 
 	sii9234_cable_in(ctx);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 13/28] drm/bridge: sil_sii8620: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (11 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 12/28] gpu: drm: bridge: sii9234: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 14/28] drm/bridge/synopsys: dw-hdmi: " Mihail Atanassov
                   ` (16 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/sil-sii8620.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/bridge/sil-sii8620.c b/drivers/gpu/drm/bridge/sil-sii8620.c
index 4c0eef406eb1..482dc2291350 100644
--- a/drivers/gpu/drm/bridge/sil-sii8620.c
+++ b/drivers/gpu/drm/bridge/sil-sii8620.c
@@ -2337,8 +2337,7 @@ static int sii8620_probe(struct i2c_client *client,
 
 	i2c_set_clientdata(client, ctx);
 
-	ctx->bridge.funcs = &sii8620_bridge_funcs;
-	ctx->bridge.of_node = dev->of_node;
+	drm_bridge_init(&ctx->bridge, dev, &sii8620_bridge_funcs, NULL, NULL);
 	drm_bridge_add(&ctx->bridge);
 
 	if (!ctx->extcon)
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 14/28] drm/bridge/synopsys: dw-hdmi: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (12 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 13/28] drm/bridge: sil_sii8620: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 15/28] drm/bridge/synopsys: dsi: " Mihail Atanassov
                   ` (15 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, Douglas Anderson, linux-kernel@vger.kernel.org,
	Laurent Pinchart, Dariusz Marcinkiewicz, nd, Sam Ravnborg,
	Jerome Brunet

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index dbe38a54870b..6c71ffc9df5a 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -2898,11 +2898,8 @@ __dw_hdmi_probe(struct platform_device *pdev,
 			hdmi->ddc = NULL;
 	}
 
-	hdmi->bridge.driver_private = hdmi;
-	hdmi->bridge.funcs = &dw_hdmi_bridge_funcs;
-#ifdef CONFIG_OF
-	hdmi->bridge.of_node = pdev->dev.of_node;
-#endif
+	drm_bridge_init(&hdmi->bridge, &pdev->dev, &dw_hdmi_bridge_funcs,
+			NULL, hdmi);
 
 	memset(&pdevinfo, 0, sizeof(pdevinfo));
 	pdevinfo.parent = dev;
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 15/28] drm/bridge/synopsys: dsi: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (13 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 14/28] drm/bridge/synopsys: dw-hdmi: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 16/28] drm/bridge: tc358764: " Mihail Atanassov
                   ` (14 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Yannick Fertré,
	Laurent Pinchart, nd, Sam Ravnborg, Matt Redfearn

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
index b6e793bb653c..051f9aaf5867 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
@@ -1052,11 +1052,8 @@ __dw_mipi_dsi_probe(struct platform_device *pdev,
 		return ERR_PTR(ret);
 	}
 
-	dsi->bridge.driver_private = dsi;
-	dsi->bridge.funcs = &dw_mipi_dsi_bridge_funcs;
-#ifdef CONFIG_OF
-	dsi->bridge.of_node = pdev->dev.of_node;
-#endif
+	drm_bridge_init(&dsi->bridge, &pdev->dev, &dw_mipi_dsi_bridge_funcs,
+			NULL, dsi);
 
 	return dsi;
 }
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 16/28] drm/bridge: tc358764: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (14 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 15/28] drm/bridge/synopsys: dsi: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 17/28] drm/bridge: tc358767: " Mihail Atanassov
                   ` (13 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/tc358764.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/bridge/tc358764.c b/drivers/gpu/drm/bridge/tc358764.c
index db298f550a5a..861d4df687ee 100644
--- a/drivers/gpu/drm/bridge/tc358764.c
+++ b/drivers/gpu/drm/bridge/tc358764.c
@@ -457,9 +457,7 @@ static int tc358764_probe(struct mipi_dsi_device *dsi)
 	if (ret < 0)
 		return ret;
 
-	ctx->bridge.funcs = &tc358764_bridge_funcs;
-	ctx->bridge.of_node = dev->of_node;
-
+	drm_bridge_init(&ctx->bridge, dev, &tc358764_bridge_funcs, NULL, NULL);
 	drm_bridge_add(&ctx->bridge);
 
 	ret = mipi_dsi_attach(dsi);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 17/28] drm/bridge: tc358767: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (15 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 16/28] drm/bridge: tc358764: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 19/28] drm/bridge: ti-sn65dsi86: " Mihail Atanassov
                   ` (12 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/tc358767.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
index 8029478ffebb..7846c1925cbb 100644
--- a/drivers/gpu/drm/bridge/tc358767.c
+++ b/drivers/gpu/drm/bridge/tc358767.c
@@ -1671,8 +1671,7 @@ static int tc_probe(struct i2c_client *client, const struct i2c_device_id *id)
 	if (ret)
 		return ret;
 
-	tc->bridge.funcs = &tc_bridge_funcs;
-	tc->bridge.of_node = dev->of_node;
+	drm_bridge_init(&tc->bridge, dev, &tc_bridge_funcs, NULL, NULL);
 	drm_bridge_add(&tc->bridge);
 
 	i2c_set_clientdata(client, tc);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 18/28] drm/bridge: thc63: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (17 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 19/28] drm/bridge: ti-sn65dsi86: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-05 13:33   ` Laurent Pinchart
  2019-12-04 11:48 ` [PATCH v2 20/28] drm/bridge: ti-tfp410: " Mihail Atanassov
                   ` (10 subsequent siblings)
  29 siblings, 1 reply; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/thc63lvd1024.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/bridge/thc63lvd1024.c b/drivers/gpu/drm/bridge/thc63lvd1024.c
index 3d74129b2995..abe806db5f4d 100644
--- a/drivers/gpu/drm/bridge/thc63lvd1024.c
+++ b/drivers/gpu/drm/bridge/thc63lvd1024.c
@@ -218,11 +218,8 @@ static int thc63_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
-	thc63->bridge.driver_private = thc63;
-	thc63->bridge.of_node = pdev->dev.of_node;
-	thc63->bridge.funcs = &thc63_bridge_func;
-	thc63->bridge.timings = &thc63->timings;
-
+	drm_bridge_init(&thc63->bridge, &pdev->dev, &thc63_bridge_func,
+			&thc63->timings, thc63);
 	drm_bridge_add(&thc63->bridge);
 
 	return 0;
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 19/28] drm/bridge: ti-sn65dsi86: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (16 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 17/28] drm/bridge: tc358767: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 18/28] drm/bridge: thc63: " Mihail Atanassov
                   ` (11 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/ti-sn65dsi86.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
index 43abf01ebd4c..4e236b46f913 100644
--- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
@@ -765,9 +765,8 @@ static int ti_sn_bridge_probe(struct i2c_client *client,
 	pdata->aux.transfer = ti_sn_aux_transfer;
 	drm_dp_aux_register(&pdata->aux);
 
-	pdata->bridge.funcs = &ti_sn_bridge_funcs;
-	pdata->bridge.of_node = client->dev.of_node;
-
+	drm_bridge_init(&pdata->bridge, &client->dev, &ti_sn_bridge_funcs,
+			NULL, NULL);
 	drm_bridge_add(&pdata->bridge);
 
 	ti_sn_debugfs_init(pdata);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 20/28] drm/bridge: ti-tfp410: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (18 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 18/28] drm/bridge: thc63: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 21/28] drm/exynos: mic: " Mihail Atanassov
                   ` (9 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Mihail Atanassov, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel@vger.kernel.org, Laurent Pinchart,
	nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/bridge/ti-tfp410.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
index aa3198dc9903..377eca989ff3 100644
--- a/drivers/gpu/drm/bridge/ti-tfp410.c
+++ b/drivers/gpu/drm/bridge/ti-tfp410.c
@@ -328,9 +328,8 @@ static int tfp410_init(struct device *dev, bool i2c)
 		return -ENOMEM;
 	dev_set_drvdata(dev, dvi);
 
-	dvi->bridge.funcs = &tfp410_bridge_funcs;
-	dvi->bridge.of_node = dev->of_node;
-	dvi->bridge.timings = &dvi->timings;
+	drm_bridge_init(&dvi->bridge, dev, &tfp410_bridge_funcs, &dvi->timings,
+			NULL);
 	dvi->dev = dev;
 
 	ret = tfp410_parse_timings(dvi, i2c);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 21/28] drm/exynos: mic: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (19 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 20/28] drm/bridge: ti-tfp410: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 22/28] drm/i2c: tda998x: " Mihail Atanassov
                   ` (8 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Mihail Atanassov, David Airlie, Seung-Woo Kim,
	linux-kernel@vger.kernel.org, Krzysztof Kozlowski,
	linux-samsung-soc@vger.kernel.org, Kyungmin Park, Kukjin Kim, nd,
	linux-arm-kernel@lists.infradead.org

No functional change: no logic depends on driver_private being NULL, so
it's safe to set it earlier in exynos_mic_probe.

Acked-by: Inki Dae <inki.dae@samsung.com>
Tested-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/exynos/exynos_drm_mic.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_mic.c b/drivers/gpu/drm/exynos/exynos_drm_mic.c
index f41d75923557..caad348a5646 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_mic.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_mic.c
@@ -309,10 +309,6 @@ static const struct drm_bridge_funcs mic_bridge_funcs = {
 static int exynos_mic_bind(struct device *dev, struct device *master,
 			   void *data)
 {
-	struct exynos_mic *mic = dev_get_drvdata(dev);
-
-	mic->bridge.driver_private = mic;
-
 	return 0;
 }
 
@@ -422,9 +418,7 @@ static int exynos_mic_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, mic);
 
-	mic->bridge.funcs = &mic_bridge_funcs;
-	mic->bridge.of_node = dev->of_node;
-
+	drm_bridge_init(&mic->bridge, dev, &mic_bridge_funcs, NULL, mic);
 	drm_bridge_add(&mic->bridge);
 
 	pm_runtime_enable(dev);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 22/28] drm/i2c: tda998x: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (20 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 21/28] drm/exynos: mic: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 23/28] drm/mcde: dsi: " Mihail Atanassov
                   ` (7 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Mihail Atanassov, David Airlie, Russell King,
	linux-kernel@vger.kernel.org, nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/i2c/tda998x_drv.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index a63790d32d75..f7dfa694aff7 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1974,11 +1974,7 @@ static int tda998x_create(struct device *dev)
 			goto fail;
 	}
 
-	priv->bridge.funcs = &tda998x_bridge_funcs;
-#ifdef CONFIG_OF
-	priv->bridge.of_node = dev->of_node;
-#endif
-
+	drm_bridge_init(&priv->bridge, dev, &tda998x_bridge_funcs, NULL, NULL);
 	drm_bridge_add(&priv->bridge);
 
 	return 0;
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 23/28] drm/mcde: dsi: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (21 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 22/28] drm/i2c: tda998x: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-04 11:48 ` [PATCH v2 24/28] drm/mediatek: hdmi: " Mihail Atanassov
                   ` (6 subsequent siblings)
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Mihail Atanassov, David Airlie, linux-kernel@vger.kernel.org, nd

No functional change.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/mcde/mcde_dsi.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/mcde/mcde_dsi.c b/drivers/gpu/drm/mcde/mcde_dsi.c
index 42fff811653e..d9b9253acccf 100644
--- a/drivers/gpu/drm/mcde/mcde_dsi.c
+++ b/drivers/gpu/drm/mcde/mcde_dsi.c
@@ -955,8 +955,7 @@ static int mcde_dsi_bind(struct device *dev, struct device *master,
 	d->bridge_out = bridge;
 
 	/* Create a bridge for this DSI channel */
-	d->bridge.funcs = &mcde_dsi_bridge_funcs;
-	d->bridge.of_node = dev->of_node;
+	drm_bridge_init(&d->bridge, dev, &mcde_dsi_bridge_funcs, NULL, NULL);
 	drm_bridge_add(&d->bridge);
 
 	/* TODO: first come first serve, use a list */
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 25/28] drm: rcar-du: lvds: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (23 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 24/28] drm/mediatek: hdmi: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-05 13:31   ` Laurent Pinchart
  2019-12-04 11:48 ` [PATCH v2 26/28] drm: rcar-du: lvds: Don't set drm_bridge private pointer Mihail Atanassov
                   ` (4 subsequent siblings)
  29 siblings, 1 reply; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Mihail Atanassov, David Airlie, linux-kernel@vger.kernel.org,
	linux-renesas-soc@vger.kernel.org, Kieran Bingham,
	Laurent Pinchart, nd

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/rcar-du/rcar_lvds.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/rcar-du/rcar_lvds.c b/drivers/gpu/drm/rcar-du/rcar_lvds.c
index 8c6c172bbf2e..ac1f29bacfcb 100644
--- a/drivers/gpu/drm/rcar-du/rcar_lvds.c
+++ b/drivers/gpu/drm/rcar-du/rcar_lvds.c
@@ -881,9 +881,8 @@ static int rcar_lvds_probe(struct platform_device *pdev)
 	if (ret < 0)
 		return ret;
 
-	lvds->bridge.driver_private = lvds;
-	lvds->bridge.funcs = &rcar_lvds_bridge_ops;
-	lvds->bridge.of_node = pdev->dev.of_node;
+	drm_bridge_init(&lvds->bridge, &pdev->dev, &rcar_lvds_bridge_ops,
+			NULL, lvds);
 
 	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	lvds->mmio = devm_ioremap_resource(&pdev->dev, mem);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 24/28] drm/mediatek: hdmi: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (22 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 23/28] drm/mcde: dsi: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-10  1:24   ` CK Hu
  2019-12-04 11:48 ` [PATCH v2 25/28] drm: rcar-du: lvds: " Mihail Atanassov
                   ` (5 subsequent siblings)
  29 siblings, 1 reply; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Mihail Atanassov, David Airlie, linux-kernel@vger.kernel.org,
	Matthias Brugger, linux-mediatek@lists.infradead.org, nd,
	linux-arm-kernel@lists.infradead.org

No functional change.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/mediatek/mtk_hdmi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index f684947c5243..9761a80674d9 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -1708,8 +1708,8 @@ static int mtk_drm_hdmi_probe(struct platform_device *pdev)
 
 	mtk_hdmi_register_audio_driver(dev);
 
-	hdmi->bridge.funcs = &mtk_hdmi_bridge_funcs;
-	hdmi->bridge.of_node = pdev->dev.of_node;
+	drm_bridge_init(&hdmi->bridge, &pdev->dev, &mtk_hdmi_bridge_funcs,
+			NULL, NULL);
 	drm_bridge_add(&hdmi->bridge);
 
 	ret = mtk_hdmi_clk_enable_audio(hdmi);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 26/28] drm: rcar-du: lvds: Don't set drm_bridge private pointer
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (24 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 25/28] drm: rcar-du: lvds: " Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-05 13:31   ` Laurent Pinchart
  2019-12-04 11:48 ` [PATCH v2 27/28] drm/sti: Use drm_bridge_init() Mihail Atanassov
                   ` (3 subsequent siblings)
  29 siblings, 1 reply; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Mihail Atanassov, David Airlie, linux-kernel@vger.kernel.org,
	linux-renesas-soc@vger.kernel.org, Kieran Bingham,
	Laurent Pinchart, nd

No functional change: it's not used anywhere.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/rcar-du/rcar_lvds.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/rcar-du/rcar_lvds.c b/drivers/gpu/drm/rcar-du/rcar_lvds.c
index ac1f29bacfcb..168a718cbcbd 100644
--- a/drivers/gpu/drm/rcar-du/rcar_lvds.c
+++ b/drivers/gpu/drm/rcar-du/rcar_lvds.c
@@ -882,7 +882,7 @@ static int rcar_lvds_probe(struct platform_device *pdev)
 		return ret;
 
 	drm_bridge_init(&lvds->bridge, &pdev->dev, &rcar_lvds_bridge_ops,
-			NULL, lvds);
+			NULL, NULL);
 
 	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	lvds->mmio = devm_ioremap_resource(&pdev->dev, mem);
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 28/28] drm/msm: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (26 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 27/28] drm/sti: Use drm_bridge_init() Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-05 13:34 ` [PATCH v2 00/28] drm/bridge: Consolidate initialization Laurent Pinchart
  2019-12-09 10:39 ` Neil Armstrong
  29 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: open list:DRM DRIVER FOR MSM ADRENO GPU, Mihail Atanassov,
	David Airlie, open list:DRM DRIVER FOR MSM ADRENO GPU, open list,
	nd, Sean Paul

No functional change: drm_bridge_init() sets bridge->of_node, but that's
not used by msm anywhere, and the bridges aren't published with
drm_bridge_add() for it to matter.

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/msm/dsi/dsi_manager.c  | 4 ++--
 drivers/gpu/drm/msm/edp/edp_bridge.c   | 3 +--
 drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 4 ++--
 3 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/dsi/dsi_manager.c
index 271aa7bbca92..ba54049a6338 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_manager.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c
@@ -662,8 +662,8 @@ struct drm_bridge *msm_dsi_manager_bridge_init(u8 id)
 	encoder = msm_dsi->encoder;
 
 	bridge = &dsi_bridge->base;
-	bridge->funcs = &dsi_mgr_bridge_funcs;
-
+	drm_bridge_init(bridge, msm_dsi->dev->dev, &dsi_mgr_bridge_funcs,
+			NULL, NULL);
 	ret = drm_bridge_attach(encoder, bridge, NULL);
 	if (ret)
 		goto fail;
diff --git a/drivers/gpu/drm/msm/edp/edp_bridge.c b/drivers/gpu/drm/msm/edp/edp_bridge.c
index 2950bba4aca9..53d4dc591bd2 100644
--- a/drivers/gpu/drm/msm/edp/edp_bridge.c
+++ b/drivers/gpu/drm/msm/edp/edp_bridge.c
@@ -89,8 +89,7 @@ struct drm_bridge *msm_edp_bridge_init(struct msm_edp *edp)
 	edp_bridge->edp = edp;
 
 	bridge = &edp_bridge->base;
-	bridge->funcs = &edp_bridge_funcs;
-
+	drm_bridge_init(bridge, edp->dev->dev, &edp_bridge_funcs, NULL, NULL);
 	ret = drm_bridge_attach(edp->encoder, bridge, NULL);
 	if (ret)
 		goto fail;
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
index ba81338a9bf8..d038599279bc 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
@@ -285,8 +285,8 @@ struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi)
 	hdmi_bridge->hdmi = hdmi;
 
 	bridge = &hdmi_bridge->base;
-	bridge->funcs = &msm_hdmi_bridge_funcs;
-
+	drm_bridge_init(bridge, hdmi->dev->dev, &msm_hdmi_bridge_funcs,
+			NULL, NULL);
 	ret = drm_bridge_attach(hdmi->encoder, bridge, NULL);
 	if (ret)
 		goto fail;
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* [PATCH v2 27/28] drm/sti: Use drm_bridge_init()
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (25 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 26/28] drm: rcar-du: lvds: Don't set drm_bridge private pointer Mihail Atanassov
@ 2019-12-04 11:48 ` Mihail Atanassov
  2019-12-05 13:39   ` Benjamin Gaignard
  2019-12-04 11:48 ` [PATCH v2 28/28] drm/msm: " Mihail Atanassov
                   ` (2 subsequent siblings)
  29 siblings, 1 reply; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel@lists.freedesktop.org
  Cc: Mihail Atanassov, David Airlie, linux-kernel@vger.kernel.org, nd,
	Vincent Abriou

No functional change.

v2:
 - Also apply drm_bridge_init() in sti_hdmi.c and sti_hda.c (Sam,
   Benjamin)

Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 drivers/gpu/drm/sti/sti_dvo.c  | 4 +---
 drivers/gpu/drm/sti/sti_hda.c  | 3 +--
 drivers/gpu/drm/sti/sti_hdmi.c | 3 +--
 3 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/sti/sti_dvo.c b/drivers/gpu/drm/sti/sti_dvo.c
index 68289b0b063a..20a3956b33bc 100644
--- a/drivers/gpu/drm/sti/sti_dvo.c
+++ b/drivers/gpu/drm/sti/sti_dvo.c
@@ -462,9 +462,7 @@ static int sti_dvo_bind(struct device *dev, struct device *master, void *data)
 	if (!bridge)
 		return -ENOMEM;
 
-	bridge->driver_private = dvo;
-	bridge->funcs = &sti_dvo_bridge_funcs;
-	bridge->of_node = dvo->dev.of_node;
+	drm_bridge_init(bridge, &dvo->dev, &sti_dvo_bridge_funcs, NULL, dvo);
 	drm_bridge_add(bridge);
 
 	err = drm_bridge_attach(encoder, bridge, NULL);
diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c
index 8f7bf33815fd..c7296e354a34 100644
--- a/drivers/gpu/drm/sti/sti_hda.c
+++ b/drivers/gpu/drm/sti/sti_hda.c
@@ -699,8 +699,7 @@ static int sti_hda_bind(struct device *dev, struct device *master, void *data)
 	if (!bridge)
 		return -ENOMEM;
 
-	bridge->driver_private = hda;
-	bridge->funcs = &sti_hda_bridge_funcs;
+	drm_bridge_init(bridge, dev, &sti_hda_bridge_funcs, NULL, hda);
 	drm_bridge_attach(encoder, bridge, NULL);
 
 	connector->encoder = encoder;
diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
index 814560ead4e1..c9ae3e18fa5d 100644
--- a/drivers/gpu/drm/sti/sti_hdmi.c
+++ b/drivers/gpu/drm/sti/sti_hdmi.c
@@ -1279,8 +1279,7 @@ static int sti_hdmi_bind(struct device *dev, struct device *master, void *data)
 	if (!bridge)
 		return -EINVAL;
 
-	bridge->driver_private = hdmi;
-	bridge->funcs = &sti_hdmi_bridge_funcs;
+	drm_bridge_init(bridge, dev, &sti_hdmi_bridge_funcs, NULL, hdmi);
 	drm_bridge_attach(encoder, bridge, NULL);
 
 	connector->encoder = encoder;
-- 
2.23.0

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

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 01/28] drm: Introduce drm_bridge_init()
  2019-12-04 11:48 ` [PATCH v2 01/28] drm: Introduce drm_bridge_init() Mihail Atanassov
@ 2019-12-04 13:10   ` Daniel Vetter
  2019-12-05 12:40   ` Laurent Pinchart
  1 sibling, 0 replies; 43+ messages in thread
From: Daniel Vetter @ 2019-12-04 13:10 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: David Airlie, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org, nd

On Wed, Dec 04, 2019 at 11:48:02AM +0000, Mihail Atanassov wrote:
> A simple convenience function to initialize the struct drm_bridge. The
> goal is to standardize initialization for any bridge registered with
> drm_bridge_add() so that we can later add device links for consumers of
> those bridges.
> 
> v2:
>  - s/WARN_ON(!funcs)/WARN_ON(!funcs || !dev)/ as suggested by Daniel
>  - expand on some kerneldoc comments as suggested by Daniel
>  - update commit message as suggested by Daniel
> 
> Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> ---
>  drivers/gpu/drm/drm_bridge.c | 34 +++++++++++++++++++++++++++++++++-
>  include/drm/drm_bridge.h     | 15 ++++++++++++++-
>  2 files changed, 47 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
> index cba537c99e43..50e1c1b46e20 100644
> --- a/drivers/gpu/drm/drm_bridge.c
> +++ b/drivers/gpu/drm/drm_bridge.c
> @@ -64,7 +64,10 @@ static DEFINE_MUTEX(bridge_lock);
>  static LIST_HEAD(bridge_list);
>  
>  /**
> - * drm_bridge_add - add the given bridge to the global bridge list
> + * drm_bridge_add - add the given bridge to the global bridge list.
> + *
> + * Drivers should call drm_bridge_init() prior adding it to the list.
> + * Drivers should call drm_bridge_remove() to clean up the bridge list.
>   *
>   * @bridge: bridge control structure
>   */
> @@ -89,6 +92,35 @@ void drm_bridge_remove(struct drm_bridge *bridge)
>  }
>  EXPORT_SYMBOL(drm_bridge_remove);
>  
> +/**
> + * drm_bridge_init - initialise a drm_bridge structure
> + *
> + * @bridge: bridge control structure
> + * @funcs: control functions
> + * @dev: device associated with this drm_bridge
> + * @timings: timing specification for the bridge; optional (may be NULL)
> + * @driver_private: pointer to the bridge driver internal context (may be NULL)
> + */
> +void drm_bridge_init(struct drm_bridge *bridge, struct device *dev,
> +		     const struct drm_bridge_funcs *funcs,
> +		     const struct drm_bridge_timings *timings,
> +		     void *driver_private)
> +{
> +	WARN_ON(!funcs || !dev);
> +
> +	bridge->dev = NULL;
> +	bridge->encoder = NULL;
> +	bridge->next = NULL;
> +
> +#ifdef CONFIG_OF
> +	bridge->of_node = dev->of_node;
> +#endif
> +	bridge->timings = timings;
> +	bridge->funcs = funcs;
> +	bridge->driver_private = driver_private;
> +}
> +EXPORT_SYMBOL(drm_bridge_init);
> +
>  /**
>   * drm_bridge_attach - attach the bridge to an encoder's chain
>   *
> diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
> index c0a2286a81e9..949e4f401a53 100644
> --- a/include/drm/drm_bridge.h
> +++ b/include/drm/drm_bridge.h
> @@ -373,7 +373,16 @@ struct drm_bridge_timings {
>  };
>  
>  /**
> - * struct drm_bridge - central DRM bridge control structure
> + * struct drm_bridge - central DRM bridge control structure.
> + *
> + * Bridge drivers should call drm_bridge_init() to initialize a bridge
> + * driver, and then register it with drm_bridge_add().
> + *
> + * Users of bridges link a bridge driver into their overall display output
> + * pipeline by calling drm_bridge_attach().
> + *
> + * Modular drivers in OF systems can query the list of registered bridges
> + * with of_drm_find_bridge().
>   */
>  struct drm_bridge {
>  	/** @dev: DRM device this bridge belongs to */
> @@ -402,6 +411,10 @@ struct drm_bridge {
>  
>  void drm_bridge_add(struct drm_bridge *bridge);
>  void drm_bridge_remove(struct drm_bridge *bridge);
> +void drm_bridge_init(struct drm_bridge *bridge, struct device *dev,
> +		     const struct drm_bridge_funcs *funcs,
> +		     const struct drm_bridge_timings *timings,
> +		     void *driver_private);
>  struct drm_bridge *of_drm_find_bridge(struct device_node *np);
>  int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
>  		      struct drm_bridge *previous);
> -- 
> 2.23.0
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 12/28] gpu: drm: bridge: sii9234: Use drm_bridge_init()
  2019-12-04 11:48 ` [PATCH v2 12/28] gpu: drm: bridge: sii9234: " Mihail Atanassov
@ 2019-12-05 12:10   ` Neil Armstrong
  2019-12-05 14:25     ` Mihail Atanassov
  0 siblings, 1 reply; 43+ messages in thread
From: Neil Armstrong @ 2019-12-05 12:10 UTC (permalink / raw)
  To: Mihail Atanassov, dri-devel@lists.freedesktop.org
  Cc: Jernej Skrabec, Jonas Karlman, David Airlie,
	linux-kernel@vger.kernel.org, Laurent Pinchart, nd

Hi,

On 04/12/2019 12:48, Mihail Atanassov wrote:
> No functional change.
> 

Why this particular one has "gpu: drm: bridge" unlike the other patches of the serie ?

Neil

> Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
> ---
>  drivers/gpu/drm/bridge/sii9234.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/sii9234.c b/drivers/gpu/drm/bridge/sii9234.c
> index f81f81b7051f..bfd3832baa1a 100644
> --- a/drivers/gpu/drm/bridge/sii9234.c
> +++ b/drivers/gpu/drm/bridge/sii9234.c
> @@ -925,8 +925,7 @@ static int sii9234_probe(struct i2c_client *client,
>  
>  	i2c_set_clientdata(client, ctx);
>  
> -	ctx->bridge.funcs = &sii9234_bridge_funcs;
> -	ctx->bridge.of_node = dev->of_node;
> +	drm_bridge_init(&ctx->bridge, dev, &sii9234_bridge_funcs, NULL, NULL);
>  	drm_bridge_add(&ctx->bridge);
>  
>  	sii9234_cable_in(ctx);
> 

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

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 01/28] drm: Introduce drm_bridge_init()
  2019-12-04 11:48 ` [PATCH v2 01/28] drm: Introduce drm_bridge_init() Mihail Atanassov
  2019-12-04 13:10   ` Daniel Vetter
@ 2019-12-05 12:40   ` Laurent Pinchart
  2019-12-05 14:25     ` Mihail Atanassov
  1 sibling, 1 reply; 43+ messages in thread
From: Laurent Pinchart @ 2019-12-05 12:40 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: David Airlie, nd, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org

Hi Mihail,

Thank you for the patch.

On Wed, Dec 04, 2019 at 11:48:02AM +0000, Mihail Atanassov wrote:
> A simple convenience function to initialize the struct drm_bridge. The
> goal is to standardize initialization for any bridge registered with
> drm_bridge_add() so that we can later add device links for consumers of
> those bridges.
> 
> v2:
>  - s/WARN_ON(!funcs)/WARN_ON(!funcs || !dev)/ as suggested by Daniel
>  - expand on some kerneldoc comments as suggested by Daniel
>  - update commit message as suggested by Daniel
> 
> Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
> ---
>  drivers/gpu/drm/drm_bridge.c | 34 +++++++++++++++++++++++++++++++++-
>  include/drm/drm_bridge.h     | 15 ++++++++++++++-
>  2 files changed, 47 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
> index cba537c99e43..50e1c1b46e20 100644
> --- a/drivers/gpu/drm/drm_bridge.c
> +++ b/drivers/gpu/drm/drm_bridge.c
> @@ -64,7 +64,10 @@ static DEFINE_MUTEX(bridge_lock);
>  static LIST_HEAD(bridge_list);
>  
>  /**
> - * drm_bridge_add - add the given bridge to the global bridge list
> + * drm_bridge_add - add the given bridge to the global bridge list.

You add a final period here and in the documentation of struct
drm_bridge, but the new function you're adding doesn't have one :-) I'd
drop the period here and for drm_bridge to be consistent with the rest
of the code.

> + *
> + * Drivers should call drm_bridge_init() prior adding it to the list.

s/should/shall/
s/prior adding it/prior to adding the bridge/

> + * Drivers should call drm_bridge_remove() to clean up the bridge list.

I'd replace this sentence with "Before deleting a bridge (usually when
the driver is unbound from the device), drivers shall call
drm_bridge_remove() to remove it from the global list."

>   *
>   * @bridge: bridge control structure
>   */
> @@ -89,6 +92,35 @@ void drm_bridge_remove(struct drm_bridge *bridge)
>  }
>  EXPORT_SYMBOL(drm_bridge_remove);
>  
> +/**
> + * drm_bridge_init - initialise a drm_bridge structure

initialise or initialize ? :-)

> + *
> + * @bridge: bridge control structure
> + * @funcs: control functions
> + * @dev: device associated with this drm_bridge

dev goes before funcs

> + * @timings: timing specification for the bridge; optional (may be NULL)
> + * @driver_private: pointer to the bridge driver internal context (may be NULL)

I'm not too sure about the last two parameters. Having NULL, NULL in
most callers is confusing, and having a void * as one of the parameters
means that the compiler won't catch errors if the two parameters are
reversed. I think this is quite error prone.

There are very few drivers using driver_private (I count 6 of them, with
2 additional drivers that set driver_private but never use it). How
about embedding the bridge structure in those 6 drivers and getting rid
of the field altogether ? This could be part of a separate series, but
in any case I'd drop driver_private from drm_bridge_init().

> + */
> +void drm_bridge_init(struct drm_bridge *bridge, struct device *dev,
> +		     const struct drm_bridge_funcs *funcs,
> +		     const struct drm_bridge_timings *timings,
> +		     void *driver_private)
> +{
> +	WARN_ON(!funcs || !dev);
> +
> +	bridge->dev = NULL;

NULL ? Shouldn't this be dev ?

> +	bridge->encoder = NULL;
> +	bridge->next = NULL;
> +
> +#ifdef CONFIG_OF
> +	bridge->of_node = dev->of_node;
> +#endif
> +	bridge->timings = timings;
> +	bridge->funcs = funcs;
> +	bridge->driver_private = driver_private;
> +}
> +EXPORT_SYMBOL(drm_bridge_init);
> +
>  /**
>   * drm_bridge_attach - attach the bridge to an encoder's chain
>   *
> diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
> index c0a2286a81e9..949e4f401a53 100644
> --- a/include/drm/drm_bridge.h
> +++ b/include/drm/drm_bridge.h
> @@ -373,7 +373,16 @@ struct drm_bridge_timings {
>  };
>  
>  /**
> - * struct drm_bridge - central DRM bridge control structure
> + * struct drm_bridge - central DRM bridge control structure.
> + *
> + * Bridge drivers should call drm_bridge_init() to initialize a bridge
> + * driver, and then register it with drm_bridge_add().

s/bridge driver/bridge structure/ (or drm_bridge structure)

> + *
> + * Users of bridges link a bridge driver into their overall display output
> + * pipeline by calling drm_bridge_attach().
> + *
> + * Modular drivers in OF systems can query the list of registered bridges
> + * with of_drm_find_bridge().
>   */
>  struct drm_bridge {
>  	/** @dev: DRM device this bridge belongs to */
> @@ -402,6 +411,10 @@ struct drm_bridge {
>  
>  void drm_bridge_add(struct drm_bridge *bridge);
>  void drm_bridge_remove(struct drm_bridge *bridge);
> +void drm_bridge_init(struct drm_bridge *bridge, struct device *dev,
> +		     const struct drm_bridge_funcs *funcs,
> +		     const struct drm_bridge_timings *timings,
> +		     void *driver_private);
>  struct drm_bridge *of_drm_find_bridge(struct device_node *np);
>  int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
>  		      struct drm_bridge *previous);

-- 
Regards,

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

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 03/28] drm/bridge/analogix: Use drm_bridge_init()
  2019-12-04 11:48 ` [PATCH v2 03/28] drm/bridge/analogix: " Mihail Atanassov
@ 2019-12-05 13:29   ` Laurent Pinchart
  0 siblings, 0 replies; 43+ messages in thread
From: Laurent Pinchart @ 2019-12-05 13:29 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: Jernej Skrabec, nd, Neil Armstrong, David Airlie, Jonas Karlman,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Vasily Khoruzhick, Boris Brezillon, Torsten Duwe, Maxime Ripard,
	Sean Paul, Brian Masney, Sam Ravnborg, Icenowy Zheng

On Wed, Dec 04, 2019 at 11:48:04AM +0000, Mihail Atanassov wrote:
> No functional change.
> 
> The setting of bridge->of_node by drm_bridge_init() in
> analogix_dp_core.c is safe, since ->of_node isn't used directly and the
> bridge isn't published with drm_bridge_add().

Still, it's not the right device, is it ? And if we later extend the
usage of dev in drm_bridge_init() it could cause issues. I think you
should use the right device pointer.

> 
> Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
> ---
>  drivers/gpu/drm/bridge/analogix/analogix-anx6345.c | 5 ++---
>  drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c | 8 ++------
>  drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 5 ++---
>  3 files changed, 6 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
> index b4f3a923a52a..130d5c3a07ef 100644
> --- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
> +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
> @@ -696,8 +696,6 @@ static int anx6345_i2c_probe(struct i2c_client *client,
>  
>  	mutex_init(&anx6345->lock);
>  
> -	anx6345->bridge.of_node = client->dev.of_node;
> -
>  	anx6345->client = client;
>  	i2c_set_clientdata(client, anx6345);
>  
> @@ -760,7 +758,8 @@ static int anx6345_i2c_probe(struct i2c_client *client,
>  	/* Look for supported chip ID */
>  	anx6345_poweron(anx6345);
>  	if (anx6345_get_chip_id(anx6345)) {
> -		anx6345->bridge.funcs = &anx6345_bridge_funcs;
> +		drm_bridge_init(&anx6345->bridge, &client->dev,
> +				&anx6345_bridge_funcs, NULL, NULL);
>  		drm_bridge_add(&anx6345->bridge);
>  
>  		return 0;
> diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
> index 41867be03751..e37892cdc9cf 100644
> --- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
> +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
> @@ -1214,10 +1214,6 @@ static int anx78xx_i2c_probe(struct i2c_client *client,
>  
>  	mutex_init(&anx78xx->lock);
>  
> -#if IS_ENABLED(CONFIG_OF)
> -	anx78xx->bridge.of_node = client->dev.of_node;
> -#endif
> -
>  	anx78xx->client = client;
>  	i2c_set_clientdata(client, anx78xx);
>  
> @@ -1321,8 +1317,8 @@ static int anx78xx_i2c_probe(struct i2c_client *client,
>  		goto err_poweroff;
>  	}
>  
> -	anx78xx->bridge.funcs = &anx78xx_bridge_funcs;
> -
> +	drm_bridge_init(&anx78xx->bridge, &client->dev, &anx78xx_bridge_funcs,
> +			NULL, NULL);
>  	drm_bridge_add(&anx78xx->bridge);
>  
>  	/* If cable is pulled out, just poweroff and wait for HPD event */
> diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
> index bb411fe52ae8..4042ba9a98d8 100644
> --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
> +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
> @@ -1585,9 +1585,8 @@ static int analogix_dp_create_bridge(struct drm_device *drm_dev,
>  
>  	dp->bridge = bridge;
>  
> -	bridge->driver_private = dp;
> -	bridge->funcs = &analogix_dp_bridge_funcs;
> -
> +	drm_bridge_init(bridge, drm_dev->dev, &analogix_dp_bridge_funcs,
> +			NULL, dp);
>  	ret = drm_bridge_attach(dp->encoder, bridge, NULL);
>  	if (ret) {
>  		DRM_ERROR("failed to attach drm bridge\n");

-- 
Regards,

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

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 26/28] drm: rcar-du: lvds: Don't set drm_bridge private pointer
  2019-12-04 11:48 ` [PATCH v2 26/28] drm: rcar-du: lvds: Don't set drm_bridge private pointer Mihail Atanassov
@ 2019-12-05 13:31   ` Laurent Pinchart
  0 siblings, 0 replies; 43+ messages in thread
From: Laurent Pinchart @ 2019-12-05 13:31 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: David Airlie, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, Kieran Bingham, nd

Hi Mihail,

Thank you for the patch.

On Wed, Dec 04, 2019 at 11:48:24AM +0000, Mihail Atanassov wrote:
> No functional change: it's not used anywhere.
> 
> Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
> ---
>  drivers/gpu/drm/rcar-du/rcar_lvds.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/rcar-du/rcar_lvds.c b/drivers/gpu/drm/rcar-du/rcar_lvds.c
> index ac1f29bacfcb..168a718cbcbd 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_lvds.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_lvds.c
> @@ -882,7 +882,7 @@ static int rcar_lvds_probe(struct platform_device *pdev)
>  		return ret;
>  
>  	drm_bridge_init(&lvds->bridge, &pdev->dev, &rcar_lvds_bridge_ops,
> -			NULL, lvds);
> +			NULL, NULL);

You can squash this with 25/28.

>  
>  	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	lvds->mmio = devm_ioremap_resource(&pdev->dev, mem);

-- 
Regards,

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

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 25/28] drm: rcar-du: lvds: Use drm_bridge_init()
  2019-12-04 11:48 ` [PATCH v2 25/28] drm: rcar-du: lvds: " Mihail Atanassov
@ 2019-12-05 13:31   ` Laurent Pinchart
  0 siblings, 0 replies; 43+ messages in thread
From: Laurent Pinchart @ 2019-12-05 13:31 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: David Airlie, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, Kieran Bingham, nd

Hi Mihail,

Thank you for the patch.

On Wed, Dec 04, 2019 at 11:48:23AM +0000, Mihail Atanassov wrote:
> No functional change.
> 
> Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>

If you squash this with 26/28,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  drivers/gpu/drm/rcar-du/rcar_lvds.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/rcar-du/rcar_lvds.c b/drivers/gpu/drm/rcar-du/rcar_lvds.c
> index 8c6c172bbf2e..ac1f29bacfcb 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_lvds.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_lvds.c
> @@ -881,9 +881,8 @@ static int rcar_lvds_probe(struct platform_device *pdev)
>  	if (ret < 0)
>  		return ret;
>  
> -	lvds->bridge.driver_private = lvds;
> -	lvds->bridge.funcs = &rcar_lvds_bridge_ops;
> -	lvds->bridge.of_node = pdev->dev.of_node;
> +	drm_bridge_init(&lvds->bridge, &pdev->dev, &rcar_lvds_bridge_ops,
> +			NULL, lvds);
>  
>  	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	lvds->mmio = devm_ioremap_resource(&pdev->dev, mem);

-- 
Regards,

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

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 18/28] drm/bridge: thc63: Use drm_bridge_init()
  2019-12-04 11:48 ` [PATCH v2 18/28] drm/bridge: thc63: " Mihail Atanassov
@ 2019-12-05 13:33   ` Laurent Pinchart
  0 siblings, 0 replies; 43+ messages in thread
From: Laurent Pinchart @ 2019-12-05 13:33 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: Jernej Skrabec, Neil Armstrong, David Airlie, Jonas Karlman,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, nd

Hi Mihail,

Thank you for the patch.

On Wed, Dec 04, 2019 at 11:48:18AM +0000, Mihail Atanassov wrote:
> No functional change.
> 
> Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
> ---
>  drivers/gpu/drm/bridge/thc63lvd1024.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/thc63lvd1024.c b/drivers/gpu/drm/bridge/thc63lvd1024.c
> index 3d74129b2995..abe806db5f4d 100644
> --- a/drivers/gpu/drm/bridge/thc63lvd1024.c
> +++ b/drivers/gpu/drm/bridge/thc63lvd1024.c
> @@ -218,11 +218,8 @@ static int thc63_probe(struct platform_device *pdev)
>  	if (ret)
>  		return ret;
>  
> -	thc63->bridge.driver_private = thc63;
> -	thc63->bridge.of_node = pdev->dev.of_node;
> -	thc63->bridge.funcs = &thc63_bridge_func;
> -	thc63->bridge.timings = &thc63->timings;
> -
> +	drm_bridge_init(&thc63->bridge, &pdev->dev, &thc63_bridge_func,
> +			&thc63->timings, thc63);

I think driver_private is unused, so the last argument can be NULL.

>  	drm_bridge_add(&thc63->bridge);
>  
>  	return 0;

-- 
Regards,

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

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 00/28] drm/bridge: Consolidate initialization
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (27 preceding siblings ...)
  2019-12-04 11:48 ` [PATCH v2 28/28] drm/msm: " Mihail Atanassov
@ 2019-12-05 13:34 ` Laurent Pinchart
  2019-12-09 10:39 ` Neil Armstrong
  29 siblings, 0 replies; 43+ messages in thread
From: Laurent Pinchart @ 2019-12-05 13:34 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: Martyn Welch, Neil Armstrong, David Airlie, Peter Senna Tschudin,
	dri-devel@lists.freedesktop.org, Russell King, Boris Brezillon,
	Sam Ravnborg, Jerome Brunet, linux-renesas-soc@vger.kernel.org,
	linux-samsung-soc@vger.kernel.org, Vincent Abriou,
	Martin Donnelly, Krzysztof Kozlowski, Vasily Khoruzhick,
	Kukjin Kim, Icenowy Zheng, Jonas Karlman,
	linux-arm-msm@vger.kernel.org, Brian Masney,
	linux-mediatek@lists.infradead.org, Matthias Brugger, nd,
	Sean Paul, linux-arm-kernel@lists.infradead.org, Jernej Skrabec,
	Wolfram Sang, Seung-Woo Kim, Douglas Anderson,
	linux-kernel@vger.kernel.org, Yannick Fertré, Kyungmin Park,
	Kieran Bingham, Torsten Duwe, Dariusz Marcinkiewicz,
	freedreno@lists.freedesktop.org

Hi Mihail,

Thank you for the patches.

On Wed, Dec 04, 2019 at 11:48:01AM +0000, Mihail Atanassov wrote:
> Hi all,
> 
> I've dropped the fun parts of this series since they need more work, but
> figured drm_bridge_init() as a concept is still valuable on its own (and
> I think I'll need it to roll out device links for registered bridges),
> so here goes.
> 
> v2:
>  - expanded commit messages and added some extra bridge-related
>    documentation (Daniel)
>  - dropped v1 patches 29 and 30: 29 needs more work, and 30 depends on
>    it
>  - added all remaining drm_bridge implementers, found by searching for
>    drm_bridge_funcs which is mandatory for any bridge; new uses in
>    patches 3, 27, and 28 (Sam)
>  - due to the above, I've decided to squash all analogix changes into
>    one patch

For patches 02, 04 to 11 and 13 to 17, 19 to 24, and 27 to 28,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
> v1 [https://patchwork.freedesktop.org/series/70039/] cover text below:
> 
> This series adds device links support to drm_bridge. The motivation
> behind it is that a drm_bridge in a module could get removed under the
> feet of the bridge user without warning, so we need a way to remove and
> reprobe the client as needed to avoid peering into the void.
> 
> 1: Add a drm_bridge_init() function which wraps all initialisation of
> the structure prior to calling drm_bridge_add().
> 
> 2-26,28: Apply the drm_bridge_init() refactor to every bridge that uses
> drm_bridge_add().
> 
> 27: Minor cleanup in rcar-du.
> 
> 29: Add of_drm_find_bridge_devlink() which functions the same as
> of_drm_find_bridge() plus adds a device device link from the owning
> drm_device to the bridge device.
> 
> 30: As a motivating example, convert komeda to exclusively use
> drm_bridge for its pipe outputs; this isn't a regression in usability
> any more since device links bring the same automatic remove/reprobe
> feature as components.
> 
> Mihail Atanassov (28):
>   drm: Introduce drm_bridge_init()
>   drm/bridge: adv7511: Use drm_bridge_init()
>   drm/bridge/analogix: Use drm_bridge_init()
>   drm/bridge: cdns: Use drm_bridge_init()
>   drm/bridge: dumb-vga-dac: Use drm_bridge_init()
>   drm/bridge: lvds-encoder: Use drm_bridge_init()
>   drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: Use drm_bridge_init()
>   drm/bridge: nxp-ptn3460: Use drm_bridge_init()
>   drm/bridge: panel: Use drm_bridge_init()
>   drm/bridge: ps8622: Use drm_bridge_init()
>   drm/bridge: sii902x: Use drm_bridge_init()
>   gpu: drm: bridge: sii9234: Use drm_bridge_init()
>   drm/bridge: sil_sii8620: Use drm_bridge_init()
>   drm/bridge: dw-hdmi: Use drm_bridge_init()
>   drm/bridge/synopsys: dsi: Use drm_bridge_init()
>   drm/bridge: tc358764: Use drm_bridge_init()
>   drm/bridge: tc358767: Use drm_bridge_init()
>   drm/bridge: thc63: Use drm_bridge_init()
>   drm/bridge: ti-sn65dsi86: Use drm_bridge_init()
>   drm/bridge: ti-tfp410: Use drm_bridge_init()
>   drm/exynos: mic: Use drm_bridge_init()
>   drm/i2c: tda998x: Use drm_bridge_init()
>   drm/mcde: dsi: Use drm_bridge_init()
>   drm/mediatek: hdmi: Use drm_bridge_init()
>   drm: rcar-du: lvds: Use drm_bridge_init()
>   drm: rcar-du: lvds: Don't set drm_bridge private pointer
>   drm/sti: Use drm_bridge_init()
>   drm/msm: Use drm_bridge_init()
> 
>  drivers/gpu/drm/bridge/adv7511/adv7511_drv.c  |  5 ++-
>  .../drm/bridge/analogix/analogix-anx6345.c    |  5 ++-
>  .../drm/bridge/analogix/analogix-anx78xx.c    |  8 ++---
>  .../drm/bridge/analogix/analogix_dp_core.c    |  5 ++-
>  drivers/gpu/drm/bridge/cdns-dsi.c             |  4 +--
>  drivers/gpu/drm/bridge/dumb-vga-dac.c         |  6 ++--
>  drivers/gpu/drm/bridge/lvds-encoder.c         |  7 ++--
>  .../bridge/megachips-stdpxxxx-ge-b850v3-fw.c  |  4 +--
>  drivers/gpu/drm/bridge/nxp-ptn3460.c          |  4 +--
>  drivers/gpu/drm/bridge/panel.c                |  7 ++--
>  drivers/gpu/drm/bridge/parade-ps8622.c        |  3 +-
>  drivers/gpu/drm/bridge/sii902x.c              |  5 ++-
>  drivers/gpu/drm/bridge/sii9234.c              |  3 +-
>  drivers/gpu/drm/bridge/sil-sii8620.c          |  3 +-
>  drivers/gpu/drm/bridge/synopsys/dw-hdmi.c     |  7 ++--
>  drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c |  7 ++--
>  drivers/gpu/drm/bridge/tc358764.c             |  4 +--
>  drivers/gpu/drm/bridge/tc358767.c             |  3 +-
>  drivers/gpu/drm/bridge/thc63lvd1024.c         |  7 ++--
>  drivers/gpu/drm/bridge/ti-sn65dsi86.c         |  5 ++-
>  drivers/gpu/drm/bridge/ti-tfp410.c            |  5 ++-
>  drivers/gpu/drm/drm_bridge.c                  | 34 ++++++++++++++++++-
>  drivers/gpu/drm/exynos/exynos_drm_mic.c       |  8 +----
>  drivers/gpu/drm/i2c/tda998x_drv.c             |  6 +---
>  drivers/gpu/drm/mcde/mcde_dsi.c               |  3 +-
>  drivers/gpu/drm/mediatek/mtk_hdmi.c           |  4 +--
>  drivers/gpu/drm/msm/dsi/dsi_manager.c         |  4 +--
>  drivers/gpu/drm/msm/edp/edp_bridge.c          |  3 +-
>  drivers/gpu/drm/msm/hdmi/hdmi_bridge.c        |  4 +--
>  drivers/gpu/drm/rcar-du/rcar_lvds.c           |  5 ++-
>  drivers/gpu/drm/sti/sti_dvo.c                 |  4 +--
>  drivers/gpu/drm/sti/sti_hda.c                 |  3 +-
>  drivers/gpu/drm/sti/sti_hdmi.c                |  3 +-
>  include/drm/drm_bridge.h                      | 15 +++++++-
>  34 files changed, 100 insertions(+), 103 deletions(-)

-- 
Regards,

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

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 27/28] drm/sti: Use drm_bridge_init()
  2019-12-04 11:48 ` [PATCH v2 27/28] drm/sti: Use drm_bridge_init() Mihail Atanassov
@ 2019-12-05 13:39   ` Benjamin Gaignard
  0 siblings, 0 replies; 43+ messages in thread
From: Benjamin Gaignard @ 2019-12-05 13:39 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: David Airlie, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org, nd, Vincent Abriou

Le mer. 4 déc. 2019 à 12:48, Mihail Atanassov
<Mihail.Atanassov@arm.com> a écrit :
>
> No functional change.
>
> v2:
>  - Also apply drm_bridge_init() in sti_hdmi.c and sti_hda.c (Sam,
>    Benjamin)
>
> Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>

Reviewed-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>

> ---
>  drivers/gpu/drm/sti/sti_dvo.c  | 4 +---
>  drivers/gpu/drm/sti/sti_hda.c  | 3 +--
>  drivers/gpu/drm/sti/sti_hdmi.c | 3 +--
>  3 files changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/sti/sti_dvo.c b/drivers/gpu/drm/sti/sti_dvo.c
> index 68289b0b063a..20a3956b33bc 100644
> --- a/drivers/gpu/drm/sti/sti_dvo.c
> +++ b/drivers/gpu/drm/sti/sti_dvo.c
> @@ -462,9 +462,7 @@ static int sti_dvo_bind(struct device *dev, struct device *master, void *data)
>         if (!bridge)
>                 return -ENOMEM;
>
> -       bridge->driver_private = dvo;
> -       bridge->funcs = &sti_dvo_bridge_funcs;
> -       bridge->of_node = dvo->dev.of_node;
> +       drm_bridge_init(bridge, &dvo->dev, &sti_dvo_bridge_funcs, NULL, dvo);
>         drm_bridge_add(bridge);
>
>         err = drm_bridge_attach(encoder, bridge, NULL);
> diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c
> index 8f7bf33815fd..c7296e354a34 100644
> --- a/drivers/gpu/drm/sti/sti_hda.c
> +++ b/drivers/gpu/drm/sti/sti_hda.c
> @@ -699,8 +699,7 @@ static int sti_hda_bind(struct device *dev, struct device *master, void *data)
>         if (!bridge)
>                 return -ENOMEM;
>
> -       bridge->driver_private = hda;
> -       bridge->funcs = &sti_hda_bridge_funcs;
> +       drm_bridge_init(bridge, dev, &sti_hda_bridge_funcs, NULL, hda);
>         drm_bridge_attach(encoder, bridge, NULL);
>
>         connector->encoder = encoder;
> diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
> index 814560ead4e1..c9ae3e18fa5d 100644
> --- a/drivers/gpu/drm/sti/sti_hdmi.c
> +++ b/drivers/gpu/drm/sti/sti_hdmi.c
> @@ -1279,8 +1279,7 @@ static int sti_hdmi_bind(struct device *dev, struct device *master, void *data)
>         if (!bridge)
>                 return -EINVAL;
>
> -       bridge->driver_private = hdmi;
> -       bridge->funcs = &sti_hdmi_bridge_funcs;
> +       drm_bridge_init(bridge, dev, &sti_hdmi_bridge_funcs, NULL, hdmi);
>         drm_bridge_attach(encoder, bridge, NULL);
>
>         connector->encoder = encoder;
> --
> 2.23.0
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 01/28] drm: Introduce drm_bridge_init()
  2019-12-05 12:40   ` Laurent Pinchart
@ 2019-12-05 14:25     ` Mihail Atanassov
  0 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-05 14:25 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: David Airlie, nd, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org

Hi Laurent,

On Thursday, 5 December 2019 12:40:22 GMT Laurent Pinchart wrote:
> Hi Mihail,
> 
> Thank you for the patch.

Thanks for the quick reviews :).

> 
> On Wed, Dec 04, 2019 at 11:48:02AM +0000, Mihail Atanassov wrote:
> > A simple convenience function to initialize the struct drm_bridge. The
> > goal is to standardize initialization for any bridge registered with
> > drm_bridge_add() so that we can later add device links for consumers of
> > those bridges.
> > 
> > v2:
> >  - s/WARN_ON(!funcs)/WARN_ON(!funcs || !dev)/ as suggested by Daniel
> >  - expand on some kerneldoc comments as suggested by Daniel
> >  - update commit message as suggested by Daniel
> > 
> > Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
> > ---
> >  drivers/gpu/drm/drm_bridge.c | 34 +++++++++++++++++++++++++++++++++-
> >  include/drm/drm_bridge.h     | 15 ++++++++++++++-
> >  2 files changed, 47 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
> > index cba537c99e43..50e1c1b46e20 100644
> > --- a/drivers/gpu/drm/drm_bridge.c
> > +++ b/drivers/gpu/drm/drm_bridge.c
> > @@ -64,7 +64,10 @@ static DEFINE_MUTEX(bridge_lock);
> >  static LIST_HEAD(bridge_list);
> >  
> >  /**
> > - * drm_bridge_add - add the given bridge to the global bridge list
> > + * drm_bridge_add - add the given bridge to the global bridge list.
> 
> You add a final period here and in the documentation of struct
> drm_bridge, but the new function you're adding doesn't have one :-) I'd
> drop the period here and for drm_bridge to be consistent with the rest
> of the code.
> 
> > + *
> > + * Drivers should call drm_bridge_init() prior adding it to the list.
> 
> s/should/shall/
> s/prior adding it/prior to adding the bridge/
> 
> > + * Drivers should call drm_bridge_remove() to clean up the bridge list.
> 
> I'd replace this sentence with "Before deleting a bridge (usually when
> the driver is unbound from the device), drivers shall call
> drm_bridge_remove() to remove it from the global list."
> 

> >   *
> >   * @bridge: bridge control structure
> >   */
> > @@ -89,6 +92,35 @@ void drm_bridge_remove(struct drm_bridge *bridge)
> >  }
> >  EXPORT_SYMBOL(drm_bridge_remove);
> >  
> > +/**
> > + * drm_bridge_init - initialise a drm_bridge structure
> 
> initialise or initialize ? :-)

I have absolutely no clue :). Judging by the question I'm guessing the
correct answer for the kernel is US spelling.

> 
> > + *
> > + * @bridge: bridge control structure
> > + * @funcs: control functions
> > + * @dev: device associated with this drm_bridge
> 
> dev goes before funcs
> 
> > + * @timings: timing specification for the bridge; optional (may be NULL)
> > + * @driver_private: pointer to the bridge driver internal context (may be NULL)
> 
> I'm not too sure about the last two parameters. Having NULL, NULL in
> most callers is confusing, and having a void * as one of the parameters
> means that the compiler won't catch errors if the two parameters are
> reversed. I think this is quite error prone.
> 
> There are very few drivers using driver_private (I count 6 of them, with
> 2 additional drivers that set driver_private but never use it). How
> about embedding the bridge structure in those 6 drivers and getting rid
> of the field altogether ? This could be part of a separate series, but
> in any case I'd drop driver_private from drm_bridge_init().

Ok, I'll do that first before refreshing this series.

> 
> > + */
> > +void drm_bridge_init(struct drm_bridge *bridge, struct device *dev,
> > +		     const struct drm_bridge_funcs *funcs,
> > +		     const struct drm_bridge_timings *timings,
> > +		     void *driver_private)
> > +{
> > +	WARN_ON(!funcs || !dev);
> > +
> > +	bridge->dev = NULL;
> 
> NULL ? Shouldn't this be dev ?

Hehe, Daniel got caught on that one, too :). This is the drm_device pointer
for the bound consumer, not the struct device that the bridge's lifetime
is tied to. I was planning to rename them with my (eventual) device_links
addition (some discussion around it here:
https://patchwork.freedesktop.org/patch/342472/?series=70039&rev=1).

I guess if I do the drm_device part of the rename first, this patch will
look less confusing, so I'll do that too.

> 
> > +	bridge->encoder = NULL;
> > +	bridge->next = NULL;
> > +
> > +#ifdef CONFIG_OF
> > +	bridge->of_node = dev->of_node;
> > +#endif
> > +	bridge->timings = timings;
> > +	bridge->funcs = funcs;
> > +	bridge->driver_private = driver_private;
> > +}
> > +EXPORT_SYMBOL(drm_bridge_init);
> > +
> >  /**
> >   * drm_bridge_attach - attach the bridge to an encoder's chain
> >   *
> > diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
> > index c0a2286a81e9..949e4f401a53 100644
> > --- a/include/drm/drm_bridge.h
> > +++ b/include/drm/drm_bridge.h
> > @@ -373,7 +373,16 @@ struct drm_bridge_timings {
> >  };
> >  
> >  /**
> > - * struct drm_bridge - central DRM bridge control structure
> > + * struct drm_bridge - central DRM bridge control structure.
> > + *
> > + * Bridge drivers should call drm_bridge_init() to initialize a bridge
> > + * driver, and then register it with drm_bridge_add().
> 
> s/bridge driver/bridge structure/ (or drm_bridge structure)
> 
> > + *
> > + * Users of bridges link a bridge driver into their overall display output
> > + * pipeline by calling drm_bridge_attach().
> > + *
> > + * Modular drivers in OF systems can query the list of registered bridges
> > + * with of_drm_find_bridge().
> >   */
> >  struct drm_bridge {
> >  	/** @dev: DRM device this bridge belongs to */
> > @@ -402,6 +411,10 @@ struct drm_bridge {
> >  
> >  void drm_bridge_add(struct drm_bridge *bridge);
> >  void drm_bridge_remove(struct drm_bridge *bridge);
> > +void drm_bridge_init(struct drm_bridge *bridge, struct device *dev,
> > +		     const struct drm_bridge_funcs *funcs,
> > +		     const struct drm_bridge_timings *timings,
> > +		     void *driver_private);
> >  struct drm_bridge *of_drm_find_bridge(struct device_node *np);
> >  int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
> >  		      struct drm_bridge *previous);
> 
> 


-- 
Mihail



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

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 12/28] gpu: drm: bridge: sii9234: Use drm_bridge_init()
  2019-12-05 12:10   ` Neil Armstrong
@ 2019-12-05 14:25     ` Mihail Atanassov
  0 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-05 14:25 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: Jernej Skrabec, Jonas Karlman, David Airlie,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Laurent Pinchart, nd

Hi Neil,

On Thursday, 5 December 2019 12:10:37 GMT Neil Armstrong wrote:
> Hi,
> 
> On 04/12/2019 12:48, Mihail Atanassov wrote:
> > No functional change.
> > 
> 
> Why this particular one has "gpu: drm: bridge" unlike the other patches of the serie ?
> 

I took the "look at the file's git log" approach to determining the prefix.
I can change it if you prefer a "drm/bridge: sii9234" prefix instead.

> Neil
> 
> > Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
> > ---
> >  drivers/gpu/drm/bridge/sii9234.c | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/bridge/sii9234.c b/drivers/gpu/drm/bridge/sii9234.c
> > index f81f81b7051f..bfd3832baa1a 100644
> > --- a/drivers/gpu/drm/bridge/sii9234.c
> > +++ b/drivers/gpu/drm/bridge/sii9234.c
> > @@ -925,8 +925,7 @@ static int sii9234_probe(struct i2c_client *client,
> >  
> >  	i2c_set_clientdata(client, ctx);
> >  
> > -	ctx->bridge.funcs = &sii9234_bridge_funcs;
> > -	ctx->bridge.of_node = dev->of_node;
> > +	drm_bridge_init(&ctx->bridge, dev, &sii9234_bridge_funcs, NULL, NULL);
> >  	drm_bridge_add(&ctx->bridge);
> >  
> >  	sii9234_cable_in(ctx);
> > 
> 
> 


-- 
Mihail



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

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 00/28] drm/bridge: Consolidate initialization
  2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
                   ` (28 preceding siblings ...)
  2019-12-05 13:34 ` [PATCH v2 00/28] drm/bridge: Consolidate initialization Laurent Pinchart
@ 2019-12-09 10:39 ` Neil Armstrong
  2019-12-09 11:08   ` Mihail Atanassov
  29 siblings, 1 reply; 43+ messages in thread
From: Neil Armstrong @ 2019-12-09 10:39 UTC (permalink / raw)
  To: Mihail Atanassov, dri-devel@lists.freedesktop.org
  Cc: Martyn Welch, David Airlie, Peter Senna Tschudin,
	linux-kernel@vger.kernel.org, Wolfram Sang, Laurent Pinchart,
	Sam Ravnborg, Jerome Brunet, Yannick Fertré,
	linux-samsung-soc@vger.kernel.org, Sean Paul, Russell King,
	Krzysztof Kozlowski, Vasily Khoruzhick, Kukjin Kim, Icenowy Zheng,
	Jonas Karlman, linux-arm-msm@vger.kernel.org,
	linux-mediatek@lists.infradead.org, Matthias Brugger, nd,
	Vincent Abriou, linux-arm-kernel@lists.infradead.org,
	Jernej Skrabec, Dariusz Marcinkiewicz, Martin Donnelly,
	Kieran Bingham, Seung-Woo Kim, Douglas Anderson,
	linux-renesas-soc@vger.kernel.org, Kyungmin Park, Boris Brezillon,
	Torsten Duwe, Brian Masney, freedreno@lists.freedesktop.org

Hi Mihail,

On 04/12/2019 12:48, Mihail Atanassov wrote:
> Hi all,
> 
> I've dropped the fun parts of this series since they need more work, but
> figured drm_bridge_init() as a concept is still valuable on its own (and
> I think I'll need it to roll out device links for registered bridges),
> so here goes.
> 
> v2:
>  - expanded commit messages and added some extra bridge-related
>    documentation (Daniel)
>  - dropped v1 patches 29 and 30: 29 needs more work, and 30 depends on
>    it
>  - added all remaining drm_bridge implementers, found by searching for
>    drm_bridge_funcs which is mandatory for any bridge; new uses in
>    patches 3, 27, and 28 (Sam)
>  - due to the above, I've decided to squash all analogix changes into
>    one patch
> 
> ---
> v1 [https://patchwork.freedesktop.org/series/70039/] cover text below:
> 
> This series adds device links support to drm_bridge. The motivation
> behind it is that a drm_bridge in a module could get removed under the
> feet of the bridge user without warning, so we need a way to remove and
> reprobe the client as needed to avoid peering into the void.
> 
> 1: Add a drm_bridge_init() function which wraps all initialisation of
> the structure prior to calling drm_bridge_add().
> 
> 2-26,28: Apply the drm_bridge_init() refactor to every bridge that uses
> drm_bridge_add().
> 
> 27: Minor cleanup in rcar-du.
> 
> 29: Add of_drm_find_bridge_devlink() which functions the same as
> of_drm_find_bridge() plus adds a device device link from the owning
> drm_device to the bridge device.
> 
> 30: As a motivating example, convert komeda to exclusively use
> drm_bridge for its pipe outputs; this isn't a regression in usability
> any more since device links bring the same automatic remove/reprobe
> feature as components.
> 
> Mihail Atanassov (28):
>   drm: Introduce drm_bridge_init()
>   drm/bridge: adv7511: Use drm_bridge_init()
>   drm/bridge/analogix: Use drm_bridge_init()
>   drm/bridge: cdns: Use drm_bridge_init()
>   drm/bridge: dumb-vga-dac: Use drm_bridge_init()
>   drm/bridge: lvds-encoder: Use drm_bridge_init()
>   drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: Use drm_bridge_init()
>   drm/bridge: nxp-ptn3460: Use drm_bridge_init()
>   drm/bridge: panel: Use drm_bridge_init()
>   drm/bridge: ps8622: Use drm_bridge_init()
>   drm/bridge: sii902x: Use drm_bridge_init()
>   gpu: drm: bridge: sii9234: Use drm_bridge_init()
>   drm/bridge: sil_sii8620: Use drm_bridge_init()
>   drm/bridge: dw-hdmi: Use drm_bridge_init()
>   drm/bridge/synopsys: dsi: Use drm_bridge_init()
>   drm/bridge: tc358764: Use drm_bridge_init()
>   drm/bridge: tc358767: Use drm_bridge_init()
>   drm/bridge: thc63: Use drm_bridge_init()
>   drm/bridge: ti-sn65dsi86: Use drm_bridge_init()
>   drm/bridge: ti-tfp410: Use drm_bridge_init()
>   drm/exynos: mic: Use drm_bridge_init()
>   drm/i2c: tda998x: Use drm_bridge_init()
>   drm/mcde: dsi: Use drm_bridge_init()
>   drm/mediatek: hdmi: Use drm_bridge_init()
>   drm: rcar-du: lvds: Use drm_bridge_init()
>   drm: rcar-du: lvds: Don't set drm_bridge private pointer
>   drm/sti: Use drm_bridge_init()
>   drm/msm: Use drm_bridge_init()
> 
>  drivers/gpu/drm/bridge/adv7511/adv7511_drv.c  |  5 ++-
>  .../drm/bridge/analogix/analogix-anx6345.c    |  5 ++-
>  .../drm/bridge/analogix/analogix-anx78xx.c    |  8 ++---
>  .../drm/bridge/analogix/analogix_dp_core.c    |  5 ++-
>  drivers/gpu/drm/bridge/cdns-dsi.c             |  4 +--
>  drivers/gpu/drm/bridge/dumb-vga-dac.c         |  6 ++--
>  drivers/gpu/drm/bridge/lvds-encoder.c         |  7 ++--
>  .../bridge/megachips-stdpxxxx-ge-b850v3-fw.c  |  4 +--
>  drivers/gpu/drm/bridge/nxp-ptn3460.c          |  4 +--
>  drivers/gpu/drm/bridge/panel.c                |  7 ++--
>  drivers/gpu/drm/bridge/parade-ps8622.c        |  3 +-
>  drivers/gpu/drm/bridge/sii902x.c              |  5 ++-
>  drivers/gpu/drm/bridge/sii9234.c              |  3 +-
>  drivers/gpu/drm/bridge/sil-sii8620.c          |  3 +-
>  drivers/gpu/drm/bridge/synopsys/dw-hdmi.c     |  7 ++--
>  drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c |  7 ++--
>  drivers/gpu/drm/bridge/tc358764.c             |  4 +--
>  drivers/gpu/drm/bridge/tc358767.c             |  3 +-
>  drivers/gpu/drm/bridge/thc63lvd1024.c         |  7 ++--
>  drivers/gpu/drm/bridge/ti-sn65dsi86.c         |  5 ++-
>  drivers/gpu/drm/bridge/ti-tfp410.c            |  5 ++-
>  drivers/gpu/drm/drm_bridge.c                  | 34 ++++++++++++++++++-
>  drivers/gpu/drm/exynos/exynos_drm_mic.c       |  8 +----
>  drivers/gpu/drm/i2c/tda998x_drv.c             |  6 +---
>  drivers/gpu/drm/mcde/mcde_dsi.c               |  3 +-
>  drivers/gpu/drm/mediatek/mtk_hdmi.c           |  4 +--
>  drivers/gpu/drm/msm/dsi/dsi_manager.c         |  4 +--
>  drivers/gpu/drm/msm/edp/edp_bridge.c          |  3 +-
>  drivers/gpu/drm/msm/hdmi/hdmi_bridge.c        |  4 +--
>  drivers/gpu/drm/rcar-du/rcar_lvds.c           |  5 ++-
>  drivers/gpu/drm/sti/sti_dvo.c                 |  4 +--
>  drivers/gpu/drm/sti/sti_hda.c                 |  3 +-
>  drivers/gpu/drm/sti/sti_hdmi.c                |  3 +-
>  include/drm/drm_bridge.h                      | 15 +++++++-
>  34 files changed, 100 insertions(+), 103 deletions(-)
> 

Can you check it doesn't collides with Boris 1-7 of "drm: Add support for bus-format negotiation" patches he just pushed on drm-misc-next ?

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

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 00/28] drm/bridge: Consolidate initialization
  2019-12-09 10:39 ` Neil Armstrong
@ 2019-12-09 11:08   ` Mihail Atanassov
  0 siblings, 0 replies; 43+ messages in thread
From: Mihail Atanassov @ 2019-12-09 11:08 UTC (permalink / raw)
  To: Neil Armstrong, dri-devel@lists.freedesktop.org
  Cc: Martyn Welch, David Airlie, Peter Senna Tschudin,
	linux-kernel@vger.kernel.org, Wolfram Sang, Laurent Pinchart,
	Sam Ravnborg, Jerome Brunet, Yannick Fertré,
	linux-samsung-soc@vger.kernel.org, Sean Paul, Russell King,
	Krzysztof Kozlowski, Vasily Khoruzhick, Kukjin Kim, Icenowy Zheng,
	Jonas Karlman, linux-arm-msm@vger.kernel.org,
	linux-mediatek@lists.infradead.org, Matthias Brugger, nd,
	Vincent Abriou, linux-arm-kernel@lists.infradead.org,
	Jernej Skrabec, Dariusz Marcinkiewicz, Martin Donnelly,
	Kieran Bingham, Seung-Woo Kim, Douglas Anderson,
	linux-renesas-soc@vger.kernel.org, Kyungmin Park, Boris Brezillon,
	Torsten Duwe, Brian Masney, freedreno@lists.freedesktop.org

On Monday, 9 December 2019 10:39:07 GMT Neil Armstrong wrote:
> Hi Mihail,

Hi Neil,

> 
> On 04/12/2019 12:48, Mihail Atanassov wrote:
> > Hi all,
> > 
> > I've dropped the fun parts of this series since they need more work, but
> > figured drm_bridge_init() as a concept is still valuable on its own (and
> > I think I'll need it to roll out device links for registered bridges),
> > so here goes.
> > 
> > v2:
> >  - expanded commit messages and added some extra bridge-related
> >    documentation (Daniel)
> >  - dropped v1 patches 29 and 30: 29 needs more work, and 30 depends on
> >    it
> >  - added all remaining drm_bridge implementers, found by searching for
> >    drm_bridge_funcs which is mandatory for any bridge; new uses in
> >    patches 3, 27, and 28 (Sam)
> >  - due to the above, I've decided to squash all analogix changes into
> >    one patch
> > 
> > ---
> > v1 [https://patchwork.freedesktop.org/series/70039/] cover text below:
> > 
> > This series adds device links support to drm_bridge. The motivation
> > behind it is that a drm_bridge in a module could get removed under the
> > feet of the bridge user without warning, so we need a way to remove and
> > reprobe the client as needed to avoid peering into the void.
> > 
> > 1: Add a drm_bridge_init() function which wraps all initialisation of
> > the structure prior to calling drm_bridge_add().
> > 
> > 2-26,28: Apply the drm_bridge_init() refactor to every bridge that uses
> > drm_bridge_add().
> > 
> > 27: Minor cleanup in rcar-du.
> > 
> > 29: Add of_drm_find_bridge_devlink() which functions the same as
> > of_drm_find_bridge() plus adds a device device link from the owning
> > drm_device to the bridge device.
> > 
> > 30: As a motivating example, convert komeda to exclusively use
> > drm_bridge for its pipe outputs; this isn't a regression in usability
> > any more since device links bring the same automatic remove/reprobe
> > feature as components.
> > 
> > Mihail Atanassov (28):
> >   drm: Introduce drm_bridge_init()
> >   drm/bridge: adv7511: Use drm_bridge_init()
> >   drm/bridge/analogix: Use drm_bridge_init()
> >   drm/bridge: cdns: Use drm_bridge_init()
> >   drm/bridge: dumb-vga-dac: Use drm_bridge_init()
> >   drm/bridge: lvds-encoder: Use drm_bridge_init()
> >   drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: Use drm_bridge_init()
> >   drm/bridge: nxp-ptn3460: Use drm_bridge_init()
> >   drm/bridge: panel: Use drm_bridge_init()
> >   drm/bridge: ps8622: Use drm_bridge_init()
> >   drm/bridge: sii902x: Use drm_bridge_init()
> >   gpu: drm: bridge: sii9234: Use drm_bridge_init()
> >   drm/bridge: sil_sii8620: Use drm_bridge_init()
> >   drm/bridge: dw-hdmi: Use drm_bridge_init()
> >   drm/bridge/synopsys: dsi: Use drm_bridge_init()
> >   drm/bridge: tc358764: Use drm_bridge_init()
> >   drm/bridge: tc358767: Use drm_bridge_init()
> >   drm/bridge: thc63: Use drm_bridge_init()
> >   drm/bridge: ti-sn65dsi86: Use drm_bridge_init()
> >   drm/bridge: ti-tfp410: Use drm_bridge_init()
> >   drm/exynos: mic: Use drm_bridge_init()
> >   drm/i2c: tda998x: Use drm_bridge_init()
> >   drm/mcde: dsi: Use drm_bridge_init()
> >   drm/mediatek: hdmi: Use drm_bridge_init()
> >   drm: rcar-du: lvds: Use drm_bridge_init()
> >   drm: rcar-du: lvds: Don't set drm_bridge private pointer
> >   drm/sti: Use drm_bridge_init()
> >   drm/msm: Use drm_bridge_init()
> > 
> >  drivers/gpu/drm/bridge/adv7511/adv7511_drv.c  |  5 ++-
> >  .../drm/bridge/analogix/analogix-anx6345.c    |  5 ++-
> >  .../drm/bridge/analogix/analogix-anx78xx.c    |  8 ++---
> >  .../drm/bridge/analogix/analogix_dp_core.c    |  5 ++-
> >  drivers/gpu/drm/bridge/cdns-dsi.c             |  4 +--
> >  drivers/gpu/drm/bridge/dumb-vga-dac.c         |  6 ++--
> >  drivers/gpu/drm/bridge/lvds-encoder.c         |  7 ++--
> >  .../bridge/megachips-stdpxxxx-ge-b850v3-fw.c  |  4 +--
> >  drivers/gpu/drm/bridge/nxp-ptn3460.c          |  4 +--
> >  drivers/gpu/drm/bridge/panel.c                |  7 ++--
> >  drivers/gpu/drm/bridge/parade-ps8622.c        |  3 +-
> >  drivers/gpu/drm/bridge/sii902x.c              |  5 ++-
> >  drivers/gpu/drm/bridge/sii9234.c              |  3 +-
> >  drivers/gpu/drm/bridge/sil-sii8620.c          |  3 +-
> >  drivers/gpu/drm/bridge/synopsys/dw-hdmi.c     |  7 ++--
> >  drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c |  7 ++--
> >  drivers/gpu/drm/bridge/tc358764.c             |  4 +--
> >  drivers/gpu/drm/bridge/tc358767.c             |  3 +-
> >  drivers/gpu/drm/bridge/thc63lvd1024.c         |  7 ++--
> >  drivers/gpu/drm/bridge/ti-sn65dsi86.c         |  5 ++-
> >  drivers/gpu/drm/bridge/ti-tfp410.c            |  5 ++-
> >  drivers/gpu/drm/drm_bridge.c                  | 34 ++++++++++++++++++-
> >  drivers/gpu/drm/exynos/exynos_drm_mic.c       |  8 +----
> >  drivers/gpu/drm/i2c/tda998x_drv.c             |  6 +---
> >  drivers/gpu/drm/mcde/mcde_dsi.c               |  3 +-
> >  drivers/gpu/drm/mediatek/mtk_hdmi.c           |  4 +--
> >  drivers/gpu/drm/msm/dsi/dsi_manager.c         |  4 +--
> >  drivers/gpu/drm/msm/edp/edp_bridge.c          |  3 +-
> >  drivers/gpu/drm/msm/hdmi/hdmi_bridge.c        |  4 +--
> >  drivers/gpu/drm/rcar-du/rcar_lvds.c           |  5 ++-
> >  drivers/gpu/drm/sti/sti_dvo.c                 |  4 +--
> >  drivers/gpu/drm/sti/sti_hda.c                 |  3 +-
> >  drivers/gpu/drm/sti/sti_hdmi.c                |  3 +-
> >  include/drm/drm_bridge.h                      | 15 +++++++-
> >  34 files changed, 100 insertions(+), 103 deletions(-)
> > 
> 
> Can you check it doesn't collides with Boris 1-7 of "drm: Add support for bus-format negotiation" patches he just pushed on drm-misc-next ?

Thanks for the heads-up. There's no technical conflict but the build fails.
I'll fix it for v3 after I get the de-midlayering of drm_bridge done
(see https://patchwork.freedesktop.org/patch/343643/?series=70432&rev=1 for
context) and the s/bridge->dev/bridge->drm/ patch merged
(https://patchwork.freedesktop.org/patch/343824/).

> 
> Neil
> 

-- 
Mihail



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

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2 24/28] drm/mediatek: hdmi: Use drm_bridge_init()
  2019-12-04 11:48 ` [PATCH v2 24/28] drm/mediatek: hdmi: " Mihail Atanassov
@ 2019-12-10  1:24   ` CK Hu
  0 siblings, 0 replies; 43+ messages in thread
From: CK Hu @ 2019-12-10  1:24 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: David Airlie, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
	linux-mediatek@lists.infradead.org, Matthias Brugger, nd,
	linux-arm-kernel@lists.infradead.org

Hi, Mihail:

On Wed, 2019-12-04 at 11:48 +0000, Mihail Atanassov wrote:
> No functional change.
> 

Acked-by: CK Hu <ck.hu@mediatek.com>

> Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
> ---
>  drivers/gpu/drm/mediatek/mtk_hdmi.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> index f684947c5243..9761a80674d9 100644
> --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> @@ -1708,8 +1708,8 @@ static int mtk_drm_hdmi_probe(struct platform_device *pdev)
>  
>  	mtk_hdmi_register_audio_driver(dev);
>  
> -	hdmi->bridge.funcs = &mtk_hdmi_bridge_funcs;
> -	hdmi->bridge.of_node = pdev->dev.of_node;
> +	drm_bridge_init(&hdmi->bridge, &pdev->dev, &mtk_hdmi_bridge_funcs,
> +			NULL, NULL);
>  	drm_bridge_add(&hdmi->bridge);
>  
>  	ret = mtk_hdmi_clk_enable_audio(hdmi);

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

^ permalink raw reply	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2019-12-10  1:24 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-12-04 11:48 [PATCH v2 00/28] drm/bridge: Consolidate initialization Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 01/28] drm: Introduce drm_bridge_init() Mihail Atanassov
2019-12-04 13:10   ` Daniel Vetter
2019-12-05 12:40   ` Laurent Pinchart
2019-12-05 14:25     ` Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 02/28] drm/bridge: adv7511: Use drm_bridge_init() Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 03/28] drm/bridge/analogix: " Mihail Atanassov
2019-12-05 13:29   ` Laurent Pinchart
2019-12-04 11:48 ` [PATCH v2 04/28] drm/bridge: cdns: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 05/28] drm/bridge: dumb-vga-dac: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 06/28] drm/bridge: lvds-encoder: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 07/28] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 08/28] drm/bridge: nxp-ptn3460: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 10/28] drm/bridge: ps8622: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 09/28] drm/bridge: panel: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 11/28] drm/bridge: sii902x: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 12/28] gpu: drm: bridge: sii9234: " Mihail Atanassov
2019-12-05 12:10   ` Neil Armstrong
2019-12-05 14:25     ` Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 13/28] drm/bridge: sil_sii8620: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 14/28] drm/bridge/synopsys: dw-hdmi: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 15/28] drm/bridge/synopsys: dsi: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 16/28] drm/bridge: tc358764: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 17/28] drm/bridge: tc358767: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 19/28] drm/bridge: ti-sn65dsi86: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 18/28] drm/bridge: thc63: " Mihail Atanassov
2019-12-05 13:33   ` Laurent Pinchart
2019-12-04 11:48 ` [PATCH v2 20/28] drm/bridge: ti-tfp410: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 21/28] drm/exynos: mic: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 22/28] drm/i2c: tda998x: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 23/28] drm/mcde: dsi: " Mihail Atanassov
2019-12-04 11:48 ` [PATCH v2 24/28] drm/mediatek: hdmi: " Mihail Atanassov
2019-12-10  1:24   ` CK Hu
2019-12-04 11:48 ` [PATCH v2 25/28] drm: rcar-du: lvds: " Mihail Atanassov
2019-12-05 13:31   ` Laurent Pinchart
2019-12-04 11:48 ` [PATCH v2 26/28] drm: rcar-du: lvds: Don't set drm_bridge private pointer Mihail Atanassov
2019-12-05 13:31   ` Laurent Pinchart
2019-12-04 11:48 ` [PATCH v2 27/28] drm/sti: Use drm_bridge_init() Mihail Atanassov
2019-12-05 13:39   ` Benjamin Gaignard
2019-12-04 11:48 ` [PATCH v2 28/28] drm/msm: " Mihail Atanassov
2019-12-05 13:34 ` [PATCH v2 00/28] drm/bridge: Consolidate initialization Laurent Pinchart
2019-12-09 10:39 ` Neil Armstrong
2019-12-09 11:08   ` Mihail Atanassov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox