diff options
| author | Benjamin Gaignard <benjamin.gaignard@linaro.org> | 2014-12-04 05:17:32 -0500 |
|---|---|---|
| committer | Benjamin Gaignard <benjamin.gaignard@linaro.org> | 2014-12-11 07:58:19 -0500 |
| commit | 2f7d0e82ce9fdbb450613abe28c3bbe1bda069a6 (patch) | |
| tree | 6a7bc50d4eda4dae8ce503f49222de63b471f5ff | |
| parent | 765692078f08d0229e545d3c1a50bddbc16c800c (diff) | |
drm: sti: clear all mixer control
Make sure that mixer control register is correctly reset
before use it.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
| -rw-r--r-- | drivers/gpu/drm/sti/sti_drm_crtc.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/sti/sti_mixer.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/sti/sti_mixer.h | 1 |
3 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/sti/sti_drm_crtc.c b/drivers/gpu/drm/sti/sti_drm_crtc.c index 36a1ad3c4823..d42c63f756ef 100644 --- a/drivers/gpu/drm/sti/sti_drm_crtc.c +++ b/drivers/gpu/drm/sti/sti_drm_crtc.c | |||
| @@ -38,6 +38,8 @@ static void sti_drm_crtc_prepare(struct drm_crtc *crtc) | |||
| 38 | if (clk_prepare_enable(compo->clk_compo_aux)) | 38 | if (clk_prepare_enable(compo->clk_compo_aux)) |
| 39 | DRM_INFO("Failed to prepare/enable compo_aux clk\n"); | 39 | DRM_INFO("Failed to prepare/enable compo_aux clk\n"); |
| 40 | } | 40 | } |
| 41 | |||
| 42 | sti_mixer_clear_all_layers(mixer); | ||
| 41 | } | 43 | } |
| 42 | 44 | ||
| 43 | static void sti_drm_crtc_commit(struct drm_crtc *crtc) | 45 | static void sti_drm_crtc_commit(struct drm_crtc *crtc) |
diff --git a/drivers/gpu/drm/sti/sti_mixer.c b/drivers/gpu/drm/sti/sti_mixer.c index 79f369db9fb6..6bcdf3f86d22 100644 --- a/drivers/gpu/drm/sti/sti_mixer.c +++ b/drivers/gpu/drm/sti/sti_mixer.c | |||
| @@ -215,6 +215,15 @@ int sti_mixer_set_layer_status(struct sti_mixer *mixer, | |||
| 215 | return 0; | 215 | return 0; |
| 216 | } | 216 | } |
| 217 | 217 | ||
| 218 | void sti_mixer_clear_all_layers(struct sti_mixer *mixer) | ||
| 219 | { | ||
| 220 | u32 val; | ||
| 221 | |||
| 222 | DRM_DEBUG_DRIVER("%s clear all layer\n", sti_mixer_to_str(mixer)); | ||
| 223 | val = sti_mixer_reg_read(mixer, GAM_MIXER_CTL) & 0xFFFF0000; | ||
| 224 | sti_mixer_reg_write(mixer, GAM_MIXER_CTL, val); | ||
| 225 | } | ||
| 226 | |||
| 218 | void sti_mixer_set_matrix(struct sti_mixer *mixer) | 227 | void sti_mixer_set_matrix(struct sti_mixer *mixer) |
| 219 | { | 228 | { |
| 220 | unsigned int i; | 229 | unsigned int i; |
diff --git a/drivers/gpu/drm/sti/sti_mixer.h b/drivers/gpu/drm/sti/sti_mixer.h index 874372102e52..750e1fd5a8ce 100644 --- a/drivers/gpu/drm/sti/sti_mixer.h +++ b/drivers/gpu/drm/sti/sti_mixer.h | |||
| @@ -39,6 +39,7 @@ struct sti_mixer *sti_mixer_create(struct device *dev, int id, | |||
| 39 | 39 | ||
| 40 | int sti_mixer_set_layer_status(struct sti_mixer *mixer, | 40 | int sti_mixer_set_layer_status(struct sti_mixer *mixer, |
| 41 | struct sti_layer *layer, bool status); | 41 | struct sti_layer *layer, bool status); |
| 42 | void sti_mixer_clear_all_layers(struct sti_mixer *mixer); | ||
| 42 | int sti_mixer_set_layer_depth(struct sti_mixer *mixer, struct sti_layer *layer); | 43 | int sti_mixer_set_layer_depth(struct sti_mixer *mixer, struct sti_layer *layer); |
| 43 | int sti_mixer_active_video_area(struct sti_mixer *mixer, | 44 | int sti_mixer_active_video_area(struct sti_mixer *mixer, |
| 44 | struct drm_display_mode *mode); | 45 | struct drm_display_mode *mode); |
