Currently i915 assumes all drm_connectors it encounters are embedded in intel_connectors that i915 allocated. The drm_writeback_connector forces a design where this is not the case; we can't provide our own connector, and writeback embeds the drm_connector it initializes itself. To use drm writeback, none of the i915 connector iteration could assume the drm connector is embedded in intel_connector. Checking this is tedious, and would require an intermediate step with drm_connector. Here's an idea I came up with; filtering at the drm connector iterator level with a caller supplied function. Not too much code, and could be used for other things as well. Mind you, we'd still much rather modify drm writeback to allow passing the connector i915 allocated, instead of the current midlayer design that forces drivers to a certain model. Working around this is a bunch of error prone and tedious code that we really could do without. BR, Jani. Cc: Arun R Murthy <arun.r.murthy@xxxxxxxxx> Cc: Dave Airlie <airlied@xxxxxxxxx> Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> Cc: Suraj Kandpal <suraj.kandpal@xxxxxxxxx> Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Jani Nikula (2): drm/connector: add connector list iteration with filtering drm/i915: iterate intel_connectors only drivers/gpu/drm/drm_connector.c | 57 +++++++++++++++---- drivers/gpu/drm/i915/display/intel_display.c | 3 +- .../drm/i915/display/intel_display_types.h | 7 +++ drivers/gpu/drm/i915/display/intel_dp.c | 6 +- drivers/gpu/drm/i915/display/intel_dp_mst.c | 3 +- drivers/gpu/drm/i915/display/intel_hdcp.c | 3 +- drivers/gpu/drm/i915/display/intel_hotplug.c | 12 ++-- .../drm/i915/display/intel_modeset_setup.c | 6 +- drivers/gpu/drm/i915/display/intel_opregion.c | 9 ++- include/drm/drm_connector.h | 9 +++ 10 files changed, 89 insertions(+), 26 deletions(-) -- 2.34.1