diff mbox series

drm: remove drm_bridge->dev

Message ID 20191210151111.21510-1-mihail.atanassov@arm.com (mailing list archive)
State New
Delegated to: Kieran Bingham
Headers show
Series drm: remove drm_bridge->dev | expand

Commit Message

Mihail Atanassov Dec. 10, 2019, 3:11 p.m. UTC
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/

Cc: Daniel Vetter <daniel@ffwll.ch>
Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
---
 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(-)

Comments

Thomas Zimmermann Dec. 10, 2019, 3:25 p.m. UTC | #1
Am 10.12.19 um 16:11 schrieb Mihail Atanassov:
> 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/
> 
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
> Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>

Nice.

Acked-by: Thomas Zimmermann

> ---
>  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..eaa20804b038 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 42fff811653e..c08d7ede9fb8 100644
> --- a/drivers/gpu/drm/mcde/mcde_dsi.c
> +++ b/drivers/gpu/drm/mcde/mcde_dsi.c
> @@ -846,7 +846,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 */
>
Thomas Zimmermann Dec. 10, 2019, 3:26 p.m. UTC | #2
Am 10.12.19 um 16:25 schrieb Thomas Zimmermann:
> 
> 
> Am 10.12.19 um 16:11 schrieb Mihail Atanassov:
>> 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/
>>
>> Cc: Daniel Vetter <daniel@ffwll.ch>
>> Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
>> Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
> 
> Nice.
> 
> Acked-by: Thomas Zimmermann

Acked-by: Thomas Zimmermann <tzimmermann@suse.de>

> 
>> ---
>>  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..eaa20804b038 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 42fff811653e..c08d7ede9fb8 100644
>> --- a/drivers/gpu/drm/mcde/mcde_dsi.c
>> +++ b/drivers/gpu/drm/mcde/mcde_dsi.c
>> @@ -846,7 +846,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 */
>>
>
Thomas Zimmermann Dec. 11, 2019, 7:38 a.m. UTC | #3
Hi

Am 10.12.19 um 16:11 schrieb Mihail Atanassov:
> 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/
> 
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
> Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>

Do you need help with merging the patch?

Best regards
Thomas

> ---
>  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..eaa20804b038 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 42fff811653e..c08d7ede9fb8 100644
> --- a/drivers/gpu/drm/mcde/mcde_dsi.c
> +++ b/drivers/gpu/drm/mcde/mcde_dsi.c
> @@ -846,7 +846,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 */
>
Mihail Atanassov Dec. 11, 2019, 11:01 a.m. UTC | #4
Hi,

On Wednesday, 11 December 2019 07:38:29 GMT Thomas Zimmermann wrote:
> Hi
> 
> Am 10.12.19 um 16:11 schrieb Mihail Atanassov:
> > 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/
> > 
> > Cc: Daniel Vetter <daniel@ffwll.ch>
> > Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
> > Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
> 
> Do you need help with merging the patch?

I've push rights to drm-misc-next, I'll handle it Soon(tm)/today. Thanks for
the offer, though :).

> 
> Best regards
> Thomas
> 
> > ---
> >  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..eaa20804b038 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 42fff811653e..c08d7ede9fb8 100644
> > --- a/drivers/gpu/drm/mcde/mcde_dsi.c
> > +++ b/drivers/gpu/drm/mcde/mcde_dsi.c
> > @@ -846,7 +846,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 */
> > 
> 
>
diff mbox series

Patch

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..eaa20804b038 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 42fff811653e..c08d7ede9fb8 100644
--- a/drivers/gpu/drm/mcde/mcde_dsi.c
+++ b/drivers/gpu/drm/mcde/mcde_dsi.c
@@ -846,7 +846,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 */