mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 12:43:55 +08:00
drm: Initialize a linear gamma table by default
Code stolen from gma500. This is just a minor bit of safety code that I spotted and figured it might be useful if we put it into the core. This is to make the get_gamma ioctl reflect likely reality even before the first set_gamma ioctl call. v2 on irc: Extend commit message per Maarten's suggestions. Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1459331485-28376-2-git-send-email-daniel.vetter@ffwll.ch
This commit is contained in:
parent
1bd816f120
commit
cf48e2921e
@ -5139,6 +5139,9 @@ EXPORT_SYMBOL(drm_mode_connector_attach_encoder);
|
||||
int drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc,
|
||||
int gamma_size)
|
||||
{
|
||||
uint16_t *r_base, *g_base, *b_base;
|
||||
int i;
|
||||
|
||||
crtc->gamma_size = gamma_size;
|
||||
|
||||
crtc->gamma_store = kcalloc(gamma_size, sizeof(uint16_t) * 3,
|
||||
@ -5148,6 +5151,16 @@ int drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
r_base = crtc->gamma_store;
|
||||
g_base = r_base + gamma_size;
|
||||
b_base = g_base + gamma_size;
|
||||
for (i = 0; i < gamma_size; i++) {
|
||||
r_base[i] = i << 8;
|
||||
g_base[i] = i << 8;
|
||||
b_base[i] = i << 8;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_mode_crtc_set_gamma_size);
|
||||
|
@ -491,7 +491,6 @@ void psb_intel_crtc_init(struct drm_device *dev, int pipe,
|
||||
struct drm_psb_private *dev_priv = dev->dev_private;
|
||||
struct gma_crtc *gma_crtc;
|
||||
int i;
|
||||
uint16_t *r_base, *g_base, *b_base;
|
||||
|
||||
/* We allocate a extra array of drm_connector pointers
|
||||
* for fbdev after the crtc */
|
||||
@ -519,16 +518,10 @@ void psb_intel_crtc_init(struct drm_device *dev, int pipe,
|
||||
gma_crtc->pipe = pipe;
|
||||
gma_crtc->plane = pipe;
|
||||
|
||||
r_base = gma_crtc->base.gamma_store;
|
||||
g_base = r_base + 256;
|
||||
b_base = g_base + 256;
|
||||
for (i = 0; i < 256; i++) {
|
||||
gma_crtc->lut_r[i] = i;
|
||||
gma_crtc->lut_g[i] = i;
|
||||
gma_crtc->lut_b[i] = i;
|
||||
r_base[i] = i << 8;
|
||||
g_base[i] = i << 8;
|
||||
b_base[i] = i << 8;
|
||||
|
||||
gma_crtc->lut_adj[i] = 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user