linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 01/28] drm: Introduce drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
@ 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
                   ` (27 subsequent siblings)
  28 siblings, 2 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Maarten Lankhorst, Maxime Ripard,
	David Airlie, Daniel Vetter, linux-kernel

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


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

* [PATCH v2 02/28] drm/bridge: adv7511: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
  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
                   ` (26 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, Sam Ravnborg, Wolfram Sang, Matt Redfearn,
	Rob Clark, linux-kernel

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


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

* [PATCH v2 03/28] drm/bridge/analogix: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
  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
                   ` (25 subsequent siblings)
  28 siblings, 1 reply; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, Maxime Ripard, Torsten Duwe, Icenowy Zheng,
	Vasily Khoruzhick, Linus Walleij, Brian Masney, Sam Ravnborg,
	Boris Brezillon, Sean Paul, linux-kernel

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


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

* [PATCH v2 04/28] drm/bridge: cdns: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (24 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 05/28] drm/bridge: dumb-vga-dac: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (23 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 06/28] drm/bridge: lvds-encoder: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (22 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 07/28] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (21 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Peter Senna Tschudin, Martin Donnelly,
	Martyn Welch, Andrzej Hajda, Neil Armstrong, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, David Airlie, Daniel Vetter,
	linux-kernel

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


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

* [PATCH v2 08/28] drm/bridge: nxp-ptn3460: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (20 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 10/28] drm/bridge: ps8622: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (19 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 09/28] drm/bridge: panel: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (18 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 11/28] drm/bridge: sii902x: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (17 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 12/28] gpu: drm: bridge: sii9234: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (16 subsequent siblings)
  28 siblings, 1 reply; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 13/28] drm/bridge: sil_sii8620: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (15 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 14/28] drm/bridge/synopsys: dw-hdmi: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (14 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, Sam Ravnborg, Jerome Brunet, Douglas Anderson,
	Dariusz Marcinkiewicz, linux-kernel

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


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

* [PATCH v2 15/28] drm/bridge/synopsys: dsi: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (13 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, Sam Ravnborg, Yannick Fertré,
	Matt Redfearn, linux-kernel

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


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

* [PATCH v2 16/28] drm/bridge: tc358764: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (12 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 17/28] drm/bridge: tc358767: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (11 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 19/28] drm/bridge: ti-sn65dsi86: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (10 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 18/28] drm/bridge: thc63: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (9 subsequent siblings)
  28 siblings, 1 reply; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 20/28] drm/bridge: ti-tfp410: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (8 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, David Airlie,
	Daniel Vetter, linux-kernel

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


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

* [PATCH v2 21/28] drm/exynos: mic: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (7 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Inki Dae, Joonyoung Shim, Seung-Woo Kim,
	Kyungmin Park, David Airlie, Daniel Vetter, Kukjin Kim,
	Krzysztof Kozlowski, linux-arm-kernel, linux-samsung-soc,
	linux-kernel

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


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

* [PATCH v2 22/28] drm/i2c: tda998x: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
                   ` (6 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Russell King, David Airlie, Daniel Vetter,
	linux-kernel

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


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

* [PATCH v2 23/28] drm/mcde: dsi: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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 25/28] drm: rcar-du: lvds: " Mihail Atanassov
                   ` (5 subsequent siblings)
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Linus Walleij, David Airlie, Daniel Vetter,
	linux-kernel

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


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

* [PATCH v2 24/28] drm/mediatek: hdmi: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (23 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-10  1:24   ` CK Hu
  2019-12-04 11:48 ` [PATCH v2 26/28] drm: rcar-du: lvds: Don't set drm_bridge private pointer Mihail Atanassov
                   ` (3 subsequent siblings)
  28 siblings, 1 reply; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, CK Hu, Philipp Zabel, David Airlie,
	Daniel Vetter, Matthias Brugger, linux-arm-kernel,
	linux-mediatek, linux-kernel

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


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

* [PATCH v2 25/28] drm: rcar-du: lvds: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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-05 13:31   ` Laurent Pinchart
  2019-12-04 11:48 ` [PATCH v2 24/28] drm/mediatek: hdmi: " Mihail Atanassov
                   ` (4 subsequent siblings)
  28 siblings, 1 reply; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Laurent Pinchart, Kieran Bingham,
	David Airlie, Daniel Vetter, linux-renesas-soc, linux-kernel

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


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

* [PATCH v2 26/28] drm: rcar-du: lvds: Don't set drm_bridge private pointer
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (24 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 27/28] drm/sti: Use drm_bridge_init() Mihail Atanassov
                   ` (2 subsequent siblings)
  28 siblings, 1 reply; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Laurent Pinchart, Kieran Bingham,
	David Airlie, Daniel Vetter, linux-renesas-soc, linux-kernel

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


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

* [PATCH v2 27/28] drm/sti: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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
  2019-12-09 10:39 ` [PATCH v2 00/28] drm/bridge: Consolidate initialization Neil Armstrong
  28 siblings, 1 reply; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Benjamin Gaignard, Vincent Abriou,
	David Airlie, Daniel Vetter, linux-kernel

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


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

* [PATCH v2 28/28] drm/msm: Use drm_bridge_init()
       [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
                   ` (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-09 10:39 ` [PATCH v2 00/28] drm/bridge: Consolidate initialization Neil Armstrong
  28 siblings, 0 replies; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-04 11:48 UTC (permalink / raw)
  To: dri-devel
  Cc: Mihail Atanassov, nd, Rob Clark, Sean Paul, David Airlie,
	Daniel Vetter, open list:DRM DRIVER FOR MSM ADRENO GPU,
	open list:DRM DRIVER FOR MSM ADRENO GPU, open list

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


^ permalink raw reply related	[flat|nested] 41+ 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; 41+ messages in thread
From: Daniel Vetter @ 2019-12-04 13:10 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: dri-devel, nd, Maarten Lankhorst, Maxime Ripard, David Airlie,
	Daniel Vetter, linux-kernel

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

^ permalink raw reply	[flat|nested] 41+ 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; 41+ messages in thread
From: Neil Armstrong @ 2019-12-05 12:10 UTC (permalink / raw)
  To: Mihail Atanassov, dri-devel
  Cc: nd, Andrzej Hajda, Laurent Pinchart, Jonas Karlman,
	Jernej Skrabec, David Airlie, Daniel Vetter, linux-kernel

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);
> 


^ permalink raw reply	[flat|nested] 41+ 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; 41+ messages in thread
From: Laurent Pinchart @ 2019-12-05 12:40 UTC (permalink / raw)
  To: Mihail Atanassov; +Cc: dri-devel, David Airlie, linux-kernel, nd

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

^ permalink raw reply	[flat|nested] 41+ 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; 41+ messages in thread
From: Laurent Pinchart @ 2019-12-05 13:29 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: dri-devel, Jernej Skrabec, Jonas Karlman, David Airlie,
	Neil Armstrong, Icenowy Zheng, Brian Masney, linux-kernel,
	Vasily Khoruzhick, Boris Brezillon, Torsten Duwe, Sean Paul, nd,
	Sam Ravnborg, Maxime Ripard

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

^ permalink raw reply	[flat|nested] 41+ 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; 41+ messages in thread
From: Laurent Pinchart @ 2019-12-05 13:31 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: dri-devel, David Airlie, linux-kernel, linux-renesas-soc,
	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

^ permalink raw reply	[flat|nested] 41+ 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; 41+ messages in thread
From: Laurent Pinchart @ 2019-12-05 13:31 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: dri-devel, David Airlie, linux-kernel, linux-renesas-soc,
	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

^ permalink raw reply	[flat|nested] 41+ 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; 41+ messages in thread
From: Laurent Pinchart @ 2019-12-05 13:33 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: dri-devel, Jernej Skrabec, Jonas Karlman, David Airlie,
	Neil Armstrong, linux-kernel, 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

^ permalink raw reply	[flat|nested] 41+ 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; 41+ messages in thread
From: Benjamin Gaignard @ 2019-12-05 13:39 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: dri-devel, nd, Vincent Abriou, David Airlie, Daniel Vetter, linux-kernel

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
>

^ permalink raw reply	[flat|nested] 41+ 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; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-05 14:25 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: nd, dri-devel, David Airlie, linux-kernel

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




^ permalink raw reply	[flat|nested] 41+ 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; 41+ messages in thread
From: Mihail Atanassov @ 2019-12-05 14:25 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: nd, dri-devel, nd, Andrzej Hajda, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, David Airlie, Daniel Vetter,
	linux-kernel

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




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

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

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

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

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

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




^ permalink raw reply	[flat|nested] 41+ 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; 41+ messages in thread
From: CK Hu @ 2019-12-10  1:24 UTC (permalink / raw)
  To: Mihail Atanassov
  Cc: dri-devel, nd, Philipp Zabel, David Airlie, Daniel Vetter,
	Matthias Brugger, linux-arm-kernel, linux-mediatek, linux-kernel

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);


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

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

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20191204114732.28514-1-mihail.atanassov@arm.com>
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 25/28] drm: rcar-du: lvds: " Mihail Atanassov
2019-12-05 13:31   ` Laurent Pinchart
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 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-09 10:39 ` [PATCH v2 00/28] drm/bridge: Consolidate initialization 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;
as well as URLs for NNTP newsgroup(s).