aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/agp/frontend.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2007-10-29 15:14:03 +1000
committerDave Airlie <airlied@redhat.com>2008-02-05 14:33:32 +1000
commita13af4b4d842da6d7065b8c73fa8f0ac58fea1b6 (patch)
tree3269002c62ee1f10728cfa5a9782225329166d6b /drivers/char/agp/frontend.c
parent9ef9dc69d4167276c04590d67ee55de8380bc1ad (diff)
downloadkernel_goldelico_gta04-a13af4b4d842da6d7065b8c73fa8f0ac58fea1b6.zip
kernel_goldelico_gta04-a13af4b4d842da6d7065b8c73fa8f0ac58fea1b6.tar.gz
kernel_goldelico_gta04-a13af4b4d842da6d7065b8c73fa8f0ac58fea1b6.tar.bz2
agp: add chipset flushing support to AGP interface
This bumps the AGP interface to 0.103. Certain Intel chipsets contains a global write buffer, and this can require flushing from the drm or X.org to make sure all data has hit RAM before initiating a GPU transfer, due to a lack of coherency with the integrated graphics device and this buffer. This just adds generic support to the AGP interfaces, a follow-on patch will add support to the Intel driver to use this interface. Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/char/agp/frontend.c')
-rw-r--r--drivers/char/agp/frontend.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c
index 7791e98..9bd5a95 100644
--- a/drivers/char/agp/frontend.c
+++ b/drivers/char/agp/frontend.c
@@ -960,6 +960,13 @@ static int agpioc_unbind_wrap(struct agp_file_private *priv, void __user *arg)
return agp_unbind_memory(memory);
}
+int agpioc_chipset_flush_wrap(struct agp_file_private *priv)
+{
+ DBG("");
+ agp_flush_chipset(agp_bridge);
+ return 0;
+}
+
static int agp_ioctl(struct inode *inode, struct file *file,
unsigned int cmd, unsigned long arg)
{
@@ -1033,6 +1040,10 @@ static int agp_ioctl(struct inode *inode, struct file *file,
case AGPIOC_UNBIND:
ret_val = agpioc_unbind_wrap(curr_priv, (void __user *) arg);
break;
+
+ case AGPIOC_CHIPSET_FLUSH:
+ ret_val = agpioc_chipset_flush_wrap(curr_priv);
+ break;
}
ioctl_out: