rpms/kernel/devel drm-nouveau.patch, 1.15, 1.16 kernel.spec, 1.1377, 1.1378
Ben Skeggs
bskeggs at fedoraproject.org
Wed Mar 4 05:41:38 UTC 2009
Author: bskeggs
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv31308
Modified Files:
drm-nouveau.patch kernel.spec
Log Message:
* Wed Mar 04 2009 Ben Skeggs <bskeggs at redhat.com>
- drm-nouveau.patch: lvds, dpms and gamma_set fixes
drm-nouveau.patch:
Index: drm-nouveau.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-nouveau.patch,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- drm-nouveau.patch 4 Mar 2009 00:42:11 -0000 1.15
+++ drm-nouveau.patch 4 Mar 2009 05:41:35 -0000 1.16
@@ -153,10 +153,10 @@
drm_put_minor(&dev->control);
diff --git a/drivers/gpu/drm/nouveau/Makefile b/drivers/gpu/drm/nouveau/Makefile
new file mode 100644
-index 0000000..d2cbeb3
+index 0000000..12af41b
--- /dev/null
+++ b/drivers/gpu/drm/nouveau/Makefile
-@@ -0,0 +1,25 @@
+@@ -0,0 +1,24 @@
+#
+# Makefile for the drm device driver. This driver provides support for the
+# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
@@ -176,8 +176,7 @@
+ nv40_graph.o nv50_graph.o \
+ nv04_instmem.o nv50_instmem.o \
+ nv50_crtc.o nv50_dac.o nv50_sor.o nv50_connector.o \
-+ nv50_lut.o nv50_cursor.o nv50_i2c.o nv50_display.o \
-+ nv50_fbcon.o
++ nv50_cursor.o nv50_i2c.o nv50_display.o nv50_fbcon.o
+
+nouveau-$(CONFIG_COMPAT) += nouveau_ioc32.o
+
@@ -1841,10 +1840,10 @@
+#endif /* __NOUVEAU_CONNECTOR_H__ */
diff --git a/drivers/gpu/drm/nouveau/nouveau_crtc.h b/drivers/gpu/drm/nouveau/nouveau_crtc.h
new file mode 100644
-index 0000000..e0e6032
+index 0000000..0ba9475
--- /dev/null
+++ b/drivers/gpu/drm/nouveau/nouveau_crtc.h
-@@ -0,0 +1,53 @@
+@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2008 Maarten Maathuis.
+ * All Rights Reserved.
@@ -1885,7 +1884,13 @@
+ bool use_dithering;
+
+ struct nv50_cursor *cursor;
-+ struct nv50_lut *lut;
++ struct {
++ struct mem_block *mem;
++ uint16_t r[256];
++ uint16_t g[256];
++ uint16_t b[256];
++ int depth;
++ } lut;
+
+ int (*set_dither) (struct nouveau_crtc *crtc);
+ int (*set_scale) (struct nouveau_crtc *crtc, int mode, bool update);
@@ -17040,10 +17045,10 @@
+}
diff --git a/drivers/gpu/drm/nouveau/nv50_connector.c b/drivers/gpu/drm/nouveau/nv50_connector.c
new file mode 100644
-index 0000000..6e7d5fe
+index 0000000..a16445a
--- /dev/null
+++ b/drivers/gpu/drm/nouveau/nv50_connector.c
-@@ -0,0 +1,593 @@
+@@ -0,0 +1,592 @@
+/*
+ * Copyright (C) 2008 Maarten Maathuis.
+ * All Rights Reserved.
@@ -17334,12 +17339,11 @@
+ int rval;
+
+ /* DPMS */
-+ if (property == dev->mode_config.dpms_property && drm_connector->encoder) {
-+ struct drm_encoder_helper_funcs *helper_funcs =
-+ drm_connector->encoder->helper_private;
++ if (property == dev->mode_config.dpms_property) {
++ if (value > 3)
++ return -EINVAL;
+
-+ helper_funcs->dpms(drm_connector->encoder, (int)value);
-+ return 0;
++ drm_helper_set_connector_dpms(drm_connector, value);
+ }
+
+ /* Scaling mode */
@@ -17639,10 +17643,10 @@
+}
diff --git a/drivers/gpu/drm/nouveau/nv50_crtc.c b/drivers/gpu/drm/nouveau/nv50_crtc.c
new file mode 100644
-index 0000000..b081230
+index 0000000..5e6be22
--- /dev/null
+++ b/drivers/gpu/drm/nouveau/nv50_crtc.c
-@@ -0,0 +1,723 @@
+@@ -0,0 +1,776 @@
+/*
+ * Copyright (C) 2008 Maarten Maathuis.
+ * All Rights Reserved.
@@ -17680,7 +17684,55 @@
+#include "nouveau_fbcon.h"
+#include "nouveau_connector.h"
+#include "nv50_cursor.h"
-+#include "nv50_lut.h"
++
++#define NV50_LUT_INDEX(val, w) ((val << (8 - w)) | (val >> ((w << 1) - 8)))
++static int
++nv50_crtc_lut_load(struct nouveau_crtc *crtc)
++{
++ uint32_t index = 0, i;
++ void __iomem *lut = crtc->lut.mem->kmap.virtual;
++
++ DRM_DEBUG("\n");
++
++ /* 16 bits, red, green, blue, unused, total of 64 bits per index */
++ /* 10 bits lut, with 14 bits values. */
++ switch (crtc->lut.depth) {
++ case 15:
++ /* R5G5B5 */
++ for (i = 0; i < 32; i++) {
++ index = NV50_LUT_INDEX(i, 5);
++ writew(crtc->lut.r[i] >> 2, lut + 8*index + 0);
++ writew(crtc->lut.g[i] >> 2, lut + 8*index + 2);
++ writew(crtc->lut.b[i] >> 2, lut + 8*index + 4);
++ }
++ break;
++ case 16:
++ /* R5G6B5 */
++ for (i = 0; i < 32; i++) {
++ index = NV50_LUT_INDEX(i, 5);
++ writew(crtc->lut.r[i] >> 2, lut + 8*index + 0);
++ writew(crtc->lut.b[i] >> 2, lut + 8*index + 4);
++ }
++
++ /* Green has an extra bit. */
++ for (i = 0; i < 64; i++) {
++ index = NV50_LUT_INDEX(i, 6);
++ writew(crtc->lut.g[i] >> 2, lut + 8*index + 2);
++ }
++ break;
++ default:
++ DRM_INFO("load 24bpp\n");
++ /* R8G8B8 */
++ for (i = 0; i < 256; i++) {
++ writew(crtc->lut.r[i] >> 2, lut + 8*i + 0);
++ writew(crtc->lut.g[i] >> 2, lut + 8*i + 2);
++ writew(crtc->lut.b[i] >> 2, lut + 8*i + 4);
++ }
++ break;
++ }
++
++ return 0;
++}
+
+static int
+nv50_crtc_blank(struct nouveau_crtc *crtc, bool blanked)
@@ -17724,6 +17776,7 @@
+ NV50_CRTC0_BLANK_CTRL_UNBLANK);
+ }
+
++ OUT_MODE(NV50_UPDATE_DISPLAY, 0);
+ return 0;
+}
+
@@ -18005,9 +18058,10 @@
+
+ drm_crtc_cleanup(&crtc->base);
+
-+ nv50_lut_destroy(crtc);
+ nv50_cursor_destroy(crtc);
+
++ if (crtc->lut.mem)
++ nouveau_mem_free(drm_crtc->dev, crtc->lut.mem);
+ kfree(crtc->mode);
+ kfree(crtc);
+}
@@ -18057,15 +18111,33 @@
+ return crtc->cursor->set_pos(crtc, x, y);
+}
+
-+void nv50_crtc_gamma_set(struct drm_crtc *drm_crtc, u16 *r, u16 *g, u16 *b,
-+ uint32_t size)
++void
++nv50_crtc_gamma_set(struct drm_crtc *drm_crtc, u16 *r, u16 *g, u16 *b,
++ uint32_t size)
+{
+ struct nouveau_crtc *crtc = to_nouveau_crtc(drm_crtc);
++ int i;
+
+ if (size != 256)
+ return;
+
-+ crtc->lut->set(crtc, (uint16_t *)r, (uint16_t *)g, (uint16_t *)b);
++ for (i = 0; i < 256; i++) {
++ crtc->lut.r[i] = r[i];
++ crtc->lut.g[i] = g[i];
++ crtc->lut.b[i] = b[i];
++ }
++
++ /* We need to know the depth before we upload, but it's possible to
++ * get called before a framebuffer is bound. If this is the case,
++ * mark the lut values as dirty by setting depth==0, and it'll be
++ * uploaded on the first mode_set_base()
++ */
++ if (!crtc->base.fb) {
++ crtc->lut.depth = 0;
++ return;
++ }
++
++ nv50_crtc_lut_load(crtc);
+}
+
+static const struct drm_crtc_funcs nv50_crtc_funcs = {
@@ -18191,54 +18263,6 @@
+ struct drm_crtc_helper_funcs *crtc_helper = drm_crtc->helper_private;
+ struct nouveau_connector *connector = NULL;
+
-+ {
-+ int r_size = 0, g_size = 0, b_size = 0;
-+ uint16_t *r_val, *g_val, *b_val;
-+ int i;
-+
-+ /* set framebuffer */
-+ switch (drm_crtc->fb->depth) {
-+ case 15:
-+ r_size = 32;
-+ g_size = 32;
-+ b_size = 32;
-+ break;
-+ case 16:
-+ r_size = 32;
-+ g_size = 64;
-+ b_size = 32;
-+ break;
-+ case 24:
-+ default:
-+ r_size = 256;
-+ g_size = 256;
-+ b_size = 256;
-+ break;
-+ }
-+
-+ r_val = kmalloc(r_size * sizeof(uint16_t), GFP_KERNEL);
-+ g_val = kmalloc(g_size * sizeof(uint16_t), GFP_KERNEL);
-+ b_val = kmalloc(b_size * sizeof(uint16_t), GFP_KERNEL);
-+
-+ /* Set the color indices. */
-+ for (i = 0; i < r_size; i++) {
-+ r_val[i] = i << 8;
-+ }
-+ for (i = 0; i < g_size; i++) {
-+ g_val[i] = i << 8;
-+ }
-+ for (i = 0; i < b_size; i++) {
-+ b_val[i] = i << 8;
-+ }
-+
-+ crtc->lut->set(crtc, r_val, g_val, b_val);
-+
-+ /* free before returning */
-+ kfree(r_val);
-+ kfree(g_val);
-+ kfree(b_val);
-+ }
-+
+ /* Find the connector attached to this CRTC */
+ list_for_each_entry(drm_encoder, &dev->mode_config.encoder_list, head) {
+ struct drm_connector *drm_connector;
@@ -18279,7 +18303,6 @@
+ struct nouveau_framebuffer *fb = to_nouveau_framebuffer(drm_fb);
+ struct nouveau_gem_object *ngem = nouveau_gem_object(fb->gem);
+ uint32_t v_vram = ngem->bo->offset - dev_priv->vm_vram_base;
-+ uint32_t v_lut = crtc->lut->bo->offset - dev_priv->vm_vram_base;
+ uint32_t offset = crtc->index * 0x400;
+
+ OUT_MODE(NV50_CRTC0_FB_OFFSET + offset, v_vram >> 8);
@@ -18310,9 +18333,14 @@
+ NV50_CRTC_COLOR_CTRL_MODE_COLOR);
+ OUT_MODE(NV50_CRTC0_FB_POS + offset, (y << 16) | x);
+
++ if (crtc->lut.depth != fb->base.depth) {
++ crtc->lut.depth = fb->base.depth;
++ nv50_crtc_lut_load(crtc);
++ }
++
+ OUT_MODE(NV50_CRTC0_CLUT_MODE + offset, fb->base.depth == 8 ?
+ NV50_CRTC0_CLUT_MODE_OFF : NV50_CRTC0_CLUT_MODE_ON);
-+ OUT_MODE(NV50_CRTC0_CLUT_OFFSET + offset, v_lut >> 8);
++ OUT_MODE(NV50_CRTC0_CLUT_OFFSET + offset, crtc->lut.mem->start >> 8);
+
+ OUT_MODE(NV50_UPDATE_DISPLAY, 0);
+ return 0;
@@ -18331,6 +18359,7 @@
+int nv50_crtc_create(struct drm_device *dev, int index)
+{
+ struct nouveau_crtc *crtc = NULL;
++ int ret, i;
+
+ DRM_DEBUG("\n");
+
@@ -18346,6 +18375,35 @@
+ return -ENOMEM;
+ }
+
++ /* Default CLUT parameters, will be activated on the hw upon
++ * first mode set.
++ */
++ for (i = 0; i < 256; i++) {
++ crtc->lut.r[i] = i << 8;
++ crtc->lut.g[i] = i << 8;
++ crtc->lut.b[i] = i << 8;
++ }
++ crtc->lut.depth = 0;
++
++ crtc->lut.mem = nouveau_mem_alloc(dev, 0x100, 4096, NOUVEAU_MEM_FB |
++ NOUVEAU_MEM_NOVM | NOUVEAU_MEM_MAPPED,
++ (struct drm_file *)-2);
++ if (crtc->lut.mem) {
++ ret = drm_bo_kmap(crtc->lut.mem->bo, 0,
++ crtc->lut.mem->bo->mem.num_pages,
++ &crtc->lut.mem->kmap);
++ if (ret) {
++ nouveau_mem_free(dev, crtc->lut.mem);
++ crtc->lut.mem = NULL;
++ }
++ }
++
++ if (!crtc->lut.mem) {
++ kfree(crtc->mode);
++ kfree(crtc);
++ return -ENOMEM;
++ }
++
+ crtc->index = index;
+
+ /* set function pointers */
@@ -18362,7 +18420,6 @@
+ drm_crtc_helper_add(&crtc->base, &nv50_crtc_helper_funcs);
+ drm_mode_crtc_set_gamma_size(&crtc->base, 256);
+
-+ nv50_lut_create(crtc);
+ nv50_cursor_create(crtc);
+ return 0;
+}
@@ -18912,10 +18969,10 @@
+
diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
new file mode 100644
-index 0000000..0fbcf67
+index 0000000..5bd41ef
--- /dev/null
+++ b/drivers/gpu/drm/nouveau/nv50_display.c
-@@ -0,0 +1,439 @@
+@@ -0,0 +1,441 @@
+/*
+ * Copyright (C) 2008 Maarten Maathuis.
+ * All Rights Reserved.
@@ -19111,6 +19168,7 @@
+ }
+ }
+
++#if 0
+ nv_wr32(NV50_PDISPLAY_UNK200_CTRL, 0);
+ nv_wr32(NV50_PDISPLAY_CTRL_STATE, 0);
+ if (!nv_wait(NV50_PDISPLAY_UNK200_CTRL, 0x1e0000, 0)) {
@@ -19118,6 +19176,7 @@
+ DRM_ERROR("0x610200 = 0x%08x\n",
+ nv_rd32(NV50_PDISPLAY_UNK200_CTRL));
+ }
++#endif
+
+ for (i = 0; i < 2; i++) {
+ if (!nv_wait(NV50_PDISPLAY_SOR_REGS_DPMS_STATE(i),
@@ -42309,241 +42368,6 @@
+ }
+}
+
-diff --git a/drivers/gpu/drm/nouveau/nv50_lut.c b/drivers/gpu/drm/nouveau/nv50_lut.c
-new file mode 100644
-index 0000000..08881cc
---- /dev/null
-+++ b/drivers/gpu/drm/nouveau/nv50_lut.c
-@@ -0,0 +1,177 @@
-+/*
-+ * Copyright (C) 2008 Maarten Maathuis.
-+ * All Rights Reserved.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * "Software"), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ *
-+ * The above copyright notice and this permission notice (including the
-+ * next paragraph) shall be included in all copies or substantial
-+ * portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
-+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ *
-+ */
-+
-+#include "nv50_lut.h"
-+#include "nouveau_crtc.h"
-+#include "nv50_display.h"
-+
-+static int nv50_lut_alloc(struct nouveau_crtc *crtc)
-+{
-+ struct drm_device *dev = crtc->base.dev;
-+ int ret;
-+
-+ DRM_DEBUG("\n");
-+
-+ ret = drm_buffer_object_create(dev, 4096, drm_bo_type_kernel,
-+ DRM_BO_FLAG_MEM_VRAM |
-+ DRM_BO_FLAG_READ | DRM_BO_FLAG_WRITE |
-+ DRM_BO_FLAG_NO_EVICT,
-+ DRM_BO_HINT_DONT_FENCE, 0, 0,
-+ &crtc->lut->bo);
-+ if (ret)
-+ return ret;
-+
-+ ret = drm_bo_kmap(crtc->lut->bo, 0, crtc->lut->bo->mem.num_pages,
-+ &crtc->lut->kmap);
-+ if (ret) {
-+ drm_bo_usage_deref_unlocked(&crtc->lut->bo);
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static int nv50_lut_free(struct nouveau_crtc *crtc)
-+{
-+ DRM_DEBUG("\n");
-+
-+ if (crtc->lut->bo) {
-+ drm_bo_kunmap(&crtc->lut->kmap);
-+ drm_bo_usage_deref_unlocked(&crtc->lut->bo);
-+ }
-+
-+ return 0;
-+}
-+
-+#define NV50_LUT_INDEX(val, w) ((val << (8 - w)) | (val >> ((w << 1) - 8)))
-+static int nv50_lut_set(struct nouveau_crtc *crtc,
-+ uint16_t *red, uint16_t *green, uint16_t *blue)
-+{
-+ struct drm_framebuffer *drm_fb = crtc->base.fb;
-+ uint32_t index = 0, i;
-+ void __iomem *lut;
-+
-+ DRM_DEBUG("\n");
-+
-+ if (!crtc->lut || !crtc->lut->bo) {
-+ DRM_ERROR("Something wrong with the LUT\n");
-+ return -EINVAL;
-+ }
-+ lut = crtc->lut->kmap.virtual;
-+
-+ /* 16 bits, red, green, blue, unused, total of 64 bits per index */
-+ /* 10 bits lut, with 14 bits values. */
-+ switch (drm_fb->depth) {
-+ case 15:
-+ /* R5G5B5 */
-+ for (i = 0; i < 32; i++) {
-+ index = NV50_LUT_INDEX(i, 5);
-+ writew(red[i] >> 2, lut + 8*index + 0);
-+ writew(green[i] >> 2, lut + 8*index + 2);
-+ writew(blue[i] >> 2, lut + 8*index + 4);
-+ }
-+ break;
-+ case 16:
-+ /* R5G6B5 */
-+ for (i = 0; i < 32; i++) {
-+ index = NV50_LUT_INDEX(i, 5);
-+ writew(red[i] >> 2, lut + 8*index + 0);
-+ writew(blue[i] >> 2, lut + 8*index + 4);
-+ }
-+
-+ /* Green has an extra bit. */
-+ for (i = 0; i < 64; i++) {
-+ index = NV50_LUT_INDEX(i, 6);
-+ writew(green[i] >> 2, lut + 8*index + 2);
-+ }
-+ break;
-+ default:
-+ /* R8G8B8 */
-+ for (i = 0; i < 256; i++) {
-+ writew(red[i] >> 2, lut + 8*i + 0);
-+ writew(green[i] >> 2, lut + 8*i + 2);
-+ writew(blue[i] >> 2, lut + 8*i + 4);
-+ }
-+ break;
-+ }
-+
-+ crtc->lut->depth = drm_fb->depth;
-+ return 0;
-+}
-+
-+int nv50_lut_create(struct nouveau_crtc *crtc)
-+{
-+ int rval = 0;
-+
-+ DRM_DEBUG("\n");
-+
-+ if (!crtc)
-+ return -EINVAL;
-+
-+ crtc->lut = kzalloc(sizeof(struct nv50_lut), GFP_KERNEL);
-+
-+ if (!crtc->lut)
-+ return -ENOMEM;
-+
-+ rval = nv50_lut_alloc(crtc);
-+ if (rval != 0) {
-+ goto out;
-+ }
-+
-+ /* lut will be inited when fb is bound */
-+ crtc->lut->depth = 0;
-+
-+ /* function pointers */
-+ crtc->lut->set = nv50_lut_set;
-+
-+ return 0;
-+
-+out:
-+ if (crtc->lut)
-+ kfree(crtc->lut);
-+
-+ return rval;
-+}
-+
-+int nv50_lut_destroy(struct nouveau_crtc *crtc)
-+{
-+ int rval = 0;
-+
-+ DRM_DEBUG("\n");
-+
-+ if (!crtc)
-+ return -EINVAL;
-+
-+ rval = nv50_lut_free(crtc);
-+
-+ kfree(crtc->lut);
-+ crtc->lut = NULL;
-+
-+ if (rval != 0)
-+ return rval;
-+
-+ return 0;
-+}
-diff --git a/drivers/gpu/drm/nouveau/nv50_lut.h b/drivers/gpu/drm/nouveau/nv50_lut.h
-new file mode 100644
-index 0000000..690e39f
---- /dev/null
-+++ b/drivers/gpu/drm/nouveau/nv50_lut.h
-@@ -0,0 +1,46 @@
-+/*
-+ * Copyright (C) 2008 Maarten Maathuis.
-+ * All Rights Reserved.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * "Software"), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ *
-+ * The above copyright notice and this permission notice (including the
-+ * next paragraph) shall be included in all copies or substantial
-+ * portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
-+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ *
-+ */
-+
-+#ifndef __NV50_LUT_H__
-+#define __NV50_LUT_H__
-+
-+#include "nv50_display.h"
-+
-+struct nouveau_crtc;
-+
-+struct nv50_lut {
-+ struct drm_buffer_object *bo;
-+ struct drm_bo_kmap_obj kmap;
-+
-+ int depth; /* check against fb to see if it needs to be reuploaded */
-+
-+ int (*set) (struct nouveau_crtc *crtc, uint16_t *red, uint16_t *green, uint16_t *blue);
-+};
-+
-+int nv50_lut_create(struct nouveau_crtc *crtc);
-+int nv50_lut_destroy(struct nouveau_crtc *crtc);
-+
-+#endif /* __NV50_LUT_H__ */
diff --git a/drivers/gpu/drm/nouveau/nv50_mc.c b/drivers/gpu/drm/nouveau/nv50_mc.c
new file mode 100644
index 0000000..0843473
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1377
retrieving revision 1.1378
diff -u -r1.1377 -r1.1378
--- kernel.spec 4 Mar 2009 03:50:51 -0000 1.1377
+++ kernel.spec 4 Mar 2009 05:41:36 -0000 1.1378
@@ -1792,6 +1792,9 @@
# and build.
%changelog
+* Wed Mar 04 2009 Ben Skeggs <bskeggs at redhat.com>
+- drm-nouveau.patch: lvds, dpms and gamma_set fixes
+
* Wed Mar 04 2009 Dave Jones <davej at redhat.com> 2.6.29-0.197.rc7
- 2.6.29-rc7
More information about the fedora-extras-commits
mailing list