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.