2019-12-24 17:38:36

by Mihail Atanassov

[permalink] [raw]
Subject: [PATCH v3 00/35] drm/bridge: Consolidate initialization

Hi all,

Version 3 of my drm_bridge_init() series here. The biggest change from
the previous version is the removal of drm_bridge->dev (1/35) and the
removal of ->driver_private (2-7/35). The rest of the patches are mostly
the same, save for dropping the driver_private argument from
drm_bridge_init().

v3:
- remove drm_bridge->dev (Thomas)
- convert ->driver_private users to container_of() (Laurent)
- remove drm_bridge->driver_private (Laurent)
- remove driver_private argument from drm_bridge_init() (Laurent)
- clean up the wording on some comments (Laurent)
- pass the correct struct device to drm_bridge_init in analogix
(Laurent)
- I've kept the rcar-du patches separate but changed their order; this
should make it easier to take only one part of the series if needed

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

Mihail Atanassov (35):
drm: Remove drm_bridge->dev
drm/bridge: analogix_dp: Stop using drm_bridge->driver_private
drm/bridge/synopsys: Stop using drm_bridge->driver_private
drm/bridge: thc63lvd1024: Don't set drm_bridge->driver_private
drm/exynos: mic: Stop using drm_bridge->driver_private
drm: rcar-du: lvds: Don't set drm_bridge->driver_private
drm/sti: Stop using drm_bridge->driver_private
drm: Remove drm_bridge->driver_private
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-codec: 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()
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/sti: Use drm_bridge_init()
drm/msm: Use drm_bridge_init()

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

--
2.24.0


2019-12-24 17:38:39

by Mihail Atanassov

[permalink] [raw]
Subject: [PATCH v3 13/35] drm/bridge: dumb-vga-dac: Use drm_bridge_init()

No functional change.

v3:
- drop driver_private argument (Laurent)

Reviewed-by: Laurent Pinchart <[email protected]>
Signed-off-by: Mihail Atanassov <[email protected]>
---
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 67ad6cecf68d..a737042a350b 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));
drm_bridge_add(&vga->bridge);

return 0;
--
2.24.0

2019-12-24 17:38:50

by Mihail Atanassov

[permalink] [raw]
Subject: [PATCH v3 12/35] drm/bridge: cdns: Use drm_bridge_init()

No functional change.

v3:
- drop driver_private argument (Laurent)

Reviewed-by: Laurent Pinchart <[email protected]>
Signed-off-by: Mihail Atanassov <[email protected]>
---
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 32863e3ad537..15999c971cd4 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);

/* Mask all interrupts before registering the IRQ handler. */
writel(0, dsi->regs + MCTL_MAIN_STS_CTL);
--
2.24.0

2019-12-24 17:38:55

by Mihail Atanassov

[permalink] [raw]
Subject: [PATCH v3 01/35] drm: Remove drm_bridge->dev

As suggested in [1], the 'dev' field is a bit repetitive, since it 1:1
follows the setting and NULLing of the 'encoder' field. Therefore, use
drm_bridge->encoder->dev in place of drm_bridge->dev.

[1] https://patchwork.freedesktop.org/patch/343824/

v3:
- resend as part of drm_bridge_init() series
v2:
- fix checkpatch complaint about unnecessary parentheses in
drm_bridge.c

Cc: Daniel Vetter <[email protected]>
Suggested-by: Thomas Zimmermann <[email protected]>
Acked-by: Thomas Zimmermann <[email protected]>
Signed-off-by: Mihail Atanassov <[email protected]>
---
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 2 +-
drivers/gpu/drm/bridge/analogix/analogix-anx6345.c | 2 +-
drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c | 2 +-
drivers/gpu/drm/bridge/cdns-dsi.c | 2 +-
drivers/gpu/drm/bridge/dumb-vga-dac.c | 2 +-
.../gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 2 +-
drivers/gpu/drm/bridge/nxp-ptn3460.c | 2 +-
drivers/gpu/drm/bridge/panel.c | 2 +-
drivers/gpu/drm/bridge/parade-ps8622.c | 2 +-
drivers/gpu/drm/bridge/sii902x.c | 6 +++---
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 6 +++---
drivers/gpu/drm/bridge/tc358764.c | 4 ++--
drivers/gpu/drm/bridge/tc358767.c | 6 +++---
drivers/gpu/drm/bridge/ti-sn65dsi86.c | 2 +-
drivers/gpu/drm/bridge/ti-tfp410.c | 6 +++---
drivers/gpu/drm/drm_bridge.c | 10 ++++------
drivers/gpu/drm/i2c/tda998x_drv.c | 2 +-
drivers/gpu/drm/mcde/mcde_dsi.c | 2 +-
drivers/gpu/drm/msm/edp/edp_bridge.c | 2 +-
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 4 ++--
drivers/gpu/drm/rcar-du/rcar_lvds.c | 3 ++-
include/drm/drm_bridge.h | 2 --
22 files changed, 35 insertions(+), 38 deletions(-)

diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
index 9e13e466e72c..009cf1fef8d4 100644
--- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
+++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
@@ -863,7 +863,7 @@ static int adv7511_bridge_attach(struct drm_bridge *bridge)
adv->connector.polled = DRM_CONNECTOR_POLL_CONNECT |
DRM_CONNECTOR_POLL_DISCONNECT;

- ret = drm_connector_init(bridge->dev, &adv->connector,
+ ret = drm_connector_init(bridge->encoder->dev, &adv->connector,
&adv7511_connector_funcs,
DRM_MODE_CONNECTOR_HDMIA);
if (ret) {
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
index 9917ce0d86a0..5b806d23fcb3 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
@@ -541,7 +541,7 @@ static int anx6345_bridge_attach(struct drm_bridge *bridge)
return err;
}

- err = drm_connector_init(bridge->dev, &anx6345->connector,
+ err = drm_connector_init(bridge->encoder->dev, &anx6345->connector,
&anx6345_connector_funcs,
DRM_MODE_CONNECTOR_eDP);
if (err) {
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
index 41867be03751..7463537950cb 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
@@ -908,7 +908,7 @@ static int anx78xx_bridge_attach(struct drm_bridge *bridge)
return err;
}

- err = drm_connector_init(bridge->dev, &anx78xx->connector,
+ err = drm_connector_init(bridge->encoder->dev, &anx78xx->connector,
&anx78xx_connector_funcs,
DRM_MODE_CONNECTOR_DisplayPort);
if (err) {
diff --git a/drivers/gpu/drm/bridge/cdns-dsi.c b/drivers/gpu/drm/bridge/cdns-dsi.c
index 3a5bd4e7fd1e..32863e3ad537 100644
--- a/drivers/gpu/drm/bridge/cdns-dsi.c
+++ b/drivers/gpu/drm/bridge/cdns-dsi.c
@@ -651,7 +651,7 @@ static int cdns_dsi_bridge_attach(struct drm_bridge *bridge)
struct cdns_dsi *dsi = input_to_dsi(input);
struct cdns_dsi_output *output = &dsi->output;

- if (!drm_core_check_feature(bridge->dev, DRIVER_ATOMIC)) {
+ if (!drm_core_check_feature(bridge->encoder->dev, DRIVER_ATOMIC)) {
dev_err(dsi->base.dev,
"cdns-dsi driver is only compatible with DRM devices supporting atomic updates");
return -ENOTSUPP;
diff --git a/drivers/gpu/drm/bridge/dumb-vga-dac.c b/drivers/gpu/drm/bridge/dumb-vga-dac.c
index cc33dc411b9e..67ad6cecf68d 100644
--- a/drivers/gpu/drm/bridge/dumb-vga-dac.c
+++ b/drivers/gpu/drm/bridge/dumb-vga-dac.c
@@ -112,7 +112,7 @@ static int dumb_vga_attach(struct drm_bridge *bridge)

drm_connector_helper_add(&vga->connector,
&dumb_vga_con_helper_funcs);
- ret = drm_connector_init_with_ddc(bridge->dev, &vga->connector,
+ ret = drm_connector_init_with_ddc(bridge->encoder->dev, &vga->connector,
&dumb_vga_con_funcs,
DRM_MODE_CONNECTOR_VGA,
vga->ddc);
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..c914f01e4707 100644
--- a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
+++ b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
@@ -223,7 +223,7 @@ static int ge_b850v3_lvds_attach(struct drm_bridge *bridge)
drm_connector_helper_add(connector,
&ge_b850v3_lvds_connector_helper_funcs);

- ret = drm_connector_init(bridge->dev, connector,
+ ret = drm_connector_init(bridge->encoder->dev, connector,
&ge_b850v3_lvds_connector_funcs,
DRM_MODE_CONNECTOR_DisplayPort);
if (ret) {
diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c
index 57ff01339559..3999bb864eb9 100644
--- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
+++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
@@ -247,7 +247,7 @@ static int ptn3460_bridge_attach(struct drm_bridge *bridge)
}

ptn_bridge->connector.polled = DRM_CONNECTOR_POLL_HPD;
- ret = drm_connector_init(bridge->dev, &ptn_bridge->connector,
+ ret = drm_connector_init(bridge->encoder->dev, &ptn_bridge->connector,
&ptn3460_connector_funcs, DRM_MODE_CONNECTOR_LVDS);
if (ret) {
DRM_ERROR("Failed to initialize connector with drm\n");
diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c
index f66777e24968..4ba4e9d9537a 100644
--- a/drivers/gpu/drm/bridge/panel.c
+++ b/drivers/gpu/drm/bridge/panel.c
@@ -67,7 +67,7 @@ static int panel_bridge_attach(struct drm_bridge *bridge)
drm_connector_helper_add(connector,
&panel_bridge_connector_helper_funcs);

- ret = drm_connector_init(bridge->dev, connector,
+ ret = drm_connector_init(bridge->encoder->dev, connector,
&panel_bridge_connector_funcs,
panel_bridge->connector_type);
if (ret) {
diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c b/drivers/gpu/drm/bridge/parade-ps8622.c
index 10c47c008b40..c32af9c2bbcc 100644
--- a/drivers/gpu/drm/bridge/parade-ps8622.c
+++ b/drivers/gpu/drm/bridge/parade-ps8622.c
@@ -487,7 +487,7 @@ static int ps8622_attach(struct drm_bridge *bridge)
}

ps8622->connector.polled = DRM_CONNECTOR_POLL_HPD;
- ret = drm_connector_init(bridge->dev, &ps8622->connector,
+ ret = drm_connector_init(bridge->encoder->dev, &ps8622->connector,
&ps8622_connector_funcs, DRM_MODE_CONNECTOR_LVDS);
if (ret) {
DRM_ERROR("Failed to initialize connector with drm\n");
diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c
index b70e8c5cf2e1..6ca297d78a26 100644
--- a/drivers/gpu/drm/bridge/sii902x.c
+++ b/drivers/gpu/drm/bridge/sii902x.c
@@ -402,7 +402,7 @@ static void sii902x_bridge_mode_set(struct drm_bridge *bridge,
static int sii902x_bridge_attach(struct drm_bridge *bridge)
{
struct sii902x *sii902x = bridge_to_sii902x(bridge);
- struct drm_device *drm = bridge->dev;
+ struct drm_device *drm = bridge->encoder->dev;
int ret;

drm_connector_helper_add(&sii902x->connector,
@@ -820,8 +820,8 @@ static irqreturn_t sii902x_interrupt(int irq, void *data)

mutex_unlock(&sii902x->mutex);

- if ((status & SII902X_HOTPLUG_EVENT) && sii902x->bridge.dev)
- drm_helper_hpd_irq_event(sii902x->bridge.dev);
+ if ((status & SII902X_HOTPLUG_EVENT) && sii902x->bridge.encoder)
+ drm_helper_hpd_irq_event(sii902x->bridge.encoder->dev);

return IRQ_HANDLED;
}
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index dbe38a54870b..99274ca0fdf6 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -2346,7 +2346,7 @@ static int dw_hdmi_bridge_attach(struct drm_bridge *bridge)

drm_connector_helper_add(connector, &dw_hdmi_connector_helper_funcs);

- drm_connector_init_with_ddc(bridge->dev, connector,
+ drm_connector_init_with_ddc(bridge->encoder->dev, connector,
&dw_hdmi_connector_funcs,
DRM_MODE_CONNECTOR_HDMIA,
hdmi->ddc);
@@ -2554,8 +2554,8 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id)
if (intr_stat & HDMI_IH_PHY_STAT0_HPD) {
dev_dbg(hdmi->dev, "EVENT=%s\n",
phy_int_pol & HDMI_PHY_HPD ? "plugin" : "plugout");
- if (hdmi->bridge.dev)
- drm_helper_hpd_irq_event(hdmi->bridge.dev);
+ if (hdmi->bridge.encoder)
+ drm_helper_hpd_irq_event(hdmi->bridge.encoder->dev);
}

hdmi_writeb(hdmi, intr_stat, HDMI_IH_PHY_STAT0);
diff --git a/drivers/gpu/drm/bridge/tc358764.c b/drivers/gpu/drm/bridge/tc358764.c
index 96207fcfde19..e35e17b1f396 100644
--- a/drivers/gpu/drm/bridge/tc358764.c
+++ b/drivers/gpu/drm/bridge/tc358764.c
@@ -352,7 +352,7 @@ static void tc358764_enable(struct drm_bridge *bridge)
static int tc358764_attach(struct drm_bridge *bridge)
{
struct tc358764 *ctx = bridge_to_tc358764(bridge);
- struct drm_device *drm = bridge->dev;
+ struct drm_device *drm = bridge->encoder->dev;
int ret;

ctx->connector.polled = DRM_CONNECTOR_POLL_HPD;
@@ -378,7 +378,7 @@ static int tc358764_attach(struct drm_bridge *bridge)
static void tc358764_detach(struct drm_bridge *bridge)
{
struct tc358764 *ctx = bridge_to_tc358764(bridge);
- struct drm_device *drm = bridge->dev;
+ struct drm_device *drm = bridge->encoder->dev;

drm_connector_unregister(&ctx->connector);
drm_fb_helper_remove_one_connector(drm->fb_helper, &ctx->connector);
diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
index 3709e5ace724..ab1524c00777 100644
--- a/drivers/gpu/drm/bridge/tc358767.c
+++ b/drivers/gpu/drm/bridge/tc358767.c
@@ -1407,7 +1407,7 @@ static int tc_bridge_attach(struct drm_bridge *bridge)
{
u32 bus_format = MEDIA_BUS_FMT_RGB888_1X24;
struct tc_data *tc = bridge_to_tc(bridge);
- struct drm_device *drm = bridge->dev;
+ struct drm_device *drm = bridge->encoder->dev;
int ret;

/* Create DP/eDP connector */
@@ -1514,7 +1514,7 @@ static irqreturn_t tc_irq_handler(int irq, void *arg)
dev_err(tc->dev, "syserr %x\n", stat);
}

- if (tc->hpd_pin >= 0 && tc->bridge.dev) {
+ if (tc->hpd_pin >= 0 && tc->bridge.encoder) {
/*
* H is triggered when the GPIO goes high.
*
@@ -1528,7 +1528,7 @@ static irqreturn_t tc_irq_handler(int irq, void *arg)
h ? "H" : "", lc ? "LC" : "");

if (h || lc)
- drm_kms_helper_hotplug_event(tc->bridge.dev);
+ drm_kms_helper_hotplug_event(tc->bridge.encoder->dev);
}

regmap_write(tc->regmap, INTSTS_G, val);
diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
index 9a2dd986afa5..8a4e64cfca1e 100644
--- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
@@ -275,7 +275,7 @@ static int ti_sn_bridge_attach(struct drm_bridge *bridge)
.node = NULL,
};

- ret = drm_connector_init(bridge->dev, &pdata->connector,
+ ret = drm_connector_init(bridge->encoder->dev, &pdata->connector,
&ti_sn_bridge_connector_funcs,
DRM_MODE_CONNECTOR_eDP);
if (ret) {
diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
index aa3198dc9903..76229367e2f4 100644
--- a/drivers/gpu/drm/bridge/ti-tfp410.c
+++ b/drivers/gpu/drm/bridge/ti-tfp410.c
@@ -135,7 +135,7 @@ static int tfp410_attach(struct drm_bridge *bridge)

drm_connector_helper_add(&dvi->connector,
&tfp410_con_helper_funcs);
- ret = drm_connector_init_with_ddc(bridge->dev, &dvi->connector,
+ ret = drm_connector_init_with_ddc(bridge->encoder->dev, &dvi->connector,
&tfp410_con_funcs,
dvi->connector_type,
dvi->ddc);
@@ -179,8 +179,8 @@ static void tfp410_hpd_work_func(struct work_struct *work)

dvi = container_of(work, struct tfp410, hpd_work.work);

- if (dvi->bridge.dev)
- drm_helper_hpd_irq_event(dvi->bridge.dev);
+ if (dvi->bridge.encoder)
+ drm_helper_hpd_irq_event(dvi->bridge.encoder->dev);
}

static irqreturn_t tfp410_hpd_irq_thread(int irq, void *arg)
diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
index c2cf0c90fa26..258094169706 100644
--- a/drivers/gpu/drm/drm_bridge.c
+++ b/drivers/gpu/drm/drm_bridge.c
@@ -119,13 +119,12 @@ int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
if (!encoder || !bridge)
return -EINVAL;

- if (previous && (!previous->dev || previous->encoder != encoder))
+ if (previous && previous->encoder != encoder)
return -EINVAL;

- if (bridge->dev)
+ if (bridge->encoder)
return -EBUSY;

- bridge->dev = encoder->dev;
bridge->encoder = encoder;

if (previous)
@@ -137,7 +136,6 @@ int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
ret = bridge->funcs->attach(bridge);
if (ret < 0) {
list_del(&bridge->chain_node);
- bridge->dev = NULL;
bridge->encoder = NULL;
return ret;
}
@@ -152,14 +150,14 @@ void drm_bridge_detach(struct drm_bridge *bridge)
if (WARN_ON(!bridge))
return;

- if (WARN_ON(!bridge->dev))
+ if (WARN_ON(!bridge->encoder))
return;

if (bridge->funcs->detach)
bridge->funcs->detach(bridge);

list_del(&bridge->chain_node);
- bridge->dev = NULL;
+ bridge->encoder = NULL;
}

/**
diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index a63790d32d75..17a66ef3dfd4 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1360,7 +1360,7 @@ static int tda998x_bridge_attach(struct drm_bridge *bridge)
{
struct tda998x_priv *priv = bridge_to_tda998x_priv(bridge);

- return tda998x_connector_init(priv, bridge->dev);
+ return tda998x_connector_init(priv, bridge->encoder->dev);
}

static void tda998x_bridge_detach(struct drm_bridge *bridge)
diff --git a/drivers/gpu/drm/mcde/mcde_dsi.c b/drivers/gpu/drm/mcde/mcde_dsi.c
index 32e94bcb4a69..276a77c020c7 100644
--- a/drivers/gpu/drm/mcde/mcde_dsi.c
+++ b/drivers/gpu/drm/mcde/mcde_dsi.c
@@ -989,7 +989,7 @@ static void mcde_dsi_bridge_disable(struct drm_bridge *bridge)
static int mcde_dsi_bridge_attach(struct drm_bridge *bridge)
{
struct mcde_dsi *d = bridge_to_mcde_dsi(bridge);
- struct drm_device *drm = bridge->dev;
+ struct drm_device *drm = bridge->encoder->dev;
int ret;

if (!drm_core_check_feature(drm, DRIVER_ATOMIC)) {
diff --git a/drivers/gpu/drm/msm/edp/edp_bridge.c b/drivers/gpu/drm/msm/edp/edp_bridge.c
index b65b5cc2dba2..301dd7a80bde 100644
--- a/drivers/gpu/drm/msm/edp/edp_bridge.c
+++ b/drivers/gpu/drm/msm/edp/edp_bridge.c
@@ -47,7 +47,7 @@ static void edp_bridge_mode_set(struct drm_bridge *bridge,
const struct drm_display_mode *mode,
const struct drm_display_mode *adjusted_mode)
{
- struct drm_device *dev = bridge->dev;
+ struct drm_device *dev = bridge->encoder->dev;
struct drm_connector *connector;
struct edp_bridge *edp_bridge = to_edp_bridge(bridge);
struct msm_edp *edp = edp_bridge->edp;
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
index ba81338a9bf8..07c098dce310 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
@@ -20,7 +20,7 @@ void msm_hdmi_bridge_destroy(struct drm_bridge *bridge)

static void msm_hdmi_power_on(struct drm_bridge *bridge)
{
- struct drm_device *dev = bridge->dev;
+ struct drm_device *dev = bridge->encoder->dev;
struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge);
struct hdmi *hdmi = hdmi_bridge->hdmi;
const struct hdmi_platform_config *config = hdmi->config;
@@ -56,7 +56,7 @@ static void msm_hdmi_power_on(struct drm_bridge *bridge)

static void power_off(struct drm_bridge *bridge)
{
- struct drm_device *dev = bridge->dev;
+ struct drm_device *dev = bridge->encoder->dev;
struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge);
struct hdmi *hdmi = hdmi_bridge->hdmi;
const struct hdmi_platform_config *config = hdmi->config;
diff --git a/drivers/gpu/drm/rcar-du/rcar_lvds.c b/drivers/gpu/drm/rcar-du/rcar_lvds.c
index 2cf44b91853c..83538125a722 100644
--- a/drivers/gpu/drm/rcar-du/rcar_lvds.c
+++ b/drivers/gpu/drm/rcar-du/rcar_lvds.c
@@ -622,7 +622,8 @@ static int rcar_lvds_attach(struct drm_bridge *bridge)
if (!lvds->panel)
return 0;

- ret = drm_connector_init(bridge->dev, connector, &rcar_lvds_conn_funcs,
+ ret = drm_connector_init(bridge->encoder->dev, connector,
+ &rcar_lvds_conn_funcs,
DRM_MODE_CONNECTOR_LVDS);
if (ret < 0)
return ret;
diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index 694e153a7531..695d0898df38 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -380,8 +380,6 @@ struct drm_bridge_timings {
* struct drm_bridge - central DRM bridge control structure
*/
struct drm_bridge {
- /** @dev: DRM device this bridge belongs to */
- struct drm_device *dev;
/** @encoder: encoder to which this bridge is connected */
struct drm_encoder *encoder;
/** @chain_node: used to form a bridge chain */
--
2.24.0

2019-12-24 17:42:10

by Mihail Atanassov

[permalink] [raw]
Subject: [PATCH v3 RESEND 01/35] drm: Remove drm_bridge->dev

As suggested in [1], the 'dev' field is a bit repetitive, since it 1:1
follows the setting and NULLing of the 'encoder' field. Therefore, use
drm_bridge->encoder->dev in place of drm_bridge->dev.

[1] https://patchwork.freedesktop.org/patch/343824/

v3:
- resend as part of drm_bridge_init() series
v2:
- fix checkpatch complaint about unnecessary parentheses in
drm_bridge.c

Cc: Daniel Vetter <[email protected]>
Suggested-by: Thomas Zimmermann <[email protected]>
Acked-by: Thomas Zimmermann <[email protected]>
Signed-off-by: Mihail Atanassov <[email protected]>
---
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 2 +-
drivers/gpu/drm/bridge/analogix/analogix-anx6345.c | 2 +-
drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c | 2 +-
drivers/gpu/drm/bridge/cdns-dsi.c | 2 +-
drivers/gpu/drm/bridge/dumb-vga-dac.c | 2 +-
.../gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 2 +-
drivers/gpu/drm/bridge/nxp-ptn3460.c | 2 +-
drivers/gpu/drm/bridge/panel.c | 2 +-
drivers/gpu/drm/bridge/parade-ps8622.c | 2 +-
drivers/gpu/drm/bridge/sii902x.c | 6 +++---
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 6 +++---
drivers/gpu/drm/bridge/tc358764.c | 4 ++--
drivers/gpu/drm/bridge/tc358767.c | 6 +++---
drivers/gpu/drm/bridge/ti-sn65dsi86.c | 2 +-
drivers/gpu/drm/bridge/ti-tfp410.c | 6 +++---
drivers/gpu/drm/drm_bridge.c | 10 ++++------
drivers/gpu/drm/i2c/tda998x_drv.c | 2 +-
drivers/gpu/drm/mcde/mcde_dsi.c | 2 +-
drivers/gpu/drm/msm/edp/edp_bridge.c | 2 +-
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 4 ++--
drivers/gpu/drm/rcar-du/rcar_lvds.c | 3 ++-
include/drm/drm_bridge.h | 2 --
22 files changed, 35 insertions(+), 38 deletions(-)

diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
index 9e13e466e72c..009cf1fef8d4 100644
--- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
+++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
@@ -863,7 +863,7 @@ static int adv7511_bridge_attach(struct drm_bridge *bridge)
adv->connector.polled = DRM_CONNECTOR_POLL_CONNECT |
DRM_CONNECTOR_POLL_DISCONNECT;

- ret = drm_connector_init(bridge->dev, &adv->connector,
+ ret = drm_connector_init(bridge->encoder->dev, &adv->connector,
&adv7511_connector_funcs,
DRM_MODE_CONNECTOR_HDMIA);
if (ret) {
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
index 9917ce0d86a0..5b806d23fcb3 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
@@ -541,7 +541,7 @@ static int anx6345_bridge_attach(struct drm_bridge *bridge)
return err;
}

- err = drm_connector_init(bridge->dev, &anx6345->connector,
+ err = drm_connector_init(bridge->encoder->dev, &anx6345->connector,
&anx6345_connector_funcs,
DRM_MODE_CONNECTOR_eDP);
if (err) {
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
index 41867be03751..7463537950cb 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
@@ -908,7 +908,7 @@ static int anx78xx_bridge_attach(struct drm_bridge *bridge)
return err;
}

- err = drm_connector_init(bridge->dev, &anx78xx->connector,
+ err = drm_connector_init(bridge->encoder->dev, &anx78xx->connector,
&anx78xx_connector_funcs,
DRM_MODE_CONNECTOR_DisplayPort);
if (err) {
diff --git a/drivers/gpu/drm/bridge/cdns-dsi.c b/drivers/gpu/drm/bridge/cdns-dsi.c
index 3a5bd4e7fd1e..32863e3ad537 100644
--- a/drivers/gpu/drm/bridge/cdns-dsi.c
+++ b/drivers/gpu/drm/bridge/cdns-dsi.c
@@ -651,7 +651,7 @@ static int cdns_dsi_bridge_attach(struct drm_bridge *bridge)
struct cdns_dsi *dsi = input_to_dsi(input);
struct cdns_dsi_output *output = &dsi->output;

- if (!drm_core_check_feature(bridge->dev, DRIVER_ATOMIC)) {
+ if (!drm_core_check_feature(bridge->encoder->dev, DRIVER_ATOMIC)) {
dev_err(dsi->base.dev,
"cdns-dsi driver is only compatible with DRM devices supporting atomic updates");
return -ENOTSUPP;
diff --git a/drivers/gpu/drm/bridge/dumb-vga-dac.c b/drivers/gpu/drm/bridge/dumb-vga-dac.c
index cc33dc411b9e..67ad6cecf68d 100644
--- a/drivers/gpu/drm/bridge/dumb-vga-dac.c
+++ b/drivers/gpu/drm/bridge/dumb-vga-dac.c
@@ -112,7 +112,7 @@ static int dumb_vga_attach(struct drm_bridge *bridge)

drm_connector_helper_add(&vga->connector,
&dumb_vga_con_helper_funcs);
- ret = drm_connector_init_with_ddc(bridge->dev, &vga->connector,
+ ret = drm_connector_init_with_ddc(bridge->encoder->dev, &vga->connector,
&dumb_vga_con_funcs,
DRM_MODE_CONNECTOR_VGA,
vga->ddc);
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..c914f01e4707 100644
--- a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
+++ b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
@@ -223,7 +223,7 @@ static int ge_b850v3_lvds_attach(struct drm_bridge *bridge)
drm_connector_helper_add(connector,
&ge_b850v3_lvds_connector_helper_funcs);

- ret = drm_connector_init(bridge->dev, connector,
+ ret = drm_connector_init(bridge->encoder->dev, connector,
&ge_b850v3_lvds_connector_funcs,
DRM_MODE_CONNECTOR_DisplayPort);
if (ret) {
diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c
index 57ff01339559..3999bb864eb9 100644
--- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
+++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
@@ -247,7 +247,7 @@ static int ptn3460_bridge_attach(struct drm_bridge *bridge)
}

ptn_bridge->connector.polled = DRM_CONNECTOR_POLL_HPD;
- ret = drm_connector_init(bridge->dev, &ptn_bridge->connector,
+ ret = drm_connector_init(bridge->encoder->dev, &ptn_bridge->connector,
&ptn3460_connector_funcs, DRM_MODE_CONNECTOR_LVDS);
if (ret) {
DRM_ERROR("Failed to initialize connector with drm\n");
diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c
index f66777e24968..4ba4e9d9537a 100644
--- a/drivers/gpu/drm/bridge/panel.c
+++ b/drivers/gpu/drm/bridge/panel.c
@@ -67,7 +67,7 @@ static int panel_bridge_attach(struct drm_bridge *bridge)
drm_connector_helper_add(connector,
&panel_bridge_connector_helper_funcs);

- ret = drm_connector_init(bridge->dev, connector,
+ ret = drm_connector_init(bridge->encoder->dev, connector,
&panel_bridge_connector_funcs,
panel_bridge->connector_type);
if (ret) {
diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c b/drivers/gpu/drm/bridge/parade-ps8622.c
index 10c47c008b40..c32af9c2bbcc 100644
--- a/drivers/gpu/drm/bridge/parade-ps8622.c
+++ b/drivers/gpu/drm/bridge/parade-ps8622.c
@@ -487,7 +487,7 @@ static int ps8622_attach(struct drm_bridge *bridge)
}

ps8622->connector.polled = DRM_CONNECTOR_POLL_HPD;
- ret = drm_connector_init(bridge->dev, &ps8622->connector,
+ ret = drm_connector_init(bridge->encoder->dev, &ps8622->connector,
&ps8622_connector_funcs, DRM_MODE_CONNECTOR_LVDS);
if (ret) {
DRM_ERROR("Failed to initialize connector with drm\n");
diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c
index b70e8c5cf2e1..6ca297d78a26 100644
--- a/drivers/gpu/drm/bridge/sii902x.c
+++ b/drivers/gpu/drm/bridge/sii902x.c
@@ -402,7 +402,7 @@ static void sii902x_bridge_mode_set(struct drm_bridge *bridge,
static int sii902x_bridge_attach(struct drm_bridge *bridge)
{
struct sii902x *sii902x = bridge_to_sii902x(bridge);
- struct drm_device *drm = bridge->dev;
+ struct drm_device *drm = bridge->encoder->dev;
int ret;

drm_connector_helper_add(&sii902x->connector,
@@ -820,8 +820,8 @@ static irqreturn_t sii902x_interrupt(int irq, void *data)

mutex_unlock(&sii902x->mutex);

- if ((status & SII902X_HOTPLUG_EVENT) && sii902x->bridge.dev)
- drm_helper_hpd_irq_event(sii902x->bridge.dev);
+ if ((status & SII902X_HOTPLUG_EVENT) && sii902x->bridge.encoder)
+ drm_helper_hpd_irq_event(sii902x->bridge.encoder->dev);

return IRQ_HANDLED;
}
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index dbe38a54870b..99274ca0fdf6 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -2346,7 +2346,7 @@ static int dw_hdmi_bridge_attach(struct drm_bridge *bridge)

drm_connector_helper_add(connector, &dw_hdmi_connector_helper_funcs);

- drm_connector_init_with_ddc(bridge->dev, connector,
+ drm_connector_init_with_ddc(bridge->encoder->dev, connector,
&dw_hdmi_connector_funcs,
DRM_MODE_CONNECTOR_HDMIA,
hdmi->ddc);
@@ -2554,8 +2554,8 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id)
if (intr_stat & HDMI_IH_PHY_STAT0_HPD) {
dev_dbg(hdmi->dev, "EVENT=%s\n",
phy_int_pol & HDMI_PHY_HPD ? "plugin" : "plugout");
- if (hdmi->bridge.dev)
- drm_helper_hpd_irq_event(hdmi->bridge.dev);
+ if (hdmi->bridge.encoder)
+ drm_helper_hpd_irq_event(hdmi->bridge.encoder->dev);
}

hdmi_writeb(hdmi, intr_stat, HDMI_IH_PHY_STAT0);
diff --git a/drivers/gpu/drm/bridge/tc358764.c b/drivers/gpu/drm/bridge/tc358764.c
index 96207fcfde19..e35e17b1f396 100644
--- a/drivers/gpu/drm/bridge/tc358764.c
+++ b/drivers/gpu/drm/bridge/tc358764.c
@@ -352,7 +352,7 @@ static void tc358764_enable(struct drm_bridge *bridge)
static int tc358764_attach(struct drm_bridge *bridge)
{
struct tc358764 *ctx = bridge_to_tc358764(bridge);
- struct drm_device *drm = bridge->dev;
+ struct drm_device *drm = bridge->encoder->dev;
int ret;

ctx->connector.polled = DRM_CONNECTOR_POLL_HPD;
@@ -378,7 +378,7 @@ static int tc358764_attach(struct drm_bridge *bridge)
static void tc358764_detach(struct drm_bridge *bridge)
{
struct tc358764 *ctx = bridge_to_tc358764(bridge);
- struct drm_device *drm = bridge->dev;
+ struct drm_device *drm = bridge->encoder->dev;

drm_connector_unregister(&ctx->connector);
drm_fb_helper_remove_one_connector(drm->fb_helper, &ctx->connector);
diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
index 3709e5ace724..ab1524c00777 100644
--- a/drivers/gpu/drm/bridge/tc358767.c
+++ b/drivers/gpu/drm/bridge/tc358767.c
@@ -1407,7 +1407,7 @@ static int tc_bridge_attach(struct drm_bridge *bridge)
{
u32 bus_format = MEDIA_BUS_FMT_RGB888_1X24;
struct tc_data *tc = bridge_to_tc(bridge);
- struct drm_device *drm = bridge->dev;
+ struct drm_device *drm = bridge->encoder->dev;
int ret;

/* Create DP/eDP connector */
@@ -1514,7 +1514,7 @@ static irqreturn_t tc_irq_handler(int irq, void *arg)
dev_err(tc->dev, "syserr %x\n", stat);
}

- if (tc->hpd_pin >= 0 && tc->bridge.dev) {
+ if (tc->hpd_pin >= 0 && tc->bridge.encoder) {
/*
* H is triggered when the GPIO goes high.
*
@@ -1528,7 +1528,7 @@ static irqreturn_t tc_irq_handler(int irq, void *arg)
h ? "H" : "", lc ? "LC" : "");

if (h || lc)
- drm_kms_helper_hotplug_event(tc->bridge.dev);
+ drm_kms_helper_hotplug_event(tc->bridge.encoder->dev);
}

regmap_write(tc->regmap, INTSTS_G, val);
diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
index 9a2dd986afa5..8a4e64cfca1e 100644
--- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
@@ -275,7 +275,7 @@ static int ti_sn_bridge_attach(struct drm_bridge *bridge)
.node = NULL,
};

- ret = drm_connector_init(bridge->dev, &pdata->connector,
+ ret = drm_connector_init(bridge->encoder->dev, &pdata->connector,
&ti_sn_bridge_connector_funcs,
DRM_MODE_CONNECTOR_eDP);
if (ret) {
diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
index aa3198dc9903..76229367e2f4 100644
--- a/drivers/gpu/drm/bridge/ti-tfp410.c
+++ b/drivers/gpu/drm/bridge/ti-tfp410.c
@@ -135,7 +135,7 @@ static int tfp410_attach(struct drm_bridge *bridge)

drm_connector_helper_add(&dvi->connector,
&tfp410_con_helper_funcs);
- ret = drm_connector_init_with_ddc(bridge->dev, &dvi->connector,
+ ret = drm_connector_init_with_ddc(bridge->encoder->dev, &dvi->connector,
&tfp410_con_funcs,
dvi->connector_type,
dvi->ddc);
@@ -179,8 +179,8 @@ static void tfp410_hpd_work_func(struct work_struct *work)

dvi = container_of(work, struct tfp410, hpd_work.work);

- if (dvi->bridge.dev)
- drm_helper_hpd_irq_event(dvi->bridge.dev);
+ if (dvi->bridge.encoder)
+ drm_helper_hpd_irq_event(dvi->bridge.encoder->dev);
}

static irqreturn_t tfp410_hpd_irq_thread(int irq, void *arg)
diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
index c2cf0c90fa26..258094169706 100644
--- a/drivers/gpu/drm/drm_bridge.c
+++ b/drivers/gpu/drm/drm_bridge.c
@@ -119,13 +119,12 @@ int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
if (!encoder || !bridge)
return -EINVAL;

- if (previous && (!previous->dev || previous->encoder != encoder))
+ if (previous && previous->encoder != encoder)
return -EINVAL;

- if (bridge->dev)
+ if (bridge->encoder)
return -EBUSY;

- bridge->dev = encoder->dev;
bridge->encoder = encoder;

if (previous)
@@ -137,7 +136,6 @@ int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
ret = bridge->funcs->attach(bridge);
if (ret < 0) {
list_del(&bridge->chain_node);
- bridge->dev = NULL;
bridge->encoder = NULL;
return ret;
}
@@ -152,14 +150,14 @@ void drm_bridge_detach(struct drm_bridge *bridge)
if (WARN_ON(!bridge))
return;

- if (WARN_ON(!bridge->dev))
+ if (WARN_ON(!bridge->encoder))
return;

if (bridge->funcs->detach)
bridge->funcs->detach(bridge);

list_del(&bridge->chain_node);
- bridge->dev = NULL;
+ bridge->encoder = NULL;
}

/**
diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index a63790d32d75..17a66ef3dfd4 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1360,7 +1360,7 @@ static int tda998x_bridge_attach(struct drm_bridge *bridge)
{
struct tda998x_priv *priv = bridge_to_tda998x_priv(bridge);

- return tda998x_connector_init(priv, bridge->dev);
+ return tda998x_connector_init(priv, bridge->encoder->dev);
}

static void tda998x_bridge_detach(struct drm_bridge *bridge)
diff --git a/drivers/gpu/drm/mcde/mcde_dsi.c b/drivers/gpu/drm/mcde/mcde_dsi.c
index 32e94bcb4a69..276a77c020c7 100644
--- a/drivers/gpu/drm/mcde/mcde_dsi.c
+++ b/drivers/gpu/drm/mcde/mcde_dsi.c
@@ -989,7 +989,7 @@ static void mcde_dsi_bridge_disable(struct drm_bridge *bridge)
static int mcde_dsi_bridge_attach(struct drm_bridge *bridge)
{
struct mcde_dsi *d = bridge_to_mcde_dsi(bridge);
- struct drm_device *drm = bridge->dev;
+ struct drm_device *drm = bridge->encoder->dev;
int ret;

if (!drm_core_check_feature(drm, DRIVER_ATOMIC)) {
diff --git a/drivers/gpu/drm/msm/edp/edp_bridge.c b/drivers/gpu/drm/msm/edp/edp_bridge.c
index b65b5cc2dba2..301dd7a80bde 100644
--- a/drivers/gpu/drm/msm/edp/edp_bridge.c
+++ b/drivers/gpu/drm/msm/edp/edp_bridge.c
@@ -47,7 +47,7 @@ static void edp_bridge_mode_set(struct drm_bridge *bridge,
const struct drm_display_mode *mode,
const struct drm_display_mode *adjusted_mode)
{
- struct drm_device *dev = bridge->dev;
+ struct drm_device *dev = bridge->encoder->dev;
struct drm_connector *connector;
struct edp_bridge *edp_bridge = to_edp_bridge(bridge);
struct msm_edp *edp = edp_bridge->edp;
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
index ba81338a9bf8..07c098dce310 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
@@ -20,7 +20,7 @@ void msm_hdmi_bridge_destroy(struct drm_bridge *bridge)

static void msm_hdmi_power_on(struct drm_bridge *bridge)
{
- struct drm_device *dev = bridge->dev;
+ struct drm_device *dev = bridge->encoder->dev;
struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge);
struct hdmi *hdmi = hdmi_bridge->hdmi;
const struct hdmi_platform_config *config = hdmi->config;
@@ -56,7 +56,7 @@ static void msm_hdmi_power_on(struct drm_bridge *bridge)

static void power_off(struct drm_bridge *bridge)
{
- struct drm_device *dev = bridge->dev;
+ struct drm_device *dev = bridge->encoder->dev;
struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge);
struct hdmi *hdmi = hdmi_bridge->hdmi;
const struct hdmi_platform_config *config = hdmi->config;
diff --git a/drivers/gpu/drm/rcar-du/rcar_lvds.c b/drivers/gpu/drm/rcar-du/rcar_lvds.c
index 2cf44b91853c..83538125a722 100644
--- a/drivers/gpu/drm/rcar-du/rcar_lvds.c
+++ b/drivers/gpu/drm/rcar-du/rcar_lvds.c
@@ -622,7 +622,8 @@ static int rcar_lvds_attach(struct drm_bridge *bridge)
if (!lvds->panel)
return 0;

- ret = drm_connector_init(bridge->dev, connector, &rcar_lvds_conn_funcs,
+ ret = drm_connector_init(bridge->encoder->dev, connector,
+ &rcar_lvds_conn_funcs,
DRM_MODE_CONNECTOR_LVDS);
if (ret < 0)
return ret;
diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index 694e153a7531..695d0898df38 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -380,8 +380,6 @@ struct drm_bridge_timings {
* struct drm_bridge - central DRM bridge control structure
*/
struct drm_bridge {
- /** @dev: DRM device this bridge belongs to */
- struct drm_device *dev;
/** @encoder: encoder to which this bridge is connected */
struct drm_encoder *encoder;
/** @chain_node: used to form a bridge chain */
--
2.24.0