rpms/kernel/F-11 drm-nouveau.patch, 1.31, 1.32 kernel.spec, 1.1490, 1.1491

Ben Skeggs bskeggs at fedoraproject.org
Tue Mar 31 06:30:03 UTC 2009


Author: bskeggs

Update of /cvs/pkgs/rpms/kernel/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv20974

Modified Files:
	drm-nouveau.patch kernel.spec 
Log Message:
* Tue Mar 31 2009 Ben Skeggs <bskeggs at redhat.com>
- drm-nouveau.patch: support version 3.0 pll limits table,
  may help with rh#492575




drm-nouveau.patch:

Index: drm-nouveau.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-nouveau.patch,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- drm-nouveau.patch	30 Mar 2009 06:32:12 -0000	1.31
+++ drm-nouveau.patch	31 Mar 2009 06:30:02 -0000	1.32
@@ -428,10 +428,10 @@
 +}	
 diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
 new file mode 100644
-index 0000000..bcbedb7
+index 0000000..ef33b39
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
-@@ -0,0 +1,854 @@
+@@ -0,0 +1,898 @@
 +/*
 + * Copyright (C) 2005-2006 Erik Waling
 + * Copyright (C) 2006 Stephane Marchesin
@@ -1050,6 +1050,8 @@
 +	 * Version 0x21: Found on Geforce 7, 8 and some Geforce 6 cards
 +	 * 5 byte header, fifth byte of unknown purpose. 35 (0x23) byte record
 +	 * length in general, some (integrated) have an extra configuration byte
++	 * Version 0x30: Found on Geforce 8, separates the register mapping
++	 * from the limits tables.
 +	 */
 +
 +	struct drm_nouveau_private *dev_priv = dev->dev_private;
@@ -1090,6 +1092,7 @@
 +		break;
 +	case 0x20:
 +	case 0x21:
++	case 0x30:
 +		headerlen = bios->data[bios->pll_limit_tbl_ptr + 1];
 +		recordlen = bios->data[bios->pll_limit_tbl_ptr + 2];
 +		entries = bios->data[bios->pll_limit_tbl_ptr + 3];
@@ -1132,7 +1135,7 @@
 +			pll_lim->vco2.max_n = 0x1f;
 +		pll_lim->vco2.min_m = 0x1;
 +		pll_lim->vco2.max_m = 0x4;
-+	} else if (pll_lim_ver) {	/* ver 0x20, 0x21 */
++	} else if (pll_lim_ver < 0x30) {	/* ver 0x20, 0x21 */
 +		uint16_t plloffs = bios->pll_limit_tbl_ptr + headerlen;
 +		uint32_t reg = 0; /* default match */
 +		int i;
@@ -1215,6 +1218,47 @@
 +					pll_lim->refclk = 25000;
 +			}
 +		}*/
++	} else if (pll_lim_ver) { /* ver 0x30 */
++		uint8_t *entry = &bios->data[bios->pll_limit_tbl_ptr + headerlen];
++		uint8_t *record = NULL;
++		int i;
++
++		DRM_DEBUG("Loading PLL limits for register 0x%08x\n",
++			  
++			limit_match);
++
++		for (i = 0; i < entries; i++, entry += recordlen) {
++			if (le32_to_cpu(*(uint32_t *)&entry[3] == limit_match)) {
++				record = &bios->data[le16_to_cpu(*(uint16_t *)&entry[1])];
++				break;
++			}
++		}
++
++		if (!record) {
++			DRM_ERROR("Register 0x%08x not found in PLL limits "
++				  "table", limit_match);
++			return false;
++		}
++
++		pll_lim->vco1.minfreq = le16_to_cpu(*(uint16_t *)&record[0]) * 1000;
++		pll_lim->vco1.maxfreq = le16_to_cpu(*(uint16_t *)&record[2]) * 1000;
++		pll_lim->vco2.minfreq = le16_to_cpu(*(uint16_t *)&record[4]) * 1000;
++		pll_lim->vco2.maxfreq = le16_to_cpu(*(uint16_t *)&record[6]) * 1000;
++		pll_lim->vco1.min_inputfreq = le16_to_cpu(*(uint16_t *)&record[8]) * 1000;
++		pll_lim->vco2.min_inputfreq = le16_to_cpu(*(uint16_t *)&record[10]) * 1000;
++		pll_lim->vco1.max_inputfreq = le16_to_cpu(*(uint16_t *)&record[12]) * 1000;
++		pll_lim->vco2.max_inputfreq = le16_to_cpu(*(uint16_t *)&record[14]) * 1000;
++		pll_lim->vco1.min_n = record[16];
++		pll_lim->vco1.max_n = record[17];
++		pll_lim->vco1.min_m = record[18];
++		pll_lim->vco1.max_m = record[19];
++		pll_lim->vco2.min_n = record[20];
++		pll_lim->vco2.max_n = record[21];
++		pll_lim->vco2.min_m = record[22];
++		pll_lim->vco2.max_m = record[23];
++		pll_lim->max_log2p_bias = record[25];
++		pll_lim->log2p_bias = record[27];
++		pll_lim->refclk = le32_to_cpu(*(uint32_t *)&record[28]);
 +	}
 +
 +	/* By now any valid limit table ought to have set a max frequency for


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/kernel.spec,v
retrieving revision 1.1490
retrieving revision 1.1491
diff -u -r1.1490 -r1.1491
--- kernel.spec	31 Mar 2009 00:04:50 -0000	1.1490
+++ kernel.spec	31 Mar 2009 06:30:02 -0000	1.1491
@@ -1872,6 +1872,10 @@
 # and build.
 
 %changelog
+* Tue Mar 31 2009 Ben Skeggs <bskeggs at redhat.com>
+- drm-nouveau.patch: support version 3.0 pll limits table
+  may help with rh#492575
+
 * Mon Mar 30 2009 Matthew Garrett <mjg at redhat.com>
 - linux-2.6-input-wacom-bluetooth.patch: Add support for Bluetooth wacom pads
 




More information about the fedora-extras-commits mailing list