rpms/kernel/devel drm-nouveau.patch, 1.22, 1.23 kernel.spec, 1.1403, 1.1404

Ben Skeggs bskeggs at fedoraproject.org
Tue Mar 10 08:15:07 UTC 2009


Author: bskeggs

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv7509

Modified Files:
	drm-nouveau.patch kernel.spec 
Log Message:
* Tue Mar 10 2009 Ben Skeggs <bskeggs at redhat.com>
- drm-nouveau.patch: more kms fixes/cleanups
- now works decently on all the G8x chips I have



drm-nouveau.patch:

Index: drm-nouveau.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-nouveau.patch,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- drm-nouveau.patch	10 Mar 2009 04:50:48 -0000	1.22
+++ drm-nouveau.patch	10 Mar 2009 08:15:01 -0000	1.23
@@ -17688,10 +17688,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..8a10dc9
+index 0000000..ef888b2
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nv50_crtc.c
-@@ -0,0 +1,758 @@
+@@ -0,0 +1,768 @@
 +/*
 + * Copyright (C) 2008 Maarten Maathuis.
 + * All Rights Reserved.
@@ -18219,6 +18219,9 @@
 +
 +static void nv50_crtc_commit(struct drm_crtc *drm_crtc)
 +{
++	struct nouveau_crtc *crtc = to_nouveau_crtc(drm_crtc);
++
++	nv50_crtc_blank(crtc, false);
 +}
 +
 +static bool nv50_crtc_mode_fixup(struct drm_crtc *drm_crtc,
@@ -18267,25 +18270,29 @@
 +
 +	DRM_DEBUG("index %d\n", crtc->index);
 +
-+	hsync_dur = mode->hsync_end - mode->hsync_start;
-+	vsync_dur = mode->vsync_end - mode->vsync_start;
-+	hsync_start_to_end = mode->htotal - mode->hsync_start;
-+	vsync_start_to_end = mode->vtotal - mode->vsync_start;
++	hsync_dur = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
++	vsync_dur = adjusted_mode->vsync_end - adjusted_mode->vsync_start;
++	hsync_start_to_end = adjusted_mode->htotal - adjusted_mode->hsync_start;
++	vsync_start_to_end = adjusted_mode->vtotal - adjusted_mode->vsync_start;
 +	/* I can't give this a proper name, anyone else can? */
-+	hunk1 = mode->htotal - mode->hsync_start + mode->hdisplay;
-+	vunk1 = mode->vtotal - mode->vsync_start + mode->vdisplay;
-+	/* Another strange value, this time only for interlaced modes. */
-+	vunk2a = 2*mode->vtotal - mode->vsync_start + mode->vdisplay;
-+	vunk2b = mode->vtotal - mode->vsync_start + mode->vtotal;
++	hunk1 = adjusted_mode->htotal -
++		adjusted_mode->hsync_start + adjusted_mode->hdisplay;
++	vunk1 = adjusted_mode->vtotal -
++		adjusted_mode->vsync_start + adjusted_mode->vdisplay;
++	/* Another strange value, this time only for interlaced adjusted_modes. */
++	vunk2a = 2 * adjusted_mode->vtotal -
++		 adjusted_mode->vsync_start + adjusted_mode->vdisplay;
++	vunk2b = adjusted_mode->vtotal -
++		 adjusted_mode->vsync_start + adjusted_mode->vtotal;
 +
-+	if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
++	if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) {
 +		vsync_dur /= 2;
 +		vsync_start_to_end  /= 2;
 +		vunk1 /= 2;
 +		vunk2a /= 2;
 +		vunk2b /= 2;
 +		/* magic */
-+		if (mode->flags & DRM_MODE_FLAG_DBLSCAN) {
++		if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN) {
 +			vsync_start_to_end -= 1;
 +			vunk1 -= 1;
 +			vunk2a -= 1;
@@ -18293,20 +18300,20 @@
 +		}
 +	}
 +
-+	OUT_MODE(NV50_CRTC0_CLOCK + offset, mode->clock | 0x800000);
++	OUT_MODE(NV50_CRTC0_CLOCK + offset, adjusted_mode->clock | 0x800000);
 +	OUT_MODE(NV50_CRTC0_INTERLACE + offset,
-+		 (mode->flags & DRM_MODE_FLAG_INTERLACE) ? 2 : 0);
++		 (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) ? 2 : 0);
 +	OUT_MODE(NV50_CRTC0_DISPLAY_START + offset, 0);
 +	OUT_MODE(NV50_CRTC0_UNK82C + offset, 0);
 +	OUT_MODE(NV50_CRTC0_DISPLAY_TOTAL + offset,
-+		 mode->vtotal << 16 | mode->htotal);
++		 adjusted_mode->vtotal << 16 | adjusted_mode->htotal);
 +	OUT_MODE(NV50_CRTC0_SYNC_DURATION + offset,
 +		 (vsync_dur - 1) << 16 | (hsync_dur - 1));
 +	OUT_MODE(NV50_CRTC0_SYNC_START_TO_BLANK_END + offset,
 +		 (vsync_start_to_end - 1) << 16 | (hsync_start_to_end - 1));
 +	OUT_MODE(NV50_CRTC0_MODE_UNK1 + offset,
 +		 (vunk1 - 1) << 16 | (hunk1 - 1));
-+	if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
++	if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) {
 +		OUT_MODE(NV50_CRTC0_MODE_UNK2 + offset,
 +			 (vunk2b - 1) << 16 | (vunk2a - 1));
 +	}
@@ -18339,6 +18346,9 @@
 +
 +	crtc->fb.offset = ngem->bo->offset - dev_priv->vm_vram_base;
 +
++	OUT_MODE(NV50_CRTC0_FB_OFFSET + offset, crtc->fb.offset >> 8);
++	OUT_MODE(0x864 + offset, 0);
++
 +	OUT_MODE(NV50_CRTC0_FB_SIZE + offset,
 +		 drm_fb->height << 16 | drm_fb->width);
 +
@@ -18369,7 +18379,7 @@
 +		nv50_crtc_lut_load(crtc);
 +	}
 +
-+	nv50_crtc_blank(crtc, false);
++	OUT_MODE(NV50_UPDATE_DISPLAY, 0);
 +	return 0;
 +}
 +
@@ -18452,7 +18462,7 @@
 +}
 diff --git a/drivers/gpu/drm/nouveau/nv50_cursor.c b/drivers/gpu/drm/nouveau/nv50_cursor.c
 new file mode 100644
-index 0000000..5a3cedc
+index 0000000..10736de
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nv50_cursor.c
 @@ -0,0 +1,217 @@
@@ -18557,10 +18567,10 @@
 +		return -EINVAL;
 +	}
 +
-+	OUT_MODE(NV50_CRTC0_CURSOR_CTRL + offset, NV50_CRTC0_CURSOR_CTRL_SHOW);
 +	if (dev_priv->chipset != 0x50)
 +		OUT_MODE(NV84_CRTC0_CURSOR_DMA + offset,
 +			 NV84_CRTC0_CURSOR_DMA_LOCAL);
++	OUT_MODE(NV50_CRTC0_CURSOR_CTRL + offset, NV50_CRTC0_CURSOR_CTRL_SHOW);
 +			 
 +	if (update) {
 +		OUT_MODE(NV50_UPDATE_DISPLAY, 0);
@@ -42474,10 +42484,10 @@
 +}
 diff --git a/drivers/gpu/drm/nouveau/nv50_sor.c b/drivers/gpu/drm/nouveau/nv50_sor.c
 new file mode 100644
-index 0000000..fd29ffc
+index 0000000..a147fb6
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nv50_sor.c
-@@ -0,0 +1,275 @@
+@@ -0,0 +1,274 @@
 +/*
 + * Copyright (C) 2008 Maarten Maathuis.
 + * All Rights Reserved.
@@ -42524,7 +42534,6 @@
 +	DRM_DEBUG("Disconnecting SOR %d\n", encoder->or);
 +
 +	OUT_MODE(NV50_SOR0_MODE_CTRL + offset, NV50_SOR_MODE_CTRL_OFF);
-+	OUT_MODE(NV50_UPDATE_DISPLAY, 0);
 +}
 +
 +static int


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1403
retrieving revision 1.1404
diff -u -r1.1403 -r1.1404
--- kernel.spec	10 Mar 2009 04:50:51 -0000	1.1403
+++ kernel.spec	10 Mar 2009 08:15:05 -0000	1.1404
@@ -1811,6 +1811,10 @@
 
 %changelog
 * Tue Mar 10 2009 Ben Skeggs <bskeggs at redhat.com>
+- drm-nouveau.patch: more kms fixes/cleanups
+- now works decently on all the G8x chips I have
+
+* Tue Mar 10 2009 Ben Skeggs <bskeggs at redhat.com>
 - drm-nouveau.patch: another 8800GTX kms fix
 
 * Tue Mar 10 2009 Ben Skeggs <bskeggs at redhat.com>




More information about the fedora-extras-commits mailing list