drm: simple_kms_helper: add support for bridges
Introduce drm_simple_display_pipe_attach_bridge() and drm_simple_display_pipe_detach_bridge() in order to make it possible to use drm encoders with the simple display pipes managed by simple_kms_helpers Suggested-by: Daniel Vetter <daniel@ffwll.ch> Signed-off-by: Andrea Merello <andrea.merello@gmail.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Noralf Trønnes <noralf@tronnes.org> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: David Airlie <airlied@linux.ie> Signed-off-by: Archit Taneja <architt@codeaurora.org> Link: http://patchwork.freedesktop.org/patch/msgid/1472115874-6219-3-git-send-email-andrea.merello@gmail.com
This commit is contained in:
Родитель
4f993973d2
Коммит
315486c665
|
@ -139,6 +139,46 @@ static const struct drm_plane_funcs drm_simple_kms_plane_funcs = {
|
|||
.atomic_destroy_state = drm_atomic_helper_plane_destroy_state,
|
||||
};
|
||||
|
||||
/**
|
||||
* drm_simple_display_pipe_attach_bridge - Attach a bridge to the display pipe
|
||||
* @pipe: simple display pipe object
|
||||
* @bridge: bridge to attach
|
||||
*
|
||||
* Makes it possible to still use the drm_simple_display_pipe helpers when
|
||||
* a DRM bridge has to be used.
|
||||
*
|
||||
* Note that you probably want to initialize the pipe by passing a NULL
|
||||
* connector to drm_simple_display_pipe_init().
|
||||
*
|
||||
* Returns:
|
||||
* Zero on success, negative error code on failure.
|
||||
*/
|
||||
int drm_simple_display_pipe_attach_bridge(struct drm_simple_display_pipe *pipe,
|
||||
struct drm_bridge *bridge)
|
||||
{
|
||||
bridge->encoder = &pipe->encoder;
|
||||
pipe->encoder.bridge = bridge;
|
||||
return drm_bridge_attach(pipe->encoder.dev, bridge);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_simple_display_pipe_attach_bridge);
|
||||
|
||||
/**
|
||||
* drm_simple_display_pipe_detach_bridge - Detach the bridge from the display pipe
|
||||
* @pipe: simple display pipe object
|
||||
*
|
||||
* Detaches the drm bridge previously attached with
|
||||
* drm_simple_display_pipe_attach_bridge()
|
||||
*/
|
||||
void drm_simple_display_pipe_detach_bridge(struct drm_simple_display_pipe *pipe)
|
||||
{
|
||||
if (WARN_ON(!pipe->encoder.bridge))
|
||||
return;
|
||||
|
||||
drm_bridge_detach(pipe->encoder.bridge);
|
||||
pipe->encoder.bridge = NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_simple_display_pipe_detach_bridge);
|
||||
|
||||
/**
|
||||
* drm_simple_display_pipe_init - Initialize a simple display pipeline
|
||||
* @dev: DRM device
|
||||
|
|
|
@ -91,6 +91,11 @@ struct drm_simple_display_pipe {
|
|||
const struct drm_simple_display_pipe_funcs *funcs;
|
||||
};
|
||||
|
||||
int drm_simple_display_pipe_attach_bridge(struct drm_simple_display_pipe *pipe,
|
||||
struct drm_bridge *bridge);
|
||||
|
||||
void drm_simple_display_pipe_detach_bridge(struct drm_simple_display_pipe *pipe);
|
||||
|
||||
int drm_simple_display_pipe_init(struct drm_device *dev,
|
||||
struct drm_simple_display_pipe *pipe,
|
||||
const struct drm_simple_display_pipe_funcs *funcs,
|
||||
|
|
Загрузка…
Ссылка в новой задаче