[PATCH v7 3/8] drm: verisilicon: add a driver for Verisilicon display controllers

Icenowy Zheng zhengxingda at iscas.ac.cn
Mon Mar 9 09:51:08 PDT 2026


在 2026-03-10二的 00:35 +0800,Icenowy Zheng写道:
================ 8< ==================
> > > +	if (IS_ERR(bridge))
> > > +		return ERR_PTR(PTR_ERR(bridge));
> > > +
> > > +	bridge->crtc = crtc;
> > > +	bridge->intf = intf;
> > > +	bridge->next_bridge = next;
> > 
> > There is now a next_bridge field in struct drm_bridge, which
> > handles
> > the
> > bridge lifetime in a safer way and more simply [0], so you could
> > use
> > it:
> 
> Glad to hear such a field exists now. Will more code about
> next_bridge
> lifetime management being shared?

Looks like now many drivers can just share the .attach function,
because they're all doing the same thing:

```
int drm_bridge_attach_next(struct drm_bridge *bridge,
			   struct drm_encoder *encoder,
			   enum drm_bridge_attach_flags flags)
{
	return drm_bridge_attach(encoder, bridge->next_bridge,
				 bridge, flags);
}
```

At least vs_bridge_attach here and meson_encoder_*_attach (named
encoder but they're bridge drivers now) match this pattern (the latter
does a cast from `struct drm_bridge *` to their subclasses, but then
only accessing the `bridge` field of the subclasses and doing the same
things here).

Thanks,
Icenowy

> 
> Thanks,
> Icenowy
> 
> > 
> >        bridge->base.next_bridge = next;
> > 
> > Or, after the renames I suggested above:
> > 
> >        vbridge->bridge.next_bridge = next;
> > 
> > [0]
> > https://elixir.bootlin.com/linux/v7.0-rc2/source/include/drm/drm_bridge.h#L1269-L1278
> > 
> > Luca
> > 
> > --
> > Luca Ceresoli, Bootlin
> > Embedded Linux and Kernel engineering
> > https://bootlin.com




More information about the linux-riscv mailing list