Den 10.05.2016 16:18, skrev Daniel Vetter:
On Tue, May 10, 2016 at 4:04 PM, Noralf Trønnes noralf@tronnes.org wrote:
Den 10.05.2016 11:14, skrev Jyri Sarha:
On 05/10/16 09:34, Daniel Vetter wrote:
There's a drm_simple_display_pipe floating around which seems perfectly >> suited to tilcdc. It's meant for the case where you have 1 plane, 1 >> crtc >> and 1 encoder maybe linking to different connectors. And it takes >> care of >> all the small bits for you, with a grand total of 5 callbacks, all of >> them >> optional. >> >> Might indeed be useful to rebase tilcdc on top of that, should be >> possible >> to nuke piles of code.
Looks interesting. Does it look like it is getting ready to be merged soon?
Should be landind soon, yes. Probably not for 4.7, that's closed now, but I can still pick it up into drm-misc right away when it's ready. Open review comments are all just small things, you could pick the latest version to start prototyping a conversion and there shouldn't be any surprises when you rebase onto the merged version.
Hmmm, too bad it wants to own its encoder. LCDC on Beaglebone-Black needs the componentized external tda998x driver. So at least in its current form the drm_simple_display_pipe wont work for tilcdc.
It may not be too big a job to add an external encoder support, but would it complicate currently so nice and simple driver structure too much?
How about we add an argument for encoder and if it is NULL, then the no-op encoder is used:
Hm, my idea with external transcoders was to pull them in as a drm_bridge. That's of course more work, and we already have a proliferation of different transcoder driver standards in drm unfortunately (there's drm_bridge, but als to drm_encoder_slave).
Does this mean that you want the drm_bridge_*() functions in disable_outputs(), crtc_set_mode() and drm_atomic_helper_commit_modeset_enables() to run for drm_simple_display_pipe?
Because "drm: Make drm_encoder_helper_funcs optional" skips those bridge functions if encoder->helper_private is not set (I found this pattern in mode_fixup() which skips drm_bridge_mode_fixup() on !funcs). So if that's the case, I have to add an empty drm_encoder_helper_funcs to the simple pipe.
Noralf.