mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-04 18:19:28 +09:00
drm/arm/malidp: Preserve LAYER_FORMAT contents when setting format
[ Upstream commit ad7fda2e37 ]
On some Mali-DP processors, the LAYER_FORMAT register contains fields
other than the format. These bits were unconditionally cleared when
setting the pixel format, whereas they should be preserved at their
reset values.
Reported-by: Brian Starkey <brian.starkey@arm.com>
Reported-by: Liviu Dudau <liviu.dudau@arm.com>
Signed-off-by: Ayan Kumar halder <ayan.halder@arm.com>
Acked-by: Liviu Dudau <liviu.dudau@arm.com>
Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
0a43cd3ea7
commit
6bcd5cdf3a
@@ -23,6 +23,7 @@
|
||||
|
||||
/* Layer specific register offsets */
|
||||
#define MALIDP_LAYER_FORMAT 0x000
|
||||
#define LAYER_FORMAT_MASK 0x3f
|
||||
#define MALIDP_LAYER_CONTROL 0x004
|
||||
#define LAYER_ENABLE (1 << 0)
|
||||
#define LAYER_FLOWCFG_MASK 7
|
||||
@@ -278,7 +279,9 @@ static void malidp_de_plane_update(struct drm_plane *plane,
|
||||
dest_w = plane->state->crtc_w;
|
||||
dest_h = plane->state->crtc_h;
|
||||
|
||||
malidp_hw_write(mp->hwdev, ms->format, mp->layer->base);
|
||||
val = malidp_hw_read(mp->hwdev, mp->layer->base);
|
||||
val = (val & ~LAYER_FORMAT_MASK) | ms->format;
|
||||
malidp_hw_write(mp->hwdev, val, mp->layer->base);
|
||||
|
||||
for (i = 0; i < ms->n_planes; i++) {
|
||||
/* calculate the offset for the layer's plane registers */
|
||||
|
||||
Reference in New Issue
Block a user