[PATCH v5 17/52] drm: Add helper to create a connector for a chain of bridges

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sun Feb 16 15:39:32 UTC 2020


Hi Tomi,

On Tue, Jan 28, 2020 at 01:19:53PM +0200, Tomi Valkeinen wrote:
> On 24/01/2020 05:54, Laurent Pinchart wrote:
> 
> > +struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
> > +						struct drm_encoder *encoder)
> > +{
> > +	struct drm_bridge_connector *bridge_connector;
> > +	struct drm_connector *connector;
> > +	struct i2c_adapter *ddc = NULL;
> > +	struct drm_bridge *bridge;
> > +	int connector_type;
> > +
> > +	bridge_connector = kzalloc(sizeof(*bridge_connector), GFP_KERNEL);
> > +	if (!bridge_connector)
> > +		return ERR_PTR(-ENOMEM);
> > +
> > +	bridge_connector->encoder = encoder;
> > +
> > +	/*
> > +	 * TODO: Handle doublescan_allowed, stereo_allowed and
> > +	 * ycbcr_420_allowed.
> > +	 */
> > +	connector = &bridge_connector->base;
> > +	connector->interlace_allowed = true;
> > +
> > +	/*
> > +	 * Initialise connector status handling. First locate the furthest
> > +	 * bridges in the pipeline that support HPD and output detection. Then
> > +	 * initialise the connector polling mode, using HPD if available and
> > +	 * falling back to polling if supported. If neither HPD nor output
> > +	 * detection are available, we don't support hotplug detection at all.
> > +	 */
> > +	connector_type = DRM_MODE_CONNECTOR_Unknown;
> > +	drm_for_each_bridge_in_chain(encoder, bridge) {
> > +		if (bridge->interlace_allowed)
> > +			connector->interlace_allowed = false;
> 
> This doesn't work on Beagle-xM's venc output.
> 
> The above test should be !bridge->interlace_allowed.

I wonder how this passed my tests :-S I'll fix it in v6.

> But that doesn't solve it fully. We have VENC and display-connector as bridges in the beagle's VENC 
> output path. Only VENC is marked as interlace_allowed.
> 
> Setting "conn->bridge.interlace_allowed = true;" in display_connector_probe got the VENC output 
> working. But what's the correct fix here? set interlace_allowed based on connector type?

All the supported connector types (Composite, DVII, HDMIA, SVIDEO and
VGA) support interlaced modes, so I think we can just set the flag
unconditionally.

-- 
Regards,

Laurent Pinchart


More information about the dri-devel mailing list