rpms/kernel/F-11 drm-dont-frob-i2c.patch, 1.2, 1.3 drm-i915-enable-mchbar.patch, 1.2, 1.3 drm-intel-gem-use-dma32-on-pae.patch, 1.2, 1.3 drm-intel-gen3-fb-hack.patch, 1.2, 1.3 drm-intel-hdmi-edid-fix.patch, 1.2, 1.3 drm-intel-tv-fix.patch, 1.2, 1.3 drm-modesetting-radeon-fixes.patch, 1.2, 1.3 drm-pnp-add-resource-range-checker.patch, 1.2, 1.3 drm-radeon-cs-oops-fix.patch, 1.3, 1.4 drm-radeon-new-pciids.patch, 1.2, 1.3 drm-i915-resume-force-mode.patch, 1.2, 1.3 drm-intel-big-hammer.patch, 1.1, 1.2 drm-modesetting-radeon.patch, 1.83, 1.84 drm-no-gem-on-i8xx.patch, 1.3, 1.4 drm-nouveau.patch, 1.60, 1.61 kernel.spec, 1.1701, 1.1702
Kyle McMartin
kyle at fedoraproject.org
Wed Aug 12 16:49:53 UTC 2009
- Previous message: rpms/ikiwiki/F-11 .cvsignore, 1.24, 1.25 ikiwiki.spec, 1.26, 1.27 import.log, 1.24, 1.25 sources, 1.24, 1.25
- Next message: rpms/qt-creator/devel .cvsignore, 1.5, 1.6 qt-creator.spec, 1.7, 1.8 sources, 1.5, 1.6
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: kyle
Update of /cvs/pkgs/rpms/kernel/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv30605
Modified Files:
drm-i915-resume-force-mode.patch drm-intel-big-hammer.patch
drm-modesetting-radeon.patch drm-no-gem-on-i8xx.patch
drm-nouveau.patch kernel.spec
Added Files:
drm-dont-frob-i2c.patch drm-i915-enable-mchbar.patch
drm-intel-gem-use-dma32-on-pae.patch
drm-intel-gen3-fb-hack.patch drm-intel-hdmi-edid-fix.patch
drm-intel-tv-fix.patch drm-modesetting-radeon-fixes.patch
drm-pnp-add-resource-range-checker.patch
drm-radeon-cs-oops-fix.patch drm-radeon-new-pciids.patch
Log Message:
* Wed Aug 12 2009 Kyle McMartin <kyle at redhat.com>
- DRM patch sync-up with F-11-2.6.29.y, ABI probably isn't right yet though...
- drm-modesetting-radeon.patch
- drm-nouveau.patch
- drm-no-gem-on-i8xx.patch
- drm-i915-resume-force-mode.patch
- drm-intel-big-hammer.patch
- drm-intel-gen3-fb-hack.patch
- drm-intel-hdmi-edid-fix.patch
- drm-modesetting-radeon-fixes.patch
- drm-radeon-new-pciids.patch
- drm-dont-frob-i2c.patch
- drm-intel-tv-fix.patch
- drm-radeon-cs-oops-fix.patch
- drm-pnp-add-resource-range-checker.patch
- drm-i915-enable-mchbar.patch
- The rest were merged upstream.
drm-dont-frob-i2c.patch:
drm_edid.c | 74 -------------------------------------------------------------
1 file changed, 1 insertion(+), 73 deletions(-)
Index: drm-dont-frob-i2c.patch
===================================================================
RCS file: drm-dont-frob-i2c.patch
diff -N drm-dont-frob-i2c.patch
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ drm-dont-frob-i2c.patch 12 Aug 2009 16:49:49 -0000 1.3
@@ -0,0 +1,91 @@
+diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
+index 6f6b264..801a0d0 100644
+--- a/drivers/gpu/drm/drm_edid.c
++++ b/drivers/gpu/drm/drm_edid.c
+@@ -589,85 +589,13 @@ int drm_do_probe_ddc_edid(struct i2c_adapter *adapter,
+ }
+ EXPORT_SYMBOL(drm_do_probe_ddc_edid);
+
+-/**
+- * Get EDID information.
+- *
+- * \param adapter : i2c device adaptor.
+- * \param buf : EDID data buffer to be filled
+- * \param len : EDID data buffer length
+- * \return 0 on success or -1 on failure.
+- *
+- * Initialize DDC, then fetch EDID information
+- * by calling drm_do_probe_ddc_edid function.
+- */
+-static int drm_ddc_read(struct i2c_adapter *adapter,
+- unsigned char *buf, int len)
+-{
+- struct i2c_algo_bit_data *algo_data = adapter->algo_data;
+- int i, j;
+- int ret = -1;
+-
+- algo_data->setscl(algo_data->data, 1);
+-
+- for (i = 0; i < 1; i++) {
+- /* For some old monitors we need the
+- * following process to initialize/stop DDC
+- */
+- algo_data->setsda(algo_data->data, 1);
+- msleep(13);
+-
+- algo_data->setscl(algo_data->data, 1);
+- for (j = 0; j < 5; j++) {
+- msleep(10);
+- if (algo_data->getscl(algo_data->data))
+- break;
+- }
+- if (j == 5)
+- continue;
+-
+- algo_data->setsda(algo_data->data, 0);
+- msleep(15);
+- algo_data->setscl(algo_data->data, 0);
+- msleep(15);
+- algo_data->setsda(algo_data->data, 1);
+- msleep(15);
+-
+- /* Do the real work */
+- ret = drm_do_probe_ddc_edid(adapter, buf, len);
+- algo_data->setsda(algo_data->data, 0);
+- algo_data->setscl(algo_data->data, 0);
+- msleep(15);
+-
+- algo_data->setscl(algo_data->data, 1);
+- for (j = 0; j < 10; j++) {
+- msleep(10);
+- if (algo_data->getscl(algo_data->data))
+- break;
+- }
+-
+- algo_data->setsda(algo_data->data, 1);
+- msleep(15);
+- algo_data->setscl(algo_data->data, 0);
+- algo_data->setsda(algo_data->data, 0);
+- if (ret == 0)
+- break;
+- }
+- /* Release the DDC lines when done or the Apple Cinema HD display
+- * will switch off
+- */
+- algo_data->setsda(algo_data->data, 1);
+- algo_data->setscl(algo_data->data, 1);
+-
+- return ret;
+-}
+-
+ static int drm_ddc_read_edid(struct drm_connector *connector,
+ struct i2c_adapter *adapter,
+ char *buf, int len)
+ {
+ int ret;
+
+- ret = drm_ddc_read(adapter, buf, len);
++ ret = drm_do_probe_ddc_edid(adapter, buf, len);
+ if (ret != 0) {
+ dev_info(&connector->dev->pdev->dev, "%s: no EDID data\n",
+ drm_get_connector_name(connector));
drm-i915-enable-mchbar.patch:
i915_drv.h | 2
i915_gem_tiling.c | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 147 insertions(+)
Index: drm-i915-enable-mchbar.patch
===================================================================
RCS file: drm-i915-enable-mchbar.patch
diff -N drm-i915-enable-mchbar.patch
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ drm-i915-enable-mchbar.patch 12 Aug 2009 16:49:49 -0000 1.3
@@ -0,0 +1,197 @@
+diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
+index dcf5257..defe8a0 100644
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -143,6 +143,8 @@ typedef struct drm_i915_private {
+ drm_local_map_t hws_map;
+ struct drm_gem_object *hws_obj;
+
++ struct resource mch_res;
++
+ unsigned int cpp;
+ int back_offset;
+ int front_offset;
+diff --git a/drivers/gpu/drm/i915/i915_gem_tiling.c b/drivers/gpu/drm/i915/i915_gem_tiling.c
+index 540dd33..975b967 100644
+--- a/drivers/gpu/drm/i915/i915_gem_tiling.c
++++ b/drivers/gpu/drm/i915/i915_gem_tiling.c
+@@ -25,6 +25,8 @@
+ *
+ */
+
++#include <linux/acpi.h>
++#include <linux/pnp.h>
+ #include "linux/string.h"
+ #include "linux/bitops.h"
+ #include "drmP.h"
+@@ -81,6 +83,143 @@
+ * to match what the GPU expects.
+ */
+
++#define MCHBAR_I915 0x44
++#define MCHBAR_I965 0x48
++#define MCHBAR_SIZE (4*4096)
++
++#define DEVEN_REG 0x54
++#define DEVEN_MCHBAR_EN (1 << 28)
++
++/* Allocate space for the MCH regs if needed, return nonzero on error */
++static int
++intel_alloc_mchbar_resource(struct drm_device *dev)
++{
++ struct pci_dev *bridge_dev;
++ drm_i915_private_t *dev_priv = dev->dev_private;
++ int reg = IS_I965G(dev) ? MCHBAR_I965 : MCHBAR_I915;
++ u32 temp_lo, temp_hi = 0;
++ u64 mchbar_addr;
++ int ret = 0;
++
++ bridge_dev = pci_get_bus_and_slot(0, PCI_DEVFN(0,0));
++ if (!bridge_dev) {
++ DRM_DEBUG("no bridge dev?!\n");
++ ret = -ENODEV;
++ goto out;
++ }
++
++ if (IS_I965G(dev))
++ pci_read_config_dword(bridge_dev, reg + 4, &temp_hi);
++ pci_read_config_dword(bridge_dev, reg, &temp_lo);
++ mchbar_addr = ((u64)temp_hi << 32) | temp_lo;
++
++ /* If ACPI doesn't have it, assume we need to allocate it ourselves */
++ if (mchbar_addr &&
++ pnp_range_reserved(mchbar_addr, mchbar_addr + MCHBAR_SIZE)) {
++ ret = 0;
++ goto out_put;
++ }
++
++ /* Get some space for it */
++ ret = pci_bus_alloc_resource(bridge_dev->bus, &dev_priv->mch_res,
++ MCHBAR_SIZE, MCHBAR_SIZE,
++ PCIBIOS_MIN_MEM,
++ 0, pcibios_align_resource,
++ bridge_dev);
++ if (ret) {
++ DRM_DEBUG("failed bus alloc: %d\n", ret);
++ dev_priv->mch_res.start = 0;
++ goto out_put;
++ }
++
++ if (IS_I965G(dev))
++ pci_write_config_dword(bridge_dev, reg + 4,
++ upper_32_bits(dev_priv->mch_res.start));
++
++ pci_write_config_dword(bridge_dev, reg,
++ lower_32_bits(dev_priv->mch_res.start));
++out_put:
++ pci_dev_put(bridge_dev);
++out:
++ return ret;
++}
++
++/* Setup MCHBAR if possible, return true if we should disable it again */
++static bool
++intel_setup_mchbar(struct drm_device *dev)
++{
++ struct pci_dev *bridge_dev;
++ int mchbar_reg = IS_I965G(dev) ? MCHBAR_I965 : MCHBAR_I915;
++ u32 temp;
++ bool need_disable = false, enabled;
++
++ bridge_dev = pci_get_bus_and_slot(0, PCI_DEVFN(0,0));
++ if (!bridge_dev) {
++ DRM_DEBUG("no bridge dev?!\n");
++ goto out;
++ }
++
++ if (IS_I915G(dev) || IS_I915GM(dev)) {
++ pci_read_config_dword(bridge_dev, DEVEN_REG, &temp);
++ enabled = !!(temp & DEVEN_MCHBAR_EN);
++ } else {
++ pci_read_config_dword(bridge_dev, mchbar_reg, &temp);
++ enabled = temp & 1;
++ }
++
++ /* If it's already enabled, don't have to do anything */
++ if (enabled)
++ goto out_put;
++
++ if (intel_alloc_mchbar_resource(dev))
++ goto out_put;
++
++ need_disable = true;
++
++ /* Space is allocated or reserved, so enable it. */
++ if (IS_I915G(dev) || IS_I915GM(dev)) {
++ pci_write_config_dword(bridge_dev, DEVEN_REG,
++ temp | DEVEN_MCHBAR_EN);
++ } else {
++ pci_read_config_dword(bridge_dev, mchbar_reg, &temp);
++ pci_write_config_dword(bridge_dev, mchbar_reg, temp | 1);
++ }
++out_put:
++ pci_dev_put(bridge_dev);
++out:
++ return need_disable;
++}
++
++static void
++intel_teardown_mchbar(struct drm_device *dev, bool disable)
++{
++ drm_i915_private_t *dev_priv = dev->dev_private;
++ struct pci_dev *bridge_dev;
++ int mchbar_reg = IS_I965G(dev) ? MCHBAR_I965 : MCHBAR_I915;
++ u32 temp;
++
++ bridge_dev = pci_get_bus_and_slot(0, PCI_DEVFN(0,0));
++ if (!bridge_dev) {
++ DRM_DEBUG("no bridge dev?!\n");
++ return;
++ }
++
++ if (disable) {
++ if (IS_I915G(dev) || IS_I915GM(dev)) {
++ pci_read_config_dword(bridge_dev, DEVEN_REG, &temp);
++ temp &= ~DEVEN_MCHBAR_EN;
++ pci_write_config_dword(bridge_dev, DEVEN_REG, temp);
++ } else {
++ pci_read_config_dword(bridge_dev, mchbar_reg, &temp);
++ temp &= ~1;
++ pci_write_config_dword(bridge_dev, mchbar_reg, temp);
++ }
++ }
++
++ if (dev_priv->mch_res.start)
++ release_resource(&dev_priv->mch_res);
++}
++
+ /**
+ * Detects bit 6 swizzling of address lookup between IGD access and CPU
+ * access through main memory.
+@@ -91,6 +230,7 @@ i915_gem_detect_bit_6_swizzle(struct drm_device *dev)
+ drm_i915_private_t *dev_priv = dev->dev_private;
+ uint32_t swizzle_x = I915_BIT_6_SWIZZLE_UNKNOWN;
+ uint32_t swizzle_y = I915_BIT_6_SWIZZLE_UNKNOWN;
++ bool need_disable;
+
+ if (!IS_I9XX(dev)) {
+ /* As far as we know, the 865 doesn't have these bit 6
+@@ -101,6 +241,9 @@ i915_gem_detect_bit_6_swizzle(struct drm_device *dev)
+ } else if (IS_MOBILE(dev)) {
+ uint32_t dcc;
+
++ /* Try to make sure MCHBAR is enabled before poking at it */
++ need_disable = intel_setup_mchbar(dev);
++
+ /* On mobile 9xx chipsets, channel interleave by the CPU is
+ * determined by DCC. For single-channel, neither the CPU
+ * nor the GPU do swizzling. For dual channel interleaved,
+@@ -140,6 +283,8 @@ i915_gem_detect_bit_6_swizzle(struct drm_device *dev)
+ swizzle_x = I915_BIT_6_SWIZZLE_UNKNOWN;
+ swizzle_y = I915_BIT_6_SWIZZLE_UNKNOWN;
+ }
++
++ intel_teardown_mchbar(dev, need_disable);
+ } else {
+ /* The 965, G33, and newer, have a very flexible memory
+ * configuration. It will enable dual-channel mode
drm-intel-gem-use-dma32-on-pae.patch:
drivers/gpu/drm/drm_gem.c | 3 +++
drivers/gpu/drm/i915/i915_dma.c | 8 ++++----
include/drm/drmP.h | 1 +
mm/shmem.c | 2 +-
4 files changed, 9 insertions(+), 5 deletions(-)
Index: drm-intel-gem-use-dma32-on-pae.patch
===================================================================
RCS file: drm-intel-gem-use-dma32-on-pae.patch
diff -N drm-intel-gem-use-dma32-on-pae.patch
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ drm-intel-gem-use-dma32-on-pae.patch 12 Aug 2009 16:49:49 -0000 1.3
@@ -0,0 +1,66 @@
+commit 91346b5fc75a8a0418e3393244e3d0750400af87
+Author: Kyle McMartin <kyle at phobos.i.jkkm.org>
+Date: Wed Aug 12 12:15:51 2009 -0400
+
+ drm-intel-gem-use-dma32-on-pae.patch
+
+diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
+index dee9b40..96eff54 100644
+--- a/drivers/gpu/drm/drm_gem.c
++++ b/drivers/gpu/drm/drm_gem.c
+@@ -142,6 +142,9 @@ drm_gem_object_alloc(struct drm_device *dev, size_t size)
+ return NULL;
+ }
+
++ if (dev->gem_flags)
++ mapping_set_gfp_mask(obj->filp->f_mapping, dev->gem_flags);
++
+ kref_init(&obj->refcount);
+ kref_init(&obj->handlecount);
+ obj->size = size;
+diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
+index 4560b8d..5da31e7 100644
+--- a/drivers/gpu/drm/i915/i915_dma.c
++++ b/drivers/gpu/drm/i915/i915_dma.c
+@@ -1145,12 +1145,12 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
+ }
+
+ #ifdef CONFIG_HIGHMEM64G
+- /* don't enable GEM on PAE - needs agp + set_memory_* interface fixes */
+- dev_priv->has_gem = 0;
+-#else
++ /* set default allocation flags */
++ dev->gem_flags = GFP_USER | GFP_DMA32;
++#endif
++
+ /* enable GEM by default, except on I8xx */
+ dev_priv->has_gem = !IS_8XX(dev) ? 1 : 0;
+-#endif
+
+ dev->driver->get_vblank_counter = i915_get_vblank_counter;
+ if (IS_GM45(dev))
+diff --git a/include/drm/drmP.h b/include/drm/drmP.h
+index fb93588..b8dae8a 100644
+--- a/include/drm/drmP.h
++++ b/include/drm/drmP.h
+@@ -1043,6 +1043,7 @@ struct drm_device {
+ uint32_t gtt_total;
+ uint32_t invalidate_domains; /* domains pending invalidation */
+ uint32_t flush_domains; /* domains pending flush */
++ gfp_t gem_flags; /* object allocation flags */
+ /*@} */
+ };
+
+diff --git a/mm/shmem.c b/mm/shmem.c
+index b25f95c..e615887 100644
+--- a/mm/shmem.c
++++ b/mm/shmem.c
+@@ -1241,7 +1241,7 @@ repeat:
+ * Try to preload while we can wait, to not make a habit of
+ * draining atomic reserves; but don't latch on to this cpu.
+ */
+- error = radix_tree_preload(gfp & ~__GFP_HIGHMEM);
++ error = radix_tree_preload(gfp & ~(__GFP_HIGHMEM|__GFP_DMA32));
+ if (error)
+ goto failed;
+ radix_tree_preload_end();
drm-intel-gen3-fb-hack.patch:
intel_display.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: drm-intel-gen3-fb-hack.patch
===================================================================
RCS file: drm-intel-gen3-fb-hack.patch
diff -N drm-intel-gen3-fb-hack.patch
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ drm-intel-gen3-fb-hack.patch 12 Aug 2009 16:49:49 -0000 1.3
@@ -0,0 +1,15 @@
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index d0ac174..e4b7257 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -2067,8 +2067,8 @@ void intel_modeset_init(struct drm_device *dev)
+ dev->mode_config.max_width = 8192;
+ dev->mode_config.max_height = 8192;
+ } else {
+- dev->mode_config.max_width = 2048;
+- dev->mode_config.max_height = 2048;
++ dev->mode_config.max_width = 4096;
++ dev->mode_config.max_height = 4096;
+ }
+
+ /* set memory base */
drm-intel-hdmi-edid-fix.patch:
intel_sdvo.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 79 insertions(+), 1 deletion(-)
Index: drm-intel-hdmi-edid-fix.patch
===================================================================
RCS file: drm-intel-hdmi-edid-fix.patch
diff -N drm-intel-hdmi-edid-fix.patch
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ drm-intel-hdmi-edid-fix.patch 12 Aug 2009 16:49:49 -0000 1.3
@@ -0,0 +1,103 @@
+diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
+index 3093b4d..1324fda 100644
+--- a/drivers/gpu/drm/i915/intel_sdvo.c
++++ b/drivers/gpu/drm/i915/intel_sdvo.c
+@@ -30,6 +30,7 @@
+ #include "drmP.h"
+ #include "drm.h"
+ #include "drm_crtc.h"
++#include "drm_edid.h"
+ #include "intel_drv.h"
+ #include "i915_drm.h"
+ #include "i915_drv.h"
+@@ -1399,12 +1400,89 @@ static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connect
+ return connector_status_disconnected;
+ }
+
++#define MAX_EDID_EXT_NUM 4
++/**
++ * This function will fetch EDID by switch ddc bus, instead of drm_get_edid
++ * function.
++ */
++static struct edid *intel_sdvo_hdmi_get_edid(struct intel_output *intel_output)
++{
++ struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv;
++ struct edid *edid;
++ int ret = 0;
++
++ edid = kmalloc(EDID_LENGTH * (MAX_EDID_EXT_NUM + 1),
++ GFP_KERNEL);
++
++ if (edid == NULL) {
++ DRM_DEBUG("Failed to allocated EDID for SDVO HDMI\n");
++ goto end;
++ }
++
++ /* Read first EDID block */
++ ret = drm_do_probe_ddc_edid(&intel_output->ddc_bus->adapter,
++ (unsigned char *)edid, EDID_LENGTH);
++ if (ret != 0) {
++ DRM_DEBUG("Failed to read basic EDID for SDVO HDMI\n");
++ goto clean_up;
++ }
++
++ /* There are EDID extensions to be read */
++ if (edid->extensions != 0) {
++ int edid_ext_num = edid->extensions;
++
++ if (edid_ext_num > MAX_EDID_EXT_NUM) {
++ DRM_DEBUG("The number of extensions(%d) is "
++ "over max (%d), actually read number (%d)\n",
++ edid_ext_num, MAX_EDID_EXT_NUM,
++ MAX_EDID_EXT_NUM);
++ }
++ /* set the bus switch and get the modes */
++ intel_sdvo_set_control_bus_switch(intel_output,
++ sdvo_priv->ddc_bus);
++ /* Read EDID including extensions too */
++ ret = drm_do_probe_ddc_edid(&intel_output->ddc_bus->adapter,
++ (unsigned char *)edid,
++ EDID_LENGTH * (edid_ext_num + 1));
++ if (ret != 0) {
++ DRM_DEBUG("Failed to read EDID EXT for SDVO HDMI\n");
++ goto clean_up;
++ }
++ }
++ goto end;
++
++clean_up:
++ kfree(edid);
++ edid = NULL;
++end:
++ return edid;
++}
++
++static void intel_sdvo_hdmi_ddc_get_modes(struct intel_output *intel_output)
++{
++ struct edid *edid;
++
++ edid = intel_sdvo_hdmi_get_edid(intel_output);
++ if (edid != NULL) {
++ drm_mode_connector_update_edid_property(&intel_output->base,
++ edid);
++ drm_add_edid_modes(&intel_output->base, edid);
++ kfree(edid);
++ }
++}
++
+ static void intel_sdvo_get_ddc_modes(struct drm_connector *connector)
+ {
+ struct intel_output *intel_output = to_intel_output(connector);
++ struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv;
+
+ /* set the bus switch and get the modes */
+- intel_ddc_get_modes(intel_output);
++ intel_sdvo_set_control_bus_switch(intel_output,
++ sdvo_priv->ddc_bus);
++ if (sdvo_priv->is_hdmi == true)
++ intel_sdvo_hdmi_ddc_get_modes(intel_output);
++ else
++ intel_ddc_get_modes(intel_output);
+
+ #if 0
+ struct drm_device *dev = encoder->dev;
drm-intel-tv-fix.patch:
intel_display.c | 2 ++
1 file changed, 2 insertions(+)
Index: drm-intel-tv-fix.patch
===================================================================
RCS file: drm-intel-tv-fix.patch
diff -N drm-intel-tv-fix.patch
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ drm-intel-tv-fix.patch 12 Aug 2009 16:49:49 -0000 1.3
@@ -0,0 +1,20 @@
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index e4b7257..60cc21a 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -1596,6 +1596,7 @@ struct drm_crtc *intel_get_load_detect_pipe(struct intel_output *intel_output,
+ }
+
+ encoder->crtc = crtc;
++ intel_output->base.encoder = encoder;
+ intel_output->load_detect_temp = true;
+
+ intel_crtc = to_intel_crtc(crtc);
+@@ -1631,6 +1632,7 @@ void intel_release_load_detect_pipe(struct intel_output *intel_output, int dpms_
+
+ if (intel_output->load_detect_temp) {
+ encoder->crtc = NULL;
++ intel_output->base.encoder = NULL;
+ intel_output->load_detect_temp = false;
+ crtc->enabled = drm_helper_crtc_in_use(crtc);
+ drm_helper_disable_unused_functions(dev);
drm-modesetting-radeon-fixes.patch:
drm_page_alloc.c | 1 +
drm_ttm.c | 15 ++++-----------
radeon/radeon_cp.c | 11 +----------
radeon/radeon_drv.h | 2 ++
radeon/radeon_gem.c | 22 +++++++++++++++-------
radeon/radeon_pm.c | 3 +++
6 files changed, 26 insertions(+), 28 deletions(-)
Index: drm-modesetting-radeon-fixes.patch
===================================================================
RCS file: drm-modesetting-radeon-fixes.patch
diff -N drm-modesetting-radeon-fixes.patch
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ drm-modesetting-radeon-fixes.patch 12 Aug 2009 16:49:49 -0000 1.3
@@ -0,0 +1,170 @@
+diff --git a/drivers/gpu/drm/drm_page_alloc.c b/drivers/gpu/drm/drm_page_alloc.c
+index fad6ae3..73a3c6d 100644
+--- a/drivers/gpu/drm/drm_page_alloc.c
++++ b/drivers/gpu/drm/drm_page_alloc.c
+@@ -78,6 +78,7 @@ int drm_add_pages_locked(int num_pages, int cached)
+ #else
+ map_page_into_agp(page);
+ #endif
++ drm_clflush_pages(&page, 1);
+ list_add(&page->lru, &uncached_free_list);
+ drm_page_alloc_data.total_uncached_pages++;
+ drm_page_alloc_data.uncached_pages_in_list++;
+diff --git a/drivers/gpu/drm/drm_ttm.c b/drivers/gpu/drm/drm_ttm.c
+index ae64a83..dbc0cb3 100644
+--- a/drivers/gpu/drm/drm_ttm.c
++++ b/drivers/gpu/drm/drm_ttm.c
+@@ -89,21 +89,14 @@ static struct page *drm_ttm_alloc_page(struct drm_ttm *ttm, int cached)
+ * Change caching policy for the linear kernel map
+ * for range of pages in a ttm.
+ */
+-static int drm_ttm_set_caching(struct drm_ttm *ttm, int noncached, int alloc_cached)
++static int drm_ttm_set_caching(struct drm_ttm *ttm, int noncached)
+ {
+ int i;
+ struct page **cur_page;
+- int ret;
+
+ if ((ttm->page_flags & DRM_TTM_PAGE_UNCACHED) == noncached)
+ return 0;
+
+- {
+- ret = drm_ttm_populate(ttm, alloc_cached);
+- if (ret != 0)
+- return ret;
+- }
+-
+ if (noncached)
+ drm_clflush_pages(ttm->pages, ttm->num_pages);
+
+@@ -196,7 +189,7 @@ int drm_ttm_destroy(struct drm_ttm *ttm)
+ if (ttm->pages) {
+ if (ttm->page_flags & DRM_TTM_PAGE_USER) {
+ if (ttm->page_flags & DRM_TTM_PAGE_UNCACHED)
+- drm_ttm_set_caching(ttm, 0, 0);
++ drm_ttm_set_caching(ttm, 0);
+
+ drm_ttm_free_user_pages(ttm);
+ } else
+@@ -404,7 +397,7 @@ void drm_ttm_fixup_caching(struct drm_ttm *ttm)
+ struct drm_ttm_backend *be = ttm->be;
+ if (be->func->needs_ub_cache_adjust(be))
+ if (ttm->page_flags & DRM_TTM_PAGE_ALLOC_CACHED)
+- drm_ttm_set_caching(ttm, 0, 1);
++ drm_ttm_set_caching(ttm, 0);
+ ttm->state = ttm_unbound;
+ }
+ }
+@@ -452,7 +445,7 @@ int drm_ttm_bind(struct drm_ttm *ttm, struct drm_bo_mem_reg *bo_mem)
+ be = ttm->be;
+
+ if ((ttm->state == ttm_unbound || ttm->state == ttm_unpopulated) && !cached)
+- drm_ttm_set_caching(ttm, DRM_TTM_PAGE_UNCACHED, cached);
++ drm_ttm_set_caching(ttm, DRM_TTM_PAGE_UNCACHED);
+ else if ((bo_mem->flags & DRM_BO_FLAG_CACHED_MAPPED) &&
+ bo_driver->ttm_cache_flush)
+ bo_driver->ttm_cache_flush(ttm);
+diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
+index 179d408..2d18df9 100644
+--- a/drivers/gpu/drm/radeon/radeon_cp.c
++++ b/drivers/gpu/drm/radeon/radeon_cp.c
+@@ -2722,16 +2722,7 @@ int radeon_modeset_cp_resume(struct drm_device *dev)
+ drm_radeon_private_t *dev_priv = dev->dev_private;
+
+ radeon_do_wait_for_idle(dev_priv);
+-#if __OS_HAS_AGP
+- if (dev_priv->flags & RADEON_IS_AGP) {
+- /* Turn off PCI GART */
+- radeon_set_pcigart(dev_priv, 0);
+- } else
+-#endif
+- {
+- /* Turn on PCI GART */
+- radeon_set_pcigart(dev_priv, 1);
+- }
++ radeon_gart_start(dev);
+ radeon_gart_flush(dev);
+
+ radeon_cp_load_microcode(dev_priv);
+diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
+index e3498a4..6a69864 100644
+--- a/drivers/gpu/drm/radeon/radeon_drv.h
++++ b/drivers/gpu/drm/radeon/radeon_drv.h
+@@ -2253,6 +2253,7 @@ extern int radeon_init_mem_type(struct drm_device * dev, uint32_t type,
+ extern int radeon_move(struct drm_buffer_object * bo,
+ int evict, int no_wait, struct drm_bo_mem_reg * new_mem);
+
++extern void radeon_gart_start(struct drm_device *drm);
+ extern void radeon_gart_flush(struct drm_device *dev);
+ extern uint64_t radeon_evict_flags(struct drm_buffer_object *bo);
+
+@@ -2330,6 +2331,7 @@ struct drm_gem_object *radeon_gem_object_alloc(struct drm_device *dev, int size,
+ int initial_domain, bool discardable);
+ int radeon_modeset_init(struct drm_device *dev);
+ void radeon_modeset_cleanup(struct drm_device *dev);
++int radeon_modeset_agp_init(struct drm_device *dev);
+ extern u32 RADEON_READ_MCIND(drm_radeon_private_t *dev_priv, int addr);
+ void radeon_read_agp_location(drm_radeon_private_t *dev_priv, u32 *agp_lo, u32 *agp_hi);
+ void radeon_write_fb_location(drm_radeon_private_t *dev_priv, u32 fb_loc);
+diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
+index cb96470..4bfc316 100644
+--- a/drivers/gpu/drm/radeon/radeon_gem.c
++++ b/drivers/gpu/drm/radeon/radeon_gem.c
+@@ -563,8 +563,16 @@ static int radeon_gart_init(struct drm_device *dev)
+ dev_priv->gart_info.addr = dev_priv->gart_info.table_handle->vaddr;
+ dev_priv->gart_info.bus_addr = dev_priv->gart_info.table_handle->busaddr;
+ }
++
++ radeon_gart_start(dev);
+
+- /* gart values setup - start the GART */
++ return 0;
++}
++
++/* gart values setup - start the GART */
++void radeon_gart_start(struct drm_device *dev) {
++ drm_radeon_private_t *dev_priv = dev->dev_private;
++
+ if (dev_priv->flags & RADEON_IS_AGP) {
+ radeon_set_pcigart(dev_priv, 0);
+ /* enable AGP GART bits */
+@@ -581,8 +589,6 @@ static int radeon_gart_init(struct drm_device *dev)
+ } else {
+ radeon_set_pcigart(dev_priv, 1);
+ }
+-
+- return 0;
+ }
+
+ int radeon_alloc_gart_objects(struct drm_device *dev)
+@@ -1024,10 +1030,12 @@ int radeon_modeset_agp_init(struct drm_device *dev)
+ struct radeon_agpmode_quirk *p = radeon_agpmode_quirk_list;
+
+ /* Acquire AGP. */
+- ret = drm_agp_acquire(dev);
+- if (ret) {
+- DRM_ERROR("Unable to acquire AGP: %d\n", ret);
+- return ret;
++ if (!dev->agp->acquired) { /* don't need to repeat on resume */
++ ret = drm_agp_acquire(dev);
++ if (ret) {
++ DRM_ERROR("Unable to acquire AGP: %d\n", ret);
++ return ret;
++ }
+ }
+
+ ret = drm_agp_info(dev, &info);
+diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
+index 5a57056..684b7ca 100644
+--- a/drivers/gpu/drm/radeon/radeon_pm.c
++++ b/drivers/gpu/drm/radeon/radeon_pm.c
+@@ -156,6 +156,9 @@ int radeon_resume(struct drm_device *dev)
+ /* Turn on bus mastering -todo fix properly */
+ radeon_enable_bm(dev_priv);
+
++ if (dev_priv->flags & RADEON_IS_AGP)
++ radeon_modeset_agp_init(dev);
++
+ if (dev_priv->flags & RADEON_IS_PCIE) {
+ memcpy_toio(dev_priv->mm.pcie_table.kmap.virtual, dev_priv->mm.pcie_table_backup, dev_priv->gart_info.table_size);
+ }
drm-pnp-add-resource-range-checker.patch:
drivers/pnp/resource.c | 18 ++++++++++++++++++
include/linux/pnp.h | 2 ++
2 files changed, 20 insertions(+)
Index: drm-pnp-add-resource-range-checker.patch
===================================================================
RCS file: drm-pnp-add-resource-range-checker.patch
diff -N drm-pnp-add-resource-range-checker.patch
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ drm-pnp-add-resource-range-checker.patch 12 Aug 2009 16:49:51 -0000 1.3
@@ -0,0 +1,49 @@
+diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c
+index f604061..ba97654 100644
+--- a/drivers/pnp/resource.c
++++ b/drivers/pnp/resource.c
+@@ -638,6 +638,24 @@ int pnp_possible_config(struct pnp_dev *dev, int type, resource_size_t start,
+ }
+ EXPORT_SYMBOL(pnp_possible_config);
+
++int pnp_range_reserved(resource_size_t start, resource_size_t end)
++{
++ struct pnp_dev *dev;
++ struct pnp_resource *pnp_res;
++ resource_size_t *dev_start, *dev_end;
++
++ pnp_for_each_dev(dev) {
++ list_for_each_entry(pnp_res, &dev->resources, list) {
++ dev_start = &pnp_res->res.start;
++ dev_end = &pnp_res->res.end;
++ if (ranged_conflict(&start, &end, dev_start, dev_end))
++ return 1;
++ }
++ }
++ return 0;
++}
++EXPORT_SYMBOL(pnp_range_reserved);
++
+ /* format is: pnp_reserve_irq=irq1[,irq2] .... */
+ static int __init pnp_setup_reserve_irq(char *str)
+ {
+diff --git a/include/linux/pnp.h b/include/linux/pnp.h
+index ca3c887..b063c73 100644
+--- a/include/linux/pnp.h
++++ b/include/linux/pnp.h
+@@ -446,6 +446,7 @@ int pnp_start_dev(struct pnp_dev *dev);
+ int pnp_stop_dev(struct pnp_dev *dev);
+ int pnp_activate_dev(struct pnp_dev *dev);
+ int pnp_disable_dev(struct pnp_dev *dev);
++int pnp_range_reserved(resource_size_t start, resource_size_t end);
+
+ /* protocol helpers */
+ int pnp_is_active(struct pnp_dev *dev);
+@@ -476,6 +477,7 @@ static inline int pnp_start_dev(struct pnp_dev *dev) { return -ENODEV; }
+ static inline int pnp_stop_dev(struct pnp_dev *dev) { return -ENODEV; }
+ static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; }
+ static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; }
++static inline int pnp_range_reserved(resource_size_t start, resource_size_t end) { return 0;}
+
+ /* protocol helpers */
+ static inline int pnp_is_active(struct pnp_dev *dev) { return 0; }
drm-radeon-cs-oops-fix.patch:
radeon_cs.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
Index: drm-radeon-cs-oops-fix.patch
===================================================================
RCS file: drm-radeon-cs-oops-fix.patch
diff -N drm-radeon-cs-oops-fix.patch
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ drm-radeon-cs-oops-fix.patch 12 Aug 2009 16:49:51 -0000 1.4
@@ -0,0 +1,38 @@
+diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c
+index 1152552..3307387 100644
+--- a/drivers/gpu/drm/radeon/radeon_cs.c
++++ b/drivers/gpu/drm/radeon/radeon_cs.c
+@@ -41,22 +41,27 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *fpriv)
+ long size;
+ int r, i;
+
++ if (dev_priv == NULL) {
++ DRM_ERROR("called with no initialization\n");
++ return -EINVAL;
++ }
++
++ if (!drm_core_check_feature(dev, DRIVER_MODESET)) {
++ DRM_ERROR("CS ioctl called without modesetting\n");
++ return -EINVAL;
++ }
++
+ mutex_lock(&dev_priv->cs.cs_mutex);
+ /* set command stream id to 0 which is fake id */
+ cs_id = 0;
+ cs->cs_id = cs_id;
+
+- if (dev_priv == NULL) {
+- DRM_ERROR("called with no initialization\n");
+- mutex_unlock(&dev_priv->cs.cs_mutex);
+- return -EINVAL;
+- }
++
+ if (!cs->num_chunks) {
+ mutex_unlock(&dev_priv->cs.cs_mutex);
+ return 0;
+ }
+
+-
+ chunk_array = drm_calloc(cs->num_chunks, sizeof(uint64_t), DRM_MEM_DRIVER);
+ if (!chunk_array) {
+ mutex_unlock(&dev_priv->cs.cs_mutex);
drm-radeon-new-pciids.patch:
drivers/gpu/drm/radeon/r600_cp.c | 42 +++++++++++++++++++++++++++++++-----
drivers/gpu/drm/radeon/radeon_drv.h | 1
include/drm/drm_pciids.h | 7 ++++++
3 files changed, 45 insertions(+), 5 deletions(-)
Index: drm-radeon-new-pciids.patch
===================================================================
RCS file: drm-radeon-new-pciids.patch
diff -N drm-radeon-new-pciids.patch
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ drm-radeon-new-pciids.patch 12 Aug 2009 16:49:51 -0000 1.3
@@ -0,0 +1,133 @@
+diff --git a/drivers/gpu/drm/radeon/r600_cp.c b/drivers/gpu/drm/radeon/r600_cp.c
+index c3f12e6..cbbfbbf 100644
+--- a/drivers/gpu/drm/radeon/r600_cp.c
++++ b/drivers/gpu/drm/radeon/r600_cp.c
+@@ -478,26 +478,27 @@ static void r700_cp_load_microcode(drm_radeon_private_t *dev_priv)
+
+ if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV770)) {
+ RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+- DRM_INFO("Loading RV770 PFP Microcode\n");
++ DRM_INFO("Loading RV770/RV790 PFP Microcode\n");
+ for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
+ RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV770_pfp_microcode[i]);
+ RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+
+ RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+- DRM_INFO("Loading RV770 CP Microcode\n");
++ DRM_INFO("Loading RV770/RV790 CP Microcode\n");
+ for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
+ RADEON_WRITE(R600_CP_ME_RAM_DATA, RV770_cp_microcode[i]);
+ RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+
+- } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV730)) {
++ } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV730) ||
++ ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV740)) {
+ RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+- DRM_INFO("Loading RV730 PFP Microcode\n");
++ DRM_INFO("Loading RV730/RV740 PFP Microcode\n");
+ for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
+ RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV730_pfp_microcode[i]);
+ RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+
+ RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+- DRM_INFO("Loading RV730 CP Microcode\n");
++ DRM_INFO("Loading RV730/RV740 CP Microcode\n");
+ for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
+ RADEON_WRITE(R600_CP_ME_RAM_DATA, RV730_cp_microcode[i]);
+ RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+@@ -1324,6 +1325,10 @@ static void r700_gfx_init(struct drm_device *dev,
+ dev_priv->r700_sc_prim_fifo_size = 0xf9;
+ dev_priv->r700_sc_hiz_tile_fifo_size = 0x30;
+ dev_priv->r700_sc_earlyz_tile_fifo_fize = 0x130;
++ if (dev_priv->r600_sx_max_export_pos_size > 16) {
++ dev_priv->r600_sx_max_export_pos_size -= 16;
++ dev_priv->r600_sx_max_export_smx_size += 16;
++ }
+ break;
+ case CHIP_RV710:
+ dev_priv->r600_max_pipes = 2;
+@@ -1345,6 +1350,31 @@ static void r700_gfx_init(struct drm_device *dev,
+ dev_priv->r700_sc_hiz_tile_fifo_size = 0x30;
+ dev_priv->r700_sc_earlyz_tile_fifo_fize = 0x130;
+ break;
++ case CHIP_RV740:
++ dev_priv->r600_max_pipes = 4;
++ dev_priv->r600_max_tile_pipes = 4;
++ dev_priv->r600_max_simds = 8;
++ dev_priv->r600_max_backends = 4;
++ dev_priv->r600_max_gprs = 256;
++ dev_priv->r600_max_threads = 248;
++ dev_priv->r600_max_stack_entries = 512;
++ dev_priv->r600_max_hw_contexts = 8;
++ dev_priv->r600_max_gs_threads = 16 * 2;
++ dev_priv->r600_sx_max_export_size = 256;
++ dev_priv->r600_sx_max_export_pos_size = 32;
++ dev_priv->r600_sx_max_export_smx_size = 224;
++ dev_priv->r600_sq_num_cf_insts = 2;
++
++ dev_priv->r700_sx_num_of_sets = 7;
++ dev_priv->r700_sc_prim_fifo_size = 0x100;
++ dev_priv->r700_sc_hiz_tile_fifo_size = 0x30;
++ dev_priv->r700_sc_earlyz_tile_fifo_fize = 0x130;
++
++ if (dev_priv->r600_sx_max_export_pos_size > 16) {
++ dev_priv->r600_sx_max_export_pos_size -= 16;
++ dev_priv->r600_sx_max_export_smx_size += 16;
++ }
++ break;
+ default:
+ break;
+ }
+@@ -1493,6 +1523,7 @@ static void r700_gfx_init(struct drm_device *dev,
+ break;
+ case CHIP_RV730:
+ case CHIP_RV710:
++ case CHIP_RV740:
+ default:
+ sq_ms_fifo_sizes |= R600_FETCH_FIFO_HIWATER(0x4);
+ break;
+@@ -1569,6 +1600,7 @@ static void r700_gfx_init(struct drm_device *dev,
+ switch (dev_priv->flags & RADEON_FAMILY_MASK) {
+ case CHIP_RV770:
+ case CHIP_RV730:
++ case CHIP_RV740:
+ gs_prim_buffer_depth = 384;
+ break;
+ case CHIP_RV710:
+diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
+index 6a69864..07913ec 100644
+--- a/drivers/gpu/drm/radeon/radeon_drv.h
++++ b/drivers/gpu/drm/radeon/radeon_drv.h
+@@ -148,6 +148,7 @@ enum radeon_family {
+ CHIP_RV770,
+ CHIP_RV730,
+ CHIP_RV710,
++ CHIP_RV740,
+ CHIP_LAST,
+ };
+
+diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
+index fc55db7..71bfec9 100644
+--- a/include/drm/drm_pciids.h
++++ b/include/drm/drm_pciids.h
+@@ -254,6 +254,11 @@
+ {0x1002, 0x940A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R600|RADEON_NEW_MEMMAP}, \
+ {0x1002, 0x940B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R600|RADEON_NEW_MEMMAP}, \
+ {0x1002, 0x940F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R600|RADEON_NEW_MEMMAP}, \
++ {0x1002, 0x94A0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV740|RADEON_NEW_MEMMAP}, \
++ {0x1002, 0x94A1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV740|RADEON_NEW_MEMMAP}, \
++ {0x1002, 0x94B1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV740|RADEON_NEW_MEMMAP}, \
++ {0x1002, 0x94B3, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV740|RADEON_NEW_MEMMAP}, \
++ {0x1002, 0x94B5, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV740|RADEON_NEW_MEMMAP}, \
+ {0x1002, 0x9440, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_NEW_MEMMAP}, \
+ {0x1002, 0x9441, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_NEW_MEMMAP}, \
+ {0x1002, 0x9442, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_NEW_MEMMAP}, \
+@@ -268,6 +273,8 @@
+ {0x1002, 0x9456, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_NEW_MEMMAP}, \
+ {0x1002, 0x945A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
+ {0x1002, 0x945B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
++ {0x1002, 0x9460, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
++ {0x1002, 0x9462, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
+ {0x1002, 0x946A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
+ {0x1002, 0x946B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
+ {0x1002, 0x947A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV770|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
drm-i915-resume-force-mode.patch:
i915_suspend.c | 4 ++++
1 file changed, 4 insertions(+)
Index: drm-i915-resume-force-mode.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-i915-resume-force-mode.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -p -r1.2 -r1.3
--- drm-i915-resume-force-mode.patch 26 Mar 2009 18:46:43 -0000 1.2
+++ drm-i915-resume-force-mode.patch 12 Aug 2009 16:49:49 -0000 1.3
@@ -1,7 +1,7 @@
-http://lists.freedesktop.org/archives/intel-gfx/2009-February/001313.html
-
---- a/drivers/gpu/drm/i915/i915_suspend.c.orig 2009-02-18 22:59:19.000000000 -0500
-+++ b/drivers/gpu/drm/i915/i915_suspend.c 2009-02-18 22:59:58.000000000 -0500
+diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
+index ce8a213..7e90be3 100644
+--- a/drivers/gpu/drm/i915/i915_suspend.c
++++ b/drivers/gpu/drm/i915/i915_suspend.c
@@ -28,6 +28,7 @@
#include "drm.h"
#include "i915_drm.h"
@@ -10,41 +10,13 @@ http://lists.freedesktop.org/archives/in
static bool i915_pipe_enabled(struct drm_device *dev, enum pipe pipe)
{
-@@ -519,6 +520,8 @@
-
- i915_restore_vga(dev);
-
-+ drm_helper_resume_force_mode(dev);
-+
- return 0;
- }
-
-From f5192bce8be69e5b33d7579bc282fef4d673e2c1 Mon Sep 17 00:00:00 2001
-From: Lubomir Rintel <lkundrak at v3.sk>
-Date: Sun, 15 Mar 2009 13:55:55 +0100
-Subject: [PATCH] Fix i915 nomodeset NULL deref. during PM resume
-
-drm_helper_resume_force_mode() would crash while attempting to
-iterate through crtc_list, which is uninitialized when is modesetting
-disabled.
----
- drivers/gpu/drm/i915/i915_suspend.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
-index ef5fb6e..b138032 100644
---- a/drivers/gpu/drm/i915/i915_suspend.c
-+++ b/drivers/gpu/drm/i915/i915_suspend.c
-@@ -520,7 +520,8 @@ int i915_restore_state(struct drm_device *dev)
+@@ -532,6 +533,9 @@ int i915_restore_state(struct drm_device *dev)
i915_restore_vga(dev);
-- drm_helper_resume_force_mode(dev);
+ if (drm_core_check_feature(dev, DRIVER_MODESET))
+ drm_helper_resume_force_mode(dev);
-
++
return 0;
}
---
-1.6.2
-
+
drm-intel-big-hammer.patch:
i915_gem.c | 5 +++++
1 file changed, 5 insertions(+)
Index: drm-intel-big-hammer.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-intel-big-hammer.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- drm-intel-big-hammer.patch 11 Mar 2009 22:45:01 -0000 1.1
+++ drm-intel-big-hammer.patch 12 Aug 2009 16:49:49 -0000 1.2
@@ -1,13 +1,13 @@
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
-index 37427e4..08af9db 100644
+index 39f5c65..eec945a 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -2553,6 +2553,11 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
+@@ -3253,6 +3253,11 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
mutex_lock(&dev->struct_mutex);
+ /* We don't get the flushing right for these chipsets, use the
-+ * big hamer for now to avoid random crashiness. */
++ * big hammer for now to avoid random crashiness. */
+ if (IS_I855(dev) || IS_I865G(dev))
+ wbinvd();
+
drm-modesetting-radeon.patch:
arch/x86/mm/pat.c | 1
drivers/gpu/drm/Kconfig | 11
drivers/gpu/drm/Makefile | 3
drivers/gpu/drm/ati_pcigart.c | 267 +
drivers/gpu/drm/drm_agpsupport.c | 171
drivers/gpu/drm/drm_bo.c | 2161 +++++++++
drivers/gpu/drm/drm_bo_move.c | 709 +++
drivers/gpu/drm/drm_bufs.c | 12
drivers/gpu/drm/drm_crtc.c | 2
drivers/gpu/drm/drm_crtc_helper.c | 29
drivers/gpu/drm/drm_debugfs.c | 1
drivers/gpu/drm/drm_dma.c | 2
drivers/gpu/drm/drm_drv.c | 29
drivers/gpu/drm/drm_fence.c | 540 ++
drivers/gpu/drm/drm_fops.c | 5
drivers/gpu/drm/drm_info.c | 8
drivers/gpu/drm/drm_memory.c | 107
drivers/gpu/drm/drm_page_alloc.c | 171
drivers/gpu/drm/drm_page_alloc.h | 33
drivers/gpu/drm/drm_stub.c | 18
drivers/gpu/drm/drm_ttm.c | 476 ++
drivers/gpu/drm/drm_vm.c | 208
drivers/gpu/drm/i915/i915_irq.c | 3
drivers/gpu/drm/i915/intel_display.c | 22
drivers/gpu/drm/radeon/Makefile | 6
drivers/gpu/drm/radeon/ObjectID.h | 518 ++
drivers/gpu/drm/radeon/atom-bits.h | 48
drivers/gpu/drm/radeon/atom-names.h | 100
drivers/gpu/drm/radeon/atom-types.h | 42
drivers/gpu/drm/radeon/atom.c | 1141 +++++
drivers/gpu/drm/radeon/atom.h | 150
drivers/gpu/drm/radeon/atombios.h | 5025 ++++++++++++++++++++++
drivers/gpu/drm/radeon/atombios_crtc.c | 629 ++
drivers/gpu/drm/radeon/r300_cmdbuf.c | 153
drivers/gpu/drm/radeon/r300_reg.h | 16
drivers/gpu/drm/radeon/r600_cp.c | 2
drivers/gpu/drm/radeon/radeon_atombios.c | 1050 ++++
drivers/gpu/drm/radeon/radeon_buffer.c | 473 ++
drivers/gpu/drm/radeon/radeon_combios.c | 1768 +++++++
drivers/gpu/drm/radeon/radeon_connectors.c | 610 ++
drivers/gpu/drm/radeon/radeon_cp.c | 1546 ++++++
drivers/gpu/drm/radeon/radeon_cs.c | 684 +++
drivers/gpu/drm/radeon/radeon_cursor.c | 264 +
drivers/gpu/drm/radeon/radeon_display.c | 670 ++
drivers/gpu/drm/radeon/radeon_drv.c | 139
drivers/gpu/drm/radeon/radeon_drv.h | 500 +-
drivers/gpu/drm/radeon/radeon_encoders.c | 1716 +++++++
drivers/gpu/drm/radeon/radeon_fb.c | 934 ++++
drivers/gpu/drm/radeon/radeon_fence.c | 99
drivers/gpu/drm/radeon/radeon_fixed.h | 53
drivers/gpu/drm/radeon/radeon_gem.c | 1578 +++++++
drivers/gpu/drm/radeon/radeon_gem_debugfs.c | 179
drivers/gpu/drm/radeon/radeon_i2c.c | 205
drivers/gpu/drm/radeon/radeon_irq.c | 64
drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 1602 +++++++
drivers/gpu/drm/radeon/radeon_legacy_encoders.c | 1284 +++++
drivers/gpu/drm/radeon/radeon_mem.c | 2
drivers/gpu/drm/radeon/radeon_mode.h | 398 +
drivers/gpu/drm/radeon/radeon_pm.c | 263 +
drivers/gpu/drm/radeon/radeon_reg.h | 5364 ++++++++++++++++++++++++
drivers/gpu/drm/radeon/radeon_state.c | 73
include/drm/drm.h | 1
include/drm/drmP.h | 96
include/drm/drm_crtc_helper.h | 2
include/drm/drm_objects.h | 913 ++++
include/drm/radeon_drm.h | 130
66 files changed, 35057 insertions(+), 422 deletions(-)
View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.83 -r 1.84 drm-modesetting-radeon.patchIndex: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-modesetting-radeon.patch,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -p -r1.83 -r1.84
--- drm-modesetting-radeon.patch 25 Jul 2009 04:09:19 -0000 1.83
+++ drm-modesetting-radeon.patch 12 Aug 2009 16:49:49 -0000 1.84
@@ -1,1755 +1,5 @@
-commit dea27f6e83efabdc3e37bc5a91d29d6dab893853
-Author: Dave Airlie <airlied at redhat.com>
-Date: Wed Mar 18 17:07:07 2009 +1000
-
- radeon: fixup encoder oops due to wrong ordering on init calls
-
-commit 4a90f1edefee2cba39d135f2866e1bacc1ac647e
-Author: Dave Airlie <airlied at redhat.com>
-Date: Thu Mar 19 00:16:00 2009 +1000
-
- drm/ttm: re-org the whole cached/uncached allocator yet again.
-
- This removes the allocator type, and instead tracks when pages
- were allocated from which pool and frees them back into that pool
-
-commit c8ae93fa4ac69112f4fc16477f73e0a98bba2765
-Author: Dave Airlie <airlied at redhat.com>
-Date: Sun Mar 15 18:26:42 2009 +1000
-
- ttm: prefetch pages on pagefault
-
-commit f4df0e7870378ec40c268b95fb4b5d13533095fd
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Mon Mar 16 03:52:13 2009 -0400
-
- radeon: make sure to free connector priv when done
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit 96d923793eb924750b26e8ab2a4264131e17cd5b
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Mon Mar 16 03:36:16 2009 -0400
-
- radeon: fix combios asic init
-
- - igp chips don't have asic_init3/4 or ram reset tables
- - write out the detected ram size to the CONFIG_MEMSIZE register
- - some r1xx chips require ram detection rather than reading size
- from bios tables
- - asic_init5 table isn't needed
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit 68f14af742eda9fd28c920776ce5396e304f8a82
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Mon Mar 16 03:16:35 2009 -0400
-
- radeon: rework bios scratch regsiter handling
-
- split bios scratch reg handling into 3 functions:
-
- - connected/active
- - crtc to encoder mapping
- - encoder dpms state
-
- Hook the functions in at the appropriate places in
- the driver. DVI-I is a bit messy since we need to know
- digital vs analog so we have to update the scratch regs
- twice: once in detect() and again after we know digital/analog
- in get_modes().
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit 3ba04861b4d399a7c6e21f0a7279d5f087fc4a8c
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Sat Mar 14 16:43:14 2009 -0400
-
- radeon: rework combios encoder/connector setup
-
- - along the same lines as atom
- - re-enable atom and legacy paths for r4xx cards
- - remove bios_connector struct
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit 2ed15179f72e66a020a7f318cc4c3fa57865e4ba
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Thu Mar 12 16:02:01 2009 -0400
-
- radeon: fix misleading messages
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit cb917ec2b585f5ac873ab2e6938da9a3b730c0a1
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Thu Mar 12 14:27:06 2009 -0400
-
- atom: fix up encoder routines to deal with connector setup
-
- often times the links or lanes used are dependant on the
- connector rather than the encoder.
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit abe11890fc272189712f2e6268a8751e25b7b7b5
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Thu Mar 12 13:43:03 2009 -0400
-
- atom: re-enable quirks
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit 6a45dbd73c14735711f1803e8a3dd1063b7b3021
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Thu Mar 12 13:21:32 2009 -0400
-
- object table: don't add ddc for tv/cv
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit 6fb018a3740510f140bcd5b6b89904e9d3167811
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Thu Mar 12 13:10:50 2009 -0400
-
- radeon: major restructuring of atom output/connector setup
-
- - add connectors and encoders while parsing the bios tables.
- - pull in fixed up object header parsing for r6xx+
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit 034267381be779a1bbdb5f6f97c1471fb8538a04
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Wed Mar 4 13:02:26 2009 -0500
-
- RS600 doesn't have DFP quirk in connector table
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit b7936094db13c736e4bee7494c2b99a8e5ced042
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Thu Mar 5 16:37:57 2009 -0500
-
- R6xx/R7xx: don't mess with RADEON_HOST_PATH_CNTL
-
- these chips don't have this reg at this location.
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit a1fdbf2f4de3988f5e3319ee9f267f7b27e8fc6e
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Wed Mar 11 16:50:19 2009 -0400
-
- radeon: make sure to free enc_priv when done
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit d54586a52852497d82f322c536515d223697fdf4
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Wed Mar 11 15:43:16 2009 -0400
-
- radeon: restructure encoders
-
- move encoder specific data into encoder specific structs
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit 0215044d42faded71b8591a79550c0bf04908458
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Wed Mar 11 11:23:16 2009 -0400
-
- radeon: atom modesetting updates
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
-
-commit 121d45a2e9562836138c658224def839bb166f68
-Author: Dave Airlie <airlied at redhat.com>
-Date: Thu Mar 12 11:39:05 2009 +1000
-
- drm/radeon: Don't try to use agp symbols if we don't have AGP
-
- The radeon_buffer.c addition that gets pulled into the DRM driver as
- part of Kernel Mode Setting (even if you disable KMS for the Radeon
- driver) was assuming that it was safe to use symbols from the AGP code,
- but that isn't safe on platforms where __OS_HAS_AGP is 0. Such as
- sparc64. :)
-
- This patch gets the code building again. It probably should go into the
- actual kms patch, but if you would prefer this go as a separate patch, I
- can apply it. With this, we can get rawhide building for sparc64, so I'm
- eager to see it applied in one way or another.
-
- Signed-off-by: Tom "spot" Callaway <tcallawa at redhat.com>
-
-commit 36bbbdea9a2e77c1d1da7504bc5f03267d0e0d6c
-Author: Dave Airlie <airlied at dhcp-1-203.bne.redhat.com>
-Date: Thu Mar 12 10:58:05 2009 +1000
-
- radeon: fixup the IB getting routine
-
- This makes the IB get routine a lot smarter and hopefully
[...6099 lines suppressed...]
-+#define DRM_IOCTL_RADEON_GEM_PWRITE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PWRITE, struct drm_radeon_gem_pwrite)
-+#define DRM_IOCTL_RADEON_GEM_SET_DOMAIN DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_DOMAIN, struct drm_radeon_gem_set_domain)
-+#define DRM_IOCTL_RADEON_GEM_WAIT_RENDERING DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_RENDERING, struct drm_radeon_gem_wait_rendering)
-+#define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs)
-+
++/* KMS */
++#define DRM_IOCTL_RADEON_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_INFO, struct drm_radeon_gem_info)
++#define DRM_IOCTL_RADEON_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_CREATE, struct drm_radeon_gem_create)
++#define DRM_IOCTL_RADEON_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_MMAP, struct drm_radeon_gem_mmap)
++#define DRM_IOCTL_RADEON_GEM_PREAD DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PREAD, struct drm_radeon_gem_pread)
++#define DRM_IOCTL_RADEON_GEM_PWRITE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PWRITE, struct drm_radeon_gem_pwrite)
++#define DRM_IOCTL_RADEON_GEM_SET_DOMAIN DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_DOMAIN, struct drm_radeon_gem_set_domain)
++#define DRM_IOCTL_RADEON_GEM_WAIT_IDLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_IDLE, struct drm_radeon_gem_wait_idle)
++#define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs)
++#define DRM_IOCTL_RADEON_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INFO, struct drm_radeon_info)
+
+
typedef struct drm_radeon_init {
enum {
- RADEON_INIT_CP = 0x01,
-@@ -680,6 +713,8 @@ typedef struct drm_radeon_indirect {
+@@ -682,6 +703,7 @@ typedef struct drm_radeon_indirect {
#define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */
#define RADEON_PARAM_FB_LOCATION 14 /* FB location */
#define RADEON_PARAM_NUM_GB_PIPES 15 /* num GB pipes */
-+#define RADEON_PARAM_KERNEL_MM 16
-+#define RADEON_PARAM_DEVICE_ID 17
++#define RADEON_PARAM_DEVICE_ID 16
typedef struct drm_radeon_getparam {
int param;
-@@ -734,6 +769,7 @@ typedef struct drm_radeon_setparam {
- #define RADEON_SETPARAM_NEW_MEMMAP 4 /* Use new memory map */
- #define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5 /* PCI GART Table Size */
- #define RADEON_SETPARAM_VBLANK_CRTC 6 /* VBLANK CRTC */
-+#define RADEON_SETPARAM_MM_INIT 7 /* DDX wants memory manager but has no modesetting */
- /* 1.14: Clients can allocate/free a surface
- */
- typedef struct drm_radeon_surface_alloc {
-@@ -749,4 +785,106 @@ typedef struct drm_radeon_surface_free {
+@@ -751,4 +773,112 @@ typedef struct drm_radeon_surface_free {
#define DRM_RADEON_VBLANK_CRTC1 1
#define DRM_RADEON_VBLANK_CRTC2 2
-+#define RADEON_GEM_DOMAIN_CPU 0x1 // Cached CPU domain
-+#define RADEON_GEM_DOMAIN_GTT 0x2 // GTT or cache flushed
-+#define RADEON_GEM_DOMAIN_VRAM 0x4 // VRAM domain
++/*
++ * Kernel modesetting world below.
++ */
++#define RADEON_GEM_DOMAIN_CPU 0x1
++#define RADEON_GEM_DOMAIN_GTT 0x2
++#define RADEON_GEM_DOMAIN_VRAM 0x4
+
-+/* return to userspace start/size of gtt and vram apertures */
+struct drm_radeon_gem_info {
-+ uint64_t gart_start;
-+ uint64_t gart_size;
-+ uint64_t vram_start;
-+ uint64_t vram_size;
-+ uint64_t vram_visible;
++ uint64_t gart_size;
++ uint64_t vram_size;
++ uint64_t vram_visible;
+};
+
++#define RADEON_GEM_NO_BACKING_STORE 1
++
+struct drm_radeon_gem_create {
-+ uint64_t size;
-+ uint64_t alignment;
-+ uint32_t handle;
-+ uint32_t initial_domain; // to allow VRAM to be created
-+ uint32_t no_backing_store; // for VRAM objects - select whether they need backing store
-+ // pretty much front/back/depth don't need it - other things do
++ uint64_t size;
++ uint64_t alignment;
++ uint32_t handle;
++ uint32_t initial_domain;
++ uint32_t flags;
+};
+
+struct drm_radeon_gem_mmap {
-+ uint32_t handle;
-+ uint32_t pad;
-+ uint64_t offset;
-+ uint64_t size;
-+ uint64_t addr_ptr;
++ uint32_t handle;
++ uint32_t pad;
++ uint64_t offset;
++ uint64_t size;
++ uint64_t addr_ptr;
+};
+
+struct drm_radeon_gem_set_domain {
-+ uint32_t handle;
-+ uint32_t read_domains;
-+ uint32_t write_domain;
++ uint32_t handle;
++ uint32_t read_domains;
++ uint32_t write_domain;
+};
+
-+struct drm_radeon_gem_wait_rendering {
-+ uint32_t handle;
-+};
-+
-+struct drm_radeon_gem_pin {
-+ uint32_t handle;
-+ uint32_t pin_domain;
-+ uint64_t alignment;
-+ uint64_t offset;
-+};
-+
-+struct drm_radeon_gem_unpin {
-+ uint32_t handle;
-+ uint32_t pad;
++struct drm_radeon_gem_wait_idle {
++ uint32_t handle;
++ uint32_t pad;
+};
+
+struct drm_radeon_gem_busy {
-+ uint32_t handle;
-+ uint32_t busy;
++ uint32_t handle;
++ uint32_t busy;
+};
+
+struct drm_radeon_gem_pread {
@@ -38670,7 +37375,8 @@ index 937a275..f716e0a 100644
+ /** Length of data to read */
+ uint64_t size;
+ /** Pointer to write the data into. */
-+ uint64_t data_ptr; /* void *, but pointers are not 32/64 compatible */
++ /* void *, but pointers are not 32/64 compatible */
++ uint64_t data_ptr;
+};
+
+struct drm_radeon_gem_pwrite {
@@ -38682,28 +37388,43 @@ index 937a275..f716e0a 100644
+ /** Length of data to write */
+ uint64_t size;
+ /** Pointer to read the data from. */
-+ uint64_t data_ptr; /* void *, but pointers are not 32/64 compatible */
++ /* void *, but pointers are not 32/64 compatible */
++ uint64_t data_ptr;
+};
+
-+
-+/* New interface which obsolete all previous interface.
-+ */
-+#define RADEON_CHUNK_ID_RELOCS 0x01
-+#define RADEON_CHUNK_ID_IB 0x02
-+#define RADEON_CHUNK_ID_OLD 0xff
++#define RADEON_CHUNK_ID_RELOCS 0x01
++#define RADEON_CHUNK_ID_IB 0x02
+
+struct drm_radeon_cs_chunk {
-+ uint32_t chunk_id;
-+ uint32_t length_dw;
-+ uint64_t chunk_data;
++ uint32_t chunk_id;
++ uint32_t length_dw;
++ uint64_t chunk_data;
+};
+
-+struct drm_radeon_cs {
-+ uint32_t num_chunks;
-+ uint32_t cs_id;
-+ uint64_t chunks; /* this points to uint64_t * which point to
-+ cs chunks */
++struct drm_radeon_cs_reloc {
++ uint32_t handle;
++ uint32_t read_domains;
++ uint32_t write_domain;
++ uint32_t flags;
+};
+
++struct drm_radeon_cs {
++ uint32_t num_chunks;
++ uint32_t cs_id;
++ /* this points to uint64_t * which point to cs chunks */
++ uint64_t chunks;
++ /* updates to the limits after this CS ioctl */
++ uint64_t gart_limit;
++ uint64_t vram_limit;
++};
++
++#define RADEON_INFO_DEVICE_ID 0x00
++#define RADEON_INFO_NUM_GB_PIPES 0x01
++
++struct drm_radeon_info {
++ uint32_t request;
++ uint32_t pad;
++ uint64_t value;
++};
+
#endif
drm-no-gem-on-i8xx.patch:
i915_dma.c | 4 ++--
i915_drv.h | 3 +++
2 files changed, 5 insertions(+), 2 deletions(-)
Index: drm-no-gem-on-i8xx.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-no-gem-on-i8xx.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -p -r1.3 -r1.4
--- drm-no-gem-on-i8xx.patch 25 Jul 2009 04:09:21 -0000 1.3
+++ drm-no-gem-on-i8xx.patch 12 Aug 2009 16:49:50 -0000 1.4
@@ -1,28 +1,28 @@
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
-index cc0adb4..9303063 100644
+index 0ccb63e..4560b8d 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
-@@ -1108,8 +1108,8 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
+@@ -1148,8 +1148,8 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
/* don't enable GEM on PAE - needs agp + set_memory_* interface fixes */
dev_priv->has_gem = 0;
#else
- /* enable GEM by default */
- dev_priv->has_gem = 1;
+ /* enable GEM by default, except on I8xx */
-+ dev_priv->has_gem = !IS_I8XX(dev) ? 1 : 0;
++ dev_priv->has_gem = !IS_8XX(dev) ? 1 : 0;
#endif
- i915_gem_load(dev);
+ dev->driver->get_vblank_counter = i915_get_vblank_counter;
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
-index a70bf77..84664fe 100644
+index c431fa5..dcf5257 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
-@@ -750,6 +750,9 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
+@@ -770,6 +770,9 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
#define IS_I855(dev) ((dev)->pci_device == 0x3582)
#define IS_I865G(dev) ((dev)->pci_device == 0x2572)
-+#define IS_I8XX(dev) (IS_I830(dev) || IS_845G(dev) || IS_I85X(dev) || \
-+ IS_I855(dev) || IS_I865G(dev))
++#define IS_I8XX(dev) (IS_I830(dev) || IS_I845G(dev) || IS_I85X(dev) || \
++ IS_I855(dev))
+
#define IS_I915G(dev) ((dev)->pci_device == 0x2582 || (dev)->pci_device == 0x258a)
#define IS_I915GM(dev) ((dev)->pci_device == 0x2592)
drm-nouveau.patch:
drivers/gpu/drm/Kconfig | 15
drivers/gpu/drm/Makefile | 1
drivers/gpu/drm/drm_bufs.c | 28
drivers/gpu/drm/drm_fence.c | 2
drivers/gpu/drm/drm_gem.c | 50
drivers/gpu/drm/nouveau/Makefile | 24
drivers/gpu/drm/nouveau/nouveau_backlight.c | 152
drivers/gpu/drm/nouveau/nouveau_bios.c | 4852 +++++
drivers/gpu/drm/nouveau/nouveau_bios.h | 223
drivers/gpu/drm/nouveau/nouveau_bo.c | 415
drivers/gpu/drm/nouveau/nouveau_calc.c | 622
drivers/gpu/drm/nouveau/nouveau_connector.h | 51
drivers/gpu/drm/nouveau/nouveau_crtc.h | 74
drivers/gpu/drm/nouveau/nouveau_display.c | 114
drivers/gpu/drm/nouveau/nouveau_dma.c | 209
drivers/gpu/drm/nouveau/nouveau_dma.h | 107
drivers/gpu/drm/nouveau/nouveau_drv.c | 194
drivers/gpu/drm/nouveau/nouveau_drv.h | 836
drivers/gpu/drm/nouveau/nouveau_encoder.h | 46
drivers/gpu/drm/nouveau/nouveau_fb.h | 44
drivers/gpu/drm/nouveau/nouveau_fbcon.c | 946 +
drivers/gpu/drm/nouveau/nouveau_fbcon.h | 48
drivers/gpu/drm/nouveau/nouveau_fence.c | 126
drivers/gpu/drm/nouveau/nouveau_fifo.c | 692
drivers/gpu/drm/nouveau/nouveau_gem.c | 729
drivers/gpu/drm/nouveau/nouveau_hw.c | 1019 +
drivers/gpu/drm/nouveau/nouveau_hw.h | 530
drivers/gpu/drm/nouveau/nouveau_i2c.c | 222
drivers/gpu/drm/nouveau/nouveau_i2c.h | 46
drivers/gpu/drm/nouveau/nouveau_ioc32.c | 72
drivers/gpu/drm/nouveau/nouveau_irq.c | 592
drivers/gpu/drm/nouveau/nouveau_mem.c | 1073 +
drivers/gpu/drm/nouveau/nouveau_notifier.c | 176
drivers/gpu/drm/nouveau/nouveau_object.c | 1236 +
drivers/gpu/drm/nouveau/nouveau_reg.h | 854
drivers/gpu/drm/nouveau/nouveau_sgdma.c | 340
drivers/gpu/drm/nouveau/nouveau_state.c | 1043 +
drivers/gpu/drm/nouveau/nouveau_swmthd.c | 190
drivers/gpu/drm/nouveau/nouveau_swmthd.h | 33
drivers/gpu/drm/nouveau/nv04_fb.c | 21
drivers/gpu/drm/nouveau/nv04_fifo.c | 144
drivers/gpu/drm/nouveau/nv04_graph.c | 521
drivers/gpu/drm/nouveau/nv04_instmem.c | 190
drivers/gpu/drm/nouveau/nv04_mc.c | 20
drivers/gpu/drm/nouveau/nv04_timer.c | 50
drivers/gpu/drm/nouveau/nv10_fb.c | 24
drivers/gpu/drm/nouveau/nv10_fifo.c | 175
drivers/gpu/drm/nouveau/nv10_graph.c | 912 +
drivers/gpu/drm/nouveau/nv20_graph.c | 907 +
drivers/gpu/drm/nouveau/nv40_fb.c | 62
drivers/gpu/drm/nouveau/nv40_fifo.c | 216
drivers/gpu/drm/nouveau/nv40_graph.c | 2179 ++
drivers/gpu/drm/nouveau/nv40_mc.c | 38
drivers/gpu/drm/nouveau/nv50_connector.c | 491
drivers/gpu/drm/nouveau/nv50_crtc.c | 810
drivers/gpu/drm/nouveau/nv50_cursor.c | 144
drivers/gpu/drm/nouveau/nv50_dac.c | 288
drivers/gpu/drm/nouveau/nv50_display.c | 637
drivers/gpu/drm/nouveau/nv50_display.h | 44
drivers/gpu/drm/nouveau/nv50_display_commands.h | 195
drivers/gpu/drm/nouveau/nv50_fbcon.c | 222
drivers/gpu/drm/nouveau/nv50_fifo.c | 343
drivers/gpu/drm/nouveau/nv50_graph.c | 336
drivers/gpu/drm/nouveau/nv50_grctx.h |20935 ++++++++++++++++++++++++
drivers/gpu/drm/nouveau/nv50_instmem.c | 382
drivers/gpu/drm/nouveau/nv50_mc.c | 40
drivers/gpu/drm/nouveau/nv50_sor.c | 303
drivers/gpu/drm/nouveau/nvreg.h | 495
include/drm/Kbuild | 1
include/drm/drmP.h | 2
include/drm/nouveau_drm.h | 299
71 files changed, 49410 insertions(+), 42 deletions(-)
View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.60 -r 1.61 drm-nouveau.patchIndex: drm-nouveau.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-nouveau.patch,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -p -r1.60 -r1.61
--- drm-nouveau.patch 25 Jul 2009 04:09:21 -0000 1.60
+++ drm-nouveau.patch 12 Aug 2009 16:49:50 -0000 1.61
@@ -1,8 +1,8 @@
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
-index a74980b..36582ff 100644
+index f8d5074..3ada5e4 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
-@@ -133,3 +133,18 @@ config DRM_SAVAGE
+@@ -140,3 +140,18 @@ config DRM_SAVAGE
help
Choose this option if you have a Savage3D/4/SuperSavage/Pro/Twister
chipset. If M is selected the module will be called savage.
@@ -32,7 +32,7 @@ index d6788df..97aa0c8 100644
+obj-$(CONFIG_DRM_NOUVEAU) +=nouveau/
diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c
-index 4d2161f..ac503e2 100644
+index 07e0c51..9ac171c 100644
--- a/drivers/gpu/drm/drm_bufs.c
+++ b/drivers/gpu/drm/drm_bufs.c
@@ -51,38 +51,24 @@ resource_size_t drm_get_resource_len(struct drm_device *dev, unsigned int resour
@@ -80,7 +80,7 @@ index 4d2161f..ac503e2 100644
static int drm_map_handle(struct drm_device *dev, struct drm_hash_item *hash,
unsigned long user_token, int hashed_handle, int shm)
-@@ -349,7 +335,7 @@ static int drm_addmap_core(struct drm_device * dev, resource_size_t offset,
+@@ -357,7 +343,7 @@ static int drm_addmap_core(struct drm_device * dev, resource_size_t offset,
/* We do it here so that dev->struct_mutex protects the increment */
user_token = (map->type == _DRM_SHM) ? (unsigned long)map->handle :
map->offset;
@@ -103,7 +103,7 @@ index f1c386c..fd62fd9 100644
if (mask & ~fence->type) {
DRM_ERROR("Wait trying to extend fence type"
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
-index c1173d8..2e4e667 100644
+index 4984aa8..dee9b40 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -280,48 +280,58 @@ drm_gem_close_ioctl(struct drm_device *dev, void *data,
@@ -185,58 +185,9 @@ index c1173d8..2e4e667 100644
mutex_lock(&dev->struct_mutex);
drm_gem_object_unreference(obj);
mutex_unlock(&dev->struct_mutex);
-diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
-index 5d45cbf..e3b0a76 100644
---- a/drivers/gpu/drm/drm_stub.c
-+++ b/drivers/gpu/drm/drm_stub.c
-@@ -406,14 +406,14 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
- if (dev->driver->load) {
- ret = dev->driver->load(dev, ent->driver_data);
- if (ret)
-- goto err_g3;
-+ goto err_g4;
- }
-
- /* setup the grouping for the legacy output */
- if (drm_core_check_feature(dev, DRIVER_MODESET)) {
- ret = drm_mode_group_init_legacy_group(dev, &dev->primary->mode_group);
- if (ret)
-- goto err_g3;
-+ goto err_g4;
- }
-
- list_add_tail(&dev->driver_item, &driver->device_list);
-@@ -424,8 +424,11 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
-
- return 0;
-
--err_g3:
-+err_g4:
- drm_put_minor(&dev->primary);
-+err_g3:
-+ if (drm_core_check_feature(dev, DRIVER_MODESET))
-+ drm_put_minor(&dev->control);
- err_g2:
- pci_disable_device(pdev);
- err_g1:
-@@ -507,11 +510,11 @@ void drm_put_dev(struct drm_device *dev)
- dev->agp = NULL;
- }
-
-- drm_ht_remove(&dev->map_hash);
-- drm_ctxbitmap_cleanup(dev);
--
- list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head)
- drm_rmmap(dev, r_list->map);
-+ drm_ht_remove(&dev->map_hash);
-+
-+ drm_ctxbitmap_cleanup(dev);
-
- if (drm_core_check_feature(dev, DRIVER_MODESET))
- 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..12af41b
+index 0000000..06483d0
--- /dev/null
+++ b/drivers/gpu/drm/nouveau/Makefile
@@ -0,0 +1,24 @@
@@ -249,8 +200,8 @@ index 0000000..12af41b
+ nouveau_object.o nouveau_irq.o nouveau_notifier.o \
+ nouveau_swmthd.o nouveau_sgdma.o nouveau_dma.o \
+ nouveau_bo.o nouveau_fence.o nouveau_gem.o \
-+ nouveau_bios.o nouveau_display.o nouveau_fbcon.o \
-+ nouveau_backlight.o \
++ nouveau_hw.o nouveau_calc.o nouveau_bios.o nouveau_i2c.o \
++ nouveau_display.o nouveau_fbcon.o nouveau_backlight.o \
+ nv04_timer.o \
+ nv04_mc.o nv40_mc.o nv50_mc.o \
+ nv04_fb.o nv10_fb.o nv40_fb.o \
@@ -259,17 +210,17 @@ index 0000000..12af41b
+ 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_cursor.o nv50_i2c.o nv50_display.o nv50_fbcon.o
++ nv50_cursor.o nv50_display.o nv50_fbcon.o
+
+nouveau-$(CONFIG_COMPAT) += nouveau_ioc32.o
+
+obj-$(CONFIG_DRM_NOUVEAU)+= nouveau.o
diff --git a/drivers/gpu/drm/nouveau/nouveau_backlight.c b/drivers/gpu/drm/nouveau/nouveau_backlight.c
new file mode 100644
-index 0000000..3fc521e
+index 0000000..e3d354f
--- /dev/null
+++ b/drivers/gpu/drm/nouveau/nouveau_backlight.c
-@@ -0,0 +1,156 @@
+@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2009 Red Hat <mjg at redhat.com>
+ *
@@ -312,7 +263,6 @@ index 0000000..3fc521e
+static int nv40_get_intensity(struct backlight_device *bd)
+{
+ struct drm_device *dev = bl_get_data(bd);
-+ struct drm_nouveau_private *dev_priv = dev->dev_private;
+ int val = (nv_rd32(NV40_PMC_BACKLIGHT) & NV40_PMC_BACKLIGHT_MASK) >> 16;
+
+ return val;
@@ -321,7 +271,6 @@ index 0000000..3fc521e
+static int nv40_set_intensity(struct backlight_device *bd)
+{
+ struct drm_device *dev = bl_get_data(bd);
-+ struct drm_nouveau_private *dev_priv = dev->dev_private;
+ int val = bd->props.brightness;
+ int reg = nv_rd32(NV40_PMC_BACKLIGHT);
+
@@ -340,7 +289,6 @@ index 0000000..3fc521e
+static int nv50_get_intensity(struct backlight_device *bd)
+{
+ struct drm_device *dev = bl_get_data(bd);
-+ struct drm_nouveau_private *dev_priv = dev->dev_private;
+
+ return nv_rd32(NV50_PDISPLAY_BACKLIGHT);
+}
@@ -348,7 +296,6 @@ index 0000000..3fc521e
+static int nv50_set_intensity(struct backlight_device *bd)
+{
+ struct drm_device *dev = bl_get_data(bd);
-+ struct drm_nouveau_private *dev_priv = dev->dev_private;
+ int val = bd->props.brightness;
+
+ nv_wr32(NV50_PDISPLAY_BACKLIGHT, val | NV50_PDISPLAY_BACKLIGHT_ENABLE);
@@ -428,45 +375,66 @@ index 0000000..3fc521e
+}
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..d63baf3
--- /dev/null
+++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
-@@ -0,0 +1,854 @@
+@@ -0,0 +1,4852 @@
+/*
-+ * Copyright (C) 2005-2006 Erik Waling
-+ * Copyright (C) 2006 Stephane Marchesin
-+ * Copyright (C) 2007-2008 Stuart Bennett
-+ * 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:
++ * Copyright 2005-2006 Erik Waling
++ * Copyright 2006 Stephane Marchesin
++ * Copyright 2007-2009 Stuart Bennett
+ *
-+ * The above copyright notice and this permission notice (including the
-+ * next paragraph) shall be included in all copies or substantial
[...22285 lines suppressed...]
++# define NV_PRAMDAC_CU_START_POS_Y 31:16
++#define NV_RAMDAC_NV10_CURSYNC 0x00680404
++
++#define NV_PRAMDAC_NVPLL_COEFF 0x00680500
++#define NV_PRAMDAC_MPLL_COEFF 0x00680504
++#define NV_PRAMDAC_VPLL_COEFF 0x00680508
++# define NV30_RAMDAC_ENABLE_VCO2 (8 << 4)
++
++#define NV_PRAMDAC_PLL_COEFF_SELECT 0x0068050c
++# define NV_RAMDAC_PLL_SELECT_USE_VPLL2_TRUE (4 << 0)
++# define NV_PRAMDAC_PLL_COEFF_SELECT_SOURCE_PROG_MPLL (1 << 8)
++# define NV_PRAMDAC_PLL_COEFF_SELECT_SOURCE_PROG_VPLL (2 << 8)
++# define NV_PRAMDAC_PLL_COEFF_SELECT_SOURCE_PROG_NVPLL (4 << 8)
++# define NV_RAMDAC_PLL_SELECT_PLL_SOURCE_VPLL2 (8 << 8)
++# define NV_PRAMDAC_PLL_COEFF_SELECT_VCLK_RATIO_DB2 (1 << 28)
++# define NV_RAMDAC_PLL_SELECT_VCLK2_RATIO_DB2 (2 << 28)
++
++#define NV_PRAMDAC_PLL_SETUP_CONTROL 0x00680510
++#define NV_RAMDAC_VPLL2 0x00680520
++#define NV_PRAMDAC_SEL_CLK 0x00680524
++#define NV_RAMDAC_DITHER_NV11 0x00680528
++#define NV_PRAMDAC_DACCLK 0x0068052c
++# define NV_PRAMDAC_DACCLK_SEL_DACCLK (1 << 0)
++
++#define NV_RAMDAC_NVPLL_B 0x00680570
++#define NV_RAMDAC_MPLL_B 0x00680574
++#define NV_RAMDAC_VPLL_B 0x00680578
++#define NV_RAMDAC_VPLL2_B 0x0068057c
++# define NV31_RAMDAC_ENABLE_VCO2 (8 << 28)
++#define NV_PRAMDAC_580 0x00680580
++# define NV_RAMDAC_580_VPLL1_ACTIVE (1 << 8)
++# define NV_RAMDAC_580_VPLL2_ACTIVE (1 << 28)
++
++#define NV_PRAMDAC_GENERAL_CONTROL 0x00680600
++#define NV_PRAMDAC_TEST_CONTROL 0x00680608
++# define NV_PRAMDAC_TEST_CONTROL_TP_INS_EN_ASSERTED (1 << 12)
++# define NV_PRAMDAC_TEST_CONTROL_PWRDWN_DAC_OFF (1 << 16)
++# define NV_PRAMDAC_TEST_CONTROL_SENSEB_ALLHI (1 << 28)
++#define NV_PRAMDAC_TESTPOINT_DATA 0x00680610
++# define NV_PRAMDAC_TESTPOINT_DATA_NOTBLANK (8 << 28)
++#define NV_PRAMDAC_630 0x00680630
++#define NV_PRAMDAC_634 0x00680634
++
++#define NV_PRAMDAC_FP_VDISPLAY_END 0x00680800
++#define NV_PRAMDAC_FP_VTOTAL 0x00680804
++#define NV_PRAMDAC_FP_VCRTC 0x00680808
++#define NV_PRAMDAC_FP_VSYNC_START 0x0068080c
++#define NV_PRAMDAC_FP_VSYNC_END 0x00680810
++#define NV_PRAMDAC_FP_VVALID_START 0x00680814
++#define NV_PRAMDAC_FP_VVALID_END 0x00680818
++#define NV_PRAMDAC_FP_HDISPLAY_END 0x00680820
++#define NV_PRAMDAC_FP_HTOTAL 0x00680824
++#define NV_PRAMDAC_FP_HCRTC 0x00680828
++#define NV_PRAMDAC_FP_HSYNC_START 0x0068082c
++#define NV_PRAMDAC_FP_HSYNC_END 0x00680830
++#define NV_PRAMDAC_FP_HVALID_START 0x00680834
++#define NV_PRAMDAC_FP_HVALID_END 0x00680838
++
++#define NV_RAMDAC_FP_DITHER 0x0068083c
++#define NV_PRAMDAC_FP_TG_CONTROL 0x00680848
++# define NV_PRAMDAC_FP_TG_CONTROL_VSYNC_POS (1 << 0)
++# define NV_PRAMDAC_FP_TG_CONTROL_VSYNC_DISABLE (2 << 0)
++# define NV_PRAMDAC_FP_TG_CONTROL_HSYNC_POS (1 << 4)
++# define NV_PRAMDAC_FP_TG_CONTROL_HSYNC_DISABLE (2 << 4)
++# define NV_PRAMDAC_FP_TG_CONTROL_MODE_SCALE (0 << 8)
++# define NV_PRAMDAC_FP_TG_CONTROL_MODE_CENTER (1 << 8)
++# define NV_PRAMDAC_FP_TG_CONTROL_MODE_NATIVE (2 << 8)
++# define NV_PRAMDAC_FP_TG_CONTROL_READ_PROG (1 << 20)
++# define NV_PRAMDAC_FP_TG_CONTROL_WIDTH_12 (1 << 24)
++# define NV_PRAMDAC_FP_TG_CONTROL_DISPEN_POS (1 << 28)
++# define NV_PRAMDAC_FP_TG_CONTROL_DISPEN_DISABLE (2 << 28)
++#define NV_PRAMDAC_850 0x00680850
++#define NV_PRAMDAC_85C 0x0068085c
++#define NV_PRAMDAC_FP_DEBUG_0 0x00680880
++# define NV_PRAMDAC_FP_DEBUG_0_XSCALE_ENABLE (1 << 0)
++# define NV_PRAMDAC_FP_DEBUG_0_YSCALE_ENABLE (1 << 4)
++/* This doesn't seem to be essential for tmds, but still often set */
++# define NV_RAMDAC_FP_DEBUG_0_TMDS_ENABLED (8 << 4)
++# define NV_PRAMDAC_FP_DEBUG_0_XINTERP_BILINEAR (1 << 8)
++# define NV_PRAMDAC_FP_DEBUG_0_YINTERP_BILINEAR (1 << 12)
++# define NV_PRAMDAC_FP_DEBUG_0_XWEIGHT_ROUND (1 << 20)
++# define NV_PRAMDAC_FP_DEBUG_0_YWEIGHT_ROUND (1 << 24)
++# define NV_PRAMDAC_FP_DEBUG_0_PWRDOWN_FPCLK (1 << 28)
++#define NV_PRAMDAC_FP_DEBUG_1 0x00680884
++# define NV_PRAMDAC_FP_DEBUG_1_XSCALE_VALUE 11:0
++# define NV_PRAMDAC_FP_DEBUG_1_XSCALE_TESTMODE_ENABLE (1 << 12)
++# define NV_PRAMDAC_FP_DEBUG_1_YSCALE_VALUE 27:16
++# define NV_PRAMDAC_FP_DEBUG_1_YSCALE_TESTMODE_ENABLE (1 << 28)
++#define NV_PRAMDAC_FP_DEBUG_2 0x00680888
++#define NV_PRAMDAC_FP_DEBUG_3 0x0068088C
++
++/* see NV_PRAMDAC_INDIR_TMDS in rules.xml */
++#define NV_PRAMDAC_FP_TMDS_CONTROL 0x006808b0
++# define NV_PRAMDAC_FP_TMDS_CONTROL_WRITE_DISABLE (1 << 16)
++#define NV_PRAMDAC_FP_TMDS_DATA 0x006808b4
++
++/* Some kind of switch */
++#define NV_PRAMDAC_900 0x00680900
++#define NV_PRAMDAC_A20 0x00680A20
++#define NV_PRAMDAC_A24 0x00680A24
++#define NV_PRAMDAC_A34 0x00680A34
++
++/* names fabricated from NV_USER_DAC info */
++#define NV_PRMDIO_PIXEL_MASK 0x006813c6
++# define NV_PRMDIO_PIXEL_MASK_MASK 0xff
++#define NV_PRMDIO_READ_MODE_ADDRESS 0x006813c7
++#define NV_PRMDIO_WRITE_MODE_ADDRESS 0x006813c8
++#define NV_PRMDIO_PALETTE_DATA 0x006813c9
++
++#define NV_PGRAPH_DEBUG_0 0x00400080
++#define NV_PGRAPH_DEBUG_1 0x00400084
++#define NV_PGRAPH_DEBUG_2_NV04 0x00400088
++#define NV_PGRAPH_DEBUG_2 0x00400620
++#define NV_PGRAPH_DEBUG_3 0x0040008c
++#define NV_PGRAPH_DEBUG_4 0x00400090
++#define NV_PGRAPH_INTR 0x00400100
++#define NV_PGRAPH_INTR_EN 0x00400140
++#define NV_PGRAPH_CTX_CONTROL 0x00400144
++#define NV_PGRAPH_CTX_CONTROL_NV04 0x00400170
++#define NV_PGRAPH_ABS_UCLIP_XMIN 0x0040053C
++#define NV_PGRAPH_ABS_UCLIP_YMIN 0x00400540
++#define NV_PGRAPH_ABS_UCLIP_XMAX 0x00400544
++#define NV_PGRAPH_ABS_UCLIP_YMAX 0x00400548
++#define NV_PGRAPH_BETA_AND 0x00400608
++#define NV_PGRAPH_LIMIT_VIOL_PIX 0x00400610
++#define NV_PGRAPH_BOFFSET0 0x00400640
++#define NV_PGRAPH_BOFFSET1 0x00400644
++#define NV_PGRAPH_BOFFSET2 0x00400648
++#define NV_PGRAPH_BLIMIT0 0x00400684
++#define NV_PGRAPH_BLIMIT1 0x00400688
++#define NV_PGRAPH_BLIMIT2 0x0040068c
++#define NV_PGRAPH_STATUS 0x00400700
++#define NV_PGRAPH_SURFACE 0x00400710
++#define NV_PGRAPH_STATE 0x00400714
++#define NV_PGRAPH_FIFO 0x00400720
++#define NV_PGRAPH_PATTERN_SHAPE 0x00400810
++#define NV_PGRAPH_TILE 0x00400b00
++
++#define NV_PVIDEO_INTR_EN 0x00008140
++#define NV_PVIDEO_BUFFER 0x00008700
++#define NV_PVIDEO_STOP 0x00008704
++#define NV_PVIDEO_UVPLANE_BASE(buff) (0x00008800+(buff)*4)
++#define NV_PVIDEO_UVPLANE_LIMIT(buff) (0x00008808+(buff)*4)
++#define NV_PVIDEO_UVPLANE_OFFSET_BUFF(buff) (0x00008820+(buff)*4)
++#define NV_PVIDEO_BASE(buff) (0x00008900+(buff)*4)
++#define NV_PVIDEO_LIMIT(buff) (0x00008908+(buff)*4)
++#define NV_PVIDEO_LUMINANCE(buff) (0x00008910+(buff)*4)
++#define NV_PVIDEO_CHROMINANCE(buff) (0x00008918+(buff)*4)
++#define NV_PVIDEO_OFFSET_BUFF(buff) (0x00008920+(buff)*4)
++#define NV_PVIDEO_SIZE_IN(buff) (0x00008928+(buff)*4)
++#define NV_PVIDEO_POINT_IN(buff) (0x00008930+(buff)*4)
++#define NV_PVIDEO_DS_DX(buff) (0x00008938+(buff)*4)
++#define NV_PVIDEO_DT_DY(buff) (0x00008940+(buff)*4)
++#define NV_PVIDEO_POINT_OUT(buff) (0x00008948+(buff)*4)
++#define NV_PVIDEO_SIZE_OUT(buff) (0x00008950+(buff)*4)
++#define NV_PVIDEO_FORMAT(buff) (0x00008958+(buff)*4)
++# define NV_PVIDEO_FORMAT_PLANAR (1 << 0)
++# define NV_PVIDEO_FORMAT_COLOR_LE_CR8YB8CB8YA8 (1 << 16)
++# define NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY (1 << 20)
++# define NV_PVIDEO_FORMAT_MATRIX_ITURBT709 (1 << 24)
++#define NV_PVIDEO_COLOR_KEY 0x00008B00
++
++/* NV04 overlay defines from VIDIX & Haiku */
++#define NV_PVIDEO_INTR_EN_0 0x00680140
++#define NV_PVIDEO_STEP_SIZE 0x00680200
++#define NV_PVIDEO_CONTROL_Y 0x00680204
++#define NV_PVIDEO_CONTROL_X 0x00680208
++#define NV_PVIDEO_BUFF0_START_ADDRESS 0x0068020c
++#define NV_PVIDEO_BUFF0_PITCH_LENGTH 0x00680214
++#define NV_PVIDEO_BUFF0_OFFSET 0x0068021c
++#define NV_PVIDEO_BUFF1_START_ADDRESS 0x00680210
++#define NV_PVIDEO_BUFF1_PITCH_LENGTH 0x00680218
++#define NV_PVIDEO_BUFF1_OFFSET 0x00680220
++#define NV_PVIDEO_OE_STATE 0x00680224
++#define NV_PVIDEO_SU_STATE 0x00680228
++#define NV_PVIDEO_RM_STATE 0x0068022c
++#define NV_PVIDEO_WINDOW_START 0x00680230
++#define NV_PVIDEO_WINDOW_SIZE 0x00680234
++#define NV_PVIDEO_FIFO_THRES_SIZE 0x00680238
++#define NV_PVIDEO_FIFO_BURST_LENGTH 0x0068023c
++#define NV_PVIDEO_KEY 0x00680240
++#define NV_PVIDEO_OVERLAY 0x00680244
++#define NV_PVIDEO_RED_CSC_OFFSET 0x00680280
++#define NV_PVIDEO_GREEN_CSC_OFFSET 0x00680284
++#define NV_PVIDEO_BLUE_CSC_OFFSET 0x00680288
++#define NV_PVIDEO_CSC_ADJUST 0x0068028c
++
++#endif
diff --git a/include/drm/Kbuild b/include/drm/Kbuild
index b940fdf..cfa6af4 100644
--- a/include/drm/Kbuild
@@ -42929,7 +49627,7 @@ index b940fdf..cfa6af4 100644
unifdef-y += via_drm.h
+unifdef-y += nouveau_drm.h
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
-index b61b0c6..5b7ce2d 100644
+index b0d024c..fb93588 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1267,6 +1267,8 @@ extern void drm_idlelock_release(struct drm_lock_data *lock_data);
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/kernel.spec,v
retrieving revision 1.1701
retrieving revision 1.1702
diff -u -p -r1.1701 -r1.1702
--- kernel.spec 12 Aug 2009 15:26:50 -0000 1.1701
+++ kernel.spec 12 Aug 2009 16:49:51 -0000 1.1702
@@ -656,11 +656,21 @@ Patch1700: agp-set_memory_ucwb.patch
# nouveau + drm fixes
Patch1811: drm-next.patch
Patch1812: drm-modesetting-radeon.patch
-Patch1813: drm-radeon-pm.patch
-Patch1814: drm-nouveau.patch
-Patch1816: drm-no-gem-on-i8xx.patch
-Patch1818: drm-i915-resume-force-mode.patch
-Patch1819: drm-intel-big-hammer.patch
+Patch1813: drm-nouveau.patch
+Patch1814: drm-no-gem-on-i8xx.patch
+Patch1815: drm-i915-resume-force-mode.patch
+Patch1816: drm-intel-big-hammer.patch
+Patch1817: drm-intel-gen3-fb-hack.patch
+Patch1818: drm-intel-hdmi-edid-fix.patch
+Patch1819: drm-intel-gem-use-dma32-on-pae.patch
+Patch1820: drm-modesetting-radeon-fixes.patch
+Patch1821: drm-radeon-new-pciids.patch
+Patch1822: drm-dont-frob-i2c.patch
+Patch1823: drm-intel-tv-fix.patch
+Patch1824: drm-radeon-cs-oops-fix.patch
+Patch1825: drm-pnp-add-resource-range-checker.patch
+Patch1826: drm-i915-enable-mchbar.patch
+
# kludge to make ich9 e1000 work
Patch2000: linux-2.6-e1000-ich9.patch
@@ -1261,16 +1271,24 @@ ApplyPatch linux-2.6-crash-driver.patch
# http://www.lirc.org/
ApplyPatch linux-2.6.29-lirc.patch
+# DRM patches
ApplyPatch agp-set_memory_ucwb.patch
-# Nouveau DRM + drm fixes
#ApplyPatch drm-next.patch
-#ApplyPatch drm-modesetting-radeon.patch
-#ApplyPatch drm-nouveau.patch
-# pm broken on my thinkpad t60p - airlied
-#ApplyPatch drm-radeon-pm.patch
+ApplyPatch drm-modesetting-radeon.patch
+ApplyPatch drm-nouveau.patch
ApplyPatch drm-no-gem-on-i8xx.patch
ApplyPatch drm-i915-resume-force-mode.patch
ApplyPatch drm-intel-big-hammer.patch
+ApplyPatch drm-intel-gen3-fb-hack.patch
+ApplyPatch drm-intel-hdmi-edid-fix.patch
+#ApplyPatch drm-intel-gem-use-dma32-on-pae.patch
+ApplyPatch drm-modesetting-radeon-fixes.patch
+ApplyPatch drm-radeon-new-pciids.patch
+ApplyPatch drm-dont-frob-i2c.patch
+ApplyPatch drm-intel-tv-fix.patch
+ApplyPatch drm-radeon-cs-oops-fix.patch
+ApplyPatch drm-pnp-add-resource-range-checker.patch
+ApplyPatch drm-i915-enable-mchbar.patch
# linux1394 git patches
#ApplyPatch linux-2.6-firewire-git-update.patch
@@ -1879,6 +1897,24 @@ fi
# and build.
%changelog
+* Wed Aug 12 2009 Kyle McMartin <kyle at redhat.com>
+- DRM patch sync-up with F-11-2.6.29.y, ABI probably isn't right yet though...
+ - drm-modesetting-radeon.patch
+ - drm-nouveau.patch
+ - drm-no-gem-on-i8xx.patch
+ - drm-i915-resume-force-mode.patch
+ - drm-intel-big-hammer.patch
+ - drm-intel-gen3-fb-hack.patch
+ - drm-intel-hdmi-edid-fix.patch
+ - drm-modesetting-radeon-fixes.patch
+ - drm-radeon-new-pciids.patch
+ - drm-dont-frob-i2c.patch
+ - drm-intel-tv-fix.patch
+ - drm-radeon-cs-oops-fix.patch
+ - drm-pnp-add-resource-range-checker.patch
+ - drm-i915-enable-mchbar.patch
+- The rest were merged upstream.
+
* Wed Aug 12 2009 John W. Linville <linville at redhat.com>
- iwlwifi: fix TX queue race
- Previous message: rpms/ikiwiki/F-11 .cvsignore, 1.24, 1.25 ikiwiki.spec, 1.26, 1.27 import.log, 1.24, 1.25 sources, 1.24, 1.25
- Next message: rpms/qt-creator/devel .cvsignore, 1.5, 1.6 qt-creator.spec, 1.7, 1.8 sources, 1.5, 1.6
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the scm-commits
mailing list