]>
Commit | Line | Data |
---|---|---|
f5ab4f51 GKH |
1 | From foo@baz Wed Aug 22 09:33:46 CEST 2018 |
2 | From: Russell King <rmk+kernel@armlinux.org.uk> | |
3 | Date: Sun, 24 Jun 2018 14:35:10 +0100 | |
4 | Subject: drm/armada: fix colorkey mode property | |
5 | ||
6 | From: Russell King <rmk+kernel@armlinux.org.uk> | |
7 | ||
8 | [ Upstream commit d378859a667edc99e3473704847698cae97ca2b1 ] | |
9 | ||
10 | The colorkey mode property was not correctly disabling the colorkeying | |
11 | when "disabled" mode was selected. Arrange for this to work as one | |
12 | would expect. | |
13 | ||
14 | Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |
15 | Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> | |
16 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
17 | --- | |
18 | drivers/gpu/drm/armada/armada_hw.h | 1 + | |
19 | drivers/gpu/drm/armada/armada_overlay.c | 30 ++++++++++++++++++++++-------- | |
20 | 2 files changed, 23 insertions(+), 8 deletions(-) | |
21 | ||
22 | --- a/drivers/gpu/drm/armada/armada_hw.h | |
23 | +++ b/drivers/gpu/drm/armada/armada_hw.h | |
24 | @@ -160,6 +160,7 @@ enum { | |
25 | CFG_ALPHAM_GRA = 0x1 << 16, | |
26 | CFG_ALPHAM_CFG = 0x2 << 16, | |
27 | CFG_ALPHA_MASK = 0xff << 8, | |
28 | +#define CFG_ALPHA(x) ((x) << 8) | |
29 | CFG_PIXCMD_MASK = 0xff, | |
30 | }; | |
31 | ||
32 | --- a/drivers/gpu/drm/armada/armada_overlay.c | |
33 | +++ b/drivers/gpu/drm/armada/armada_overlay.c | |
34 | @@ -28,6 +28,7 @@ struct armada_ovl_plane_properties { | |
35 | uint16_t contrast; | |
36 | uint16_t saturation; | |
37 | uint32_t colorkey_mode; | |
38 | + uint32_t colorkey_enable; | |
39 | }; | |
40 | ||
41 | struct armada_ovl_plane { | |
42 | @@ -59,11 +60,13 @@ armada_ovl_update_attr(struct armada_ovl | |
43 | writel_relaxed(0x00002000, dcrtc->base + LCD_SPU_CBSH_HUE); | |
44 | ||
45 | spin_lock_irq(&dcrtc->irq_lock); | |
46 | - armada_updatel(prop->colorkey_mode | CFG_ALPHAM_GRA, | |
47 | - CFG_CKMODE_MASK | CFG_ALPHAM_MASK | CFG_ALPHA_MASK, | |
48 | - dcrtc->base + LCD_SPU_DMA_CTRL1); | |
49 | - | |
50 | - armada_updatel(ADV_GRACOLORKEY, 0, dcrtc->base + LCD_SPU_ADV_REG); | |
51 | + armada_updatel(prop->colorkey_mode, | |
52 | + CFG_CKMODE_MASK | CFG_ALPHAM_MASK | CFG_ALPHA_MASK, | |
53 | + dcrtc->base + LCD_SPU_DMA_CTRL1); | |
54 | + if (dcrtc->variant->has_spu_adv_reg) | |
55 | + armada_updatel(prop->colorkey_enable, | |
56 | + ADV_GRACOLORKEY | ADV_VIDCOLORKEY, | |
57 | + dcrtc->base + LCD_SPU_ADV_REG); | |
58 | spin_unlock_irq(&dcrtc->irq_lock); | |
59 | } | |
60 | ||
61 | @@ -339,8 +342,17 @@ static int armada_ovl_plane_set_property | |
62 | dplane->prop.colorkey_vb |= K2B(val); | |
63 | update_attr = true; | |
64 | } else if (property == priv->colorkey_mode_prop) { | |
65 | - dplane->prop.colorkey_mode &= ~CFG_CKMODE_MASK; | |
66 | - dplane->prop.colorkey_mode |= CFG_CKMODE(val); | |
67 | + if (val == CKMODE_DISABLE) { | |
68 | + dplane->prop.colorkey_mode = | |
69 | + CFG_CKMODE(CKMODE_DISABLE) | | |
70 | + CFG_ALPHAM_CFG | CFG_ALPHA(255); | |
71 | + dplane->prop.colorkey_enable = 0; | |
72 | + } else { | |
73 | + dplane->prop.colorkey_mode = | |
74 | + CFG_CKMODE(val) | | |
75 | + CFG_ALPHAM_GRA | CFG_ALPHA(0); | |
76 | + dplane->prop.colorkey_enable = ADV_GRACOLORKEY; | |
77 | + } | |
78 | update_attr = true; | |
79 | } else if (property == priv->brightness_prop) { | |
80 | dplane->prop.brightness = val - 256; | |
81 | @@ -470,7 +482,9 @@ int armada_overlay_plane_create(struct d | |
82 | dplane->prop.colorkey_yr = 0xfefefe00; | |
83 | dplane->prop.colorkey_ug = 0x01010100; | |
84 | dplane->prop.colorkey_vb = 0x01010100; | |
85 | - dplane->prop.colorkey_mode = CFG_CKMODE(CKMODE_RGB); | |
86 | + dplane->prop.colorkey_mode = CFG_CKMODE(CKMODE_RGB) | | |
87 | + CFG_ALPHAM_GRA | CFG_ALPHA(0); | |
88 | + dplane->prop.colorkey_enable = ADV_GRACOLORKEY; | |
89 | dplane->prop.brightness = 0; | |
90 | dplane->prop.contrast = 0x4000; | |
91 | dplane->prop.saturation = 0x4000; |