drm/cirrus: Load lut in crtc_commit
In the past the ast driver relied upon the fbdev emulation helpers to call ->load_lut at boot-up. But since commitb8e2b0199c
Author: Peter Rosin <peda@axentia.se> Date: Tue Jul 4 12:36:57 2017 +0200 drm/fb-helper: factor out pseudo-palette that's cleaned up and drivers are expected to boot into a consistent lut state. This patch fixes that. Fixes:b8e2b0199c
("drm/fb-helper: factor out pseudo-palette") Cc: Peter Rosin <peda@axenita.se> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: <stable@vger.kernel.org> # v4.14+ References: https://bugzilla.kernel.org/show_bug.cgi?id=198123 Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20180131110450.22153-1-daniel.vetter@ffwll.ch Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
17b11b76b8
commit
745fd50f3b
|
@ -294,22 +294,7 @@ static void cirrus_crtc_prepare(struct drm_crtc *crtc)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
static void cirrus_crtc_load_lut(struct drm_crtc *crtc)
|
||||||
* This is called after a mode is programmed. It should reverse anything done
|
|
||||||
* by the prepare function
|
|
||||||
*/
|
|
||||||
static void cirrus_crtc_commit(struct drm_crtc *crtc)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The core can pass us a set of gamma values to program. We actually only
|
|
||||||
* use this for 8-bit mode so can't perform smooth fades on deeper modes,
|
|
||||||
* but it's a requirement that we provide the function
|
|
||||||
*/
|
|
||||||
static int cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
|
|
||||||
u16 *blue, uint32_t size,
|
|
||||||
struct drm_modeset_acquire_ctx *ctx)
|
|
||||||
{
|
{
|
||||||
struct drm_device *dev = crtc->dev;
|
struct drm_device *dev = crtc->dev;
|
||||||
struct cirrus_device *cdev = dev->dev_private;
|
struct cirrus_device *cdev = dev->dev_private;
|
||||||
|
@ -317,7 +302,7 @@ static int cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!crtc->enabled)
|
if (!crtc->enabled)
|
||||||
return 0;
|
return;
|
||||||
|
|
||||||
r = crtc->gamma_store;
|
r = crtc->gamma_store;
|
||||||
g = r + crtc->gamma_size;
|
g = r + crtc->gamma_size;
|
||||||
|
@ -330,6 +315,27 @@ static int cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
|
||||||
WREG8(PALETTE_DATA, *g++ >> 8);
|
WREG8(PALETTE_DATA, *g++ >> 8);
|
||||||
WREG8(PALETTE_DATA, *b++ >> 8);
|
WREG8(PALETTE_DATA, *b++ >> 8);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is called after a mode is programmed. It should reverse anything done
|
||||||
|
* by the prepare function
|
||||||
|
*/
|
||||||
|
static void cirrus_crtc_commit(struct drm_crtc *crtc)
|
||||||
|
{
|
||||||
|
cirrus_crtc_load_lut(crtc);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The core can pass us a set of gamma values to program. We actually only
|
||||||
|
* use this for 8-bit mode so can't perform smooth fades on deeper modes,
|
||||||
|
* but it's a requirement that we provide the function
|
||||||
|
*/
|
||||||
|
static int cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
|
||||||
|
u16 *blue, uint32_t size,
|
||||||
|
struct drm_modeset_acquire_ctx *ctx)
|
||||||
|
{
|
||||||
|
cirrus_crtc_load_lut(crtc);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue