summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bsd-core/radeon_drv.c2
-rw-r--r--linux-core/radeon_drv.c4
-rw-r--r--shared-core/radeon_cp.c4
-rw-r--r--shared-core/radeon_drv.h1
4 files changed, 11 insertions, 0 deletions
diff --git a/bsd-core/radeon_drv.c b/bsd-core/radeon_drv.c
index bd59db63..470b6d3a 100644
--- a/bsd-core/radeon_drv.c
+++ b/bsd-core/radeon_drv.c
@@ -35,6 +35,8 @@
#include "radeon_drv.h"
#include "drm_pciids.h"
+int radeon_no_wb;
+
/* drv_PCI_IDs comes from drm_pciids.h, generated from drm_pciids.txt. */
static drm_pci_id_list_t radeon_pciidlist[] = {
radeon_PCI_IDS
diff --git a/linux-core/radeon_drv.c b/linux-core/radeon_drv.c
index 41ca7acf..52e50174 100644
--- a/linux-core/radeon_drv.c
+++ b/linux-core/radeon_drv.c
@@ -37,6 +37,10 @@
#include "drm_pciids.h"
+int radeon_no_wb;
+
+MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers\n");
+module_param_named(no_wb, radeon_no_wb, int, 0444);
static int dri_library_name(struct drm_device * dev, char * buf)
{
diff --git a/shared-core/radeon_cp.c b/shared-core/radeon_cp.c
index f3c5ecfa..9b5c9a8f 100644
--- a/shared-core/radeon_cp.c
+++ b/shared-core/radeon_cp.c
@@ -1206,6 +1206,10 @@ static void radeon_cp_init_ring_buffer(drm_device_t * dev,
dev_priv->writeback_works = 0;
DRM_DEBUG("writeback test failed\n");
}
+ if (radeon_no_wb == 1) {
+ dev_priv->writeback_works = 0;
+ DRM_DEBUG("writeback forced off\n");
+ }
dev_priv->sarea_priv->last_frame = dev_priv->scratch[0] = 0;
RADEON_WRITE(RADEON_LAST_FRAME_REG, dev_priv->sarea_priv->last_frame);
diff --git a/shared-core/radeon_drv.h b/shared-core/radeon_drv.h
index 265697c7..8455d599 100644
--- a/shared-core/radeon_drv.h
+++ b/shared-core/radeon_drv.h
@@ -275,6 +275,7 @@ typedef struct drm_radeon_buf_priv {
u32 age;
} drm_radeon_buf_priv_t;
+extern int radeon_no_wb;
/* radeon_cp.c */
extern int radeon_cp_init(DRM_IOCTL_ARGS);
extern int radeon_cp_start(DRM_IOCTL_ARGS);