On Wed, Apr 01, 2015 at 11:49:27AM +0300, Jyri Sarha wrote:
Add support for an external compontised DRM encoder. The external encoder can be connected to tilcdc trough device tree graph binding. The binding document for tilcdc has been updated. The current implementation supports only tda998x encoder.
To be able to filter out the unsupported video modes the tilcdc driver needs to hijack the external connectors helper functions. The tilcdc installes new helper functions that are otherwise identical to orignals, but the mode_valid() call-back check the mode first localy, before calling the original call-back. The tilcdc dirver restores the original helper functions before it is unbound from the external device.
This is where the DRM model is weak - we don't really have a way to say "this is the set of CRTCs which /can/ be associated with this connector, can any of the CRTCs accept this mode?" and eliminate modes which fail that check.
This problem seems to be one which recurrs, so I wonder if it's something which ought to be solved properly.
It's made slightly more difficult because we don't really know which connectors could be associated with which CRTCs - that information is stored at the encoder level (with the encoders possible_crtcs), and I'm not sure we have a way for generic DRM code to know which encoders could be associated with which connectors.