diff options
author | Benjamin Gaignard <benjamin.gaignard@linaro.org> | 2014-12-11 11:38:59 +0100 |
---|---|---|
committer | Benjamin Gaignard <benjamin.gaignard@linaro.org> | 2014-12-11 14:00:13 +0100 |
commit | 4fdbc678fe4dc18cbf1d97e1b45660f91c3089b4 (patch) | |
tree | 4938a8517db6034910c99cad241cf8c18c20bc8b /drivers/gpu/drm/sti/sti_layer.c | |
parent | 96006a770df80d69cbde4802e1e7cdfd70c510b3 (diff) | |
download | talos-op-linux-4fdbc678fe4dc18cbf1d97e1b45660f91c3089b4.tar.gz talos-op-linux-4fdbc678fe4dc18cbf1d97e1b45660f91c3089b4.zip |
drm: sti: add HQVDP plane
High Quality Video Data Plane is hardware IP dedicated
to video rendering. Compare to GPD (graphic planes) it
have better scaler capabilities.
HQVDP use VID layer to push data into hardware compositor
without going into DDR. From data flow point of view HQVDP
and VID are nested so HQVPD update/disable VID.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
Diffstat (limited to 'drivers/gpu/drm/sti/sti_layer.c')
-rw-r--r-- | drivers/gpu/drm/sti/sti_layer.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/sti/sti_layer.c b/drivers/gpu/drm/sti/sti_layer.c index 5051b4cfc46b..480ec1c974e2 100644 --- a/drivers/gpu/drm/sti/sti_layer.c +++ b/drivers/gpu/drm/sti/sti_layer.c @@ -13,6 +13,7 @@ #include "sti_compositor.h" #include "sti_cursor.h" #include "sti_gdp.h" +#include "sti_hqvdp.h" #include "sti_layer.h" #include "sti_vid.h" @@ -33,6 +34,8 @@ const char *sti_layer_to_str(struct sti_layer *layer) return "VID1"; case STI_CURSOR: return "CURSOR"; + case STI_HQVDP_0: + return "HQVDP0"; default: return "<UNKNOWN LAYER>"; } @@ -54,6 +57,9 @@ struct sti_layer *sti_layer_create(struct device *dev, int desc, case STI_CUR: layer = sti_cursor_create(dev); break; + case STI_VDP: + layer = sti_hqvdp_create(dev); + break; } if (!layer) { @@ -72,7 +78,9 @@ struct sti_layer *sti_layer_create(struct device *dev, int desc, return layer; } -int sti_layer_prepare(struct sti_layer *layer, struct drm_framebuffer *fb, +int sti_layer_prepare(struct sti_layer *layer, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, struct drm_display_mode *mode, int mixer_id, int dest_x, int dest_y, int dest_w, int dest_h, int src_x, int src_y, int src_w, int src_h) @@ -92,6 +100,7 @@ int sti_layer_prepare(struct sti_layer *layer, struct drm_framebuffer *fb, return 1; } + layer->crtc = crtc; layer->fb = fb; layer->mode = mode; layer->mixer_id = mixer_id; |