• Chen-Yu Tsai's avatar
    drm/sun4i: Initialize crtc from tcon bind function · 46cce6da
    Chen-Yu Tsai authored
    The tcon provides part of the functionality of the crtc, and also
    provides the device node for the output port of the crtc. To be able
    to use drm_of_find_possible_crtcs(), all crtc must be initialized before
    any downstream encoders. The other part of the crtc is the display
    backend.
    
    The Rockchip DRM driver does this by first binding all vops, which is
    their crtc, and this step also creates the crtc objects. Then all
    remaining hardware components are bound. With the Allwinner display
    pipeline, we have multiple components comprising the crtc, and varying
    depths of the display pipeline. Since components are added with a depth
    first search of the of_graph, we can initialize the crtc object within
    the tcon bind function. Since the backend precedes the tcon, and the
    backends cannot be muxed or switched around, we can be sure that the
    associated backend is already initialized.
    
    This patch also moves the crtc pointer from the main drm_device data to
    the tcon device data. Besides the crtc callbacks, the crtc structure is
    only used within the tcon driver to signal vblank events from its
    interrupt handler.
    
    As the crtc and layer bits are now called from the tcon bits, we must
    move them from the sun4i-drm module to the sun4i-tcon module to avoid
    circular dependencies between the two modules. This is because sun4i-drm
    also calls into sun4i-tcon.
    Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
    Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
    46cce6da
sun4i_drv.c 7.83 KB