aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/agp/frontend.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2007-10-29 01:14:03 -0400
committerDave Airlie <airlied@redhat.com>2008-02-04 23:33:32 -0500
commita13af4b4d842da6d7065b8c73fa8f0ac58fea1b6 (patch)
tree3269002c62ee1f10728cfa5a9782225329166d6b /drivers/char/agp/frontend.c
parent9ef9dc69d4167276c04590d67ee55de8380bc1ad (diff)
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 7791e98de51c..9bd5a958954c 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)
960 return agp_unbind_memory(memory); 960 return agp_unbind_memory(memory);
961} 961}
962 962
963int agpioc_chipset_flush_wrap(struct agp_file_private *priv)
964{
965 DBG("");
966 agp_flush_chipset(agp_bridge);
967 return 0;
968}
969
963static int agp_ioctl(struct inode *inode, struct file *file, 970static int agp_ioctl(struct inode *inode, struct file *file,
964 unsigned int cmd, unsigned long arg) 971 unsigned int cmd, unsigned long arg)
965{ 972{
@@ -1033,6 +1040,10 @@ static int agp_ioctl(struct inode *inode, struct file *file,
1033 case AGPIOC_UNBIND: 1040 case AGPIOC_UNBIND:
1034 ret_val = agpioc_unbind_wrap(curr_priv, (void __user *) arg); 1041 ret_val = agpioc_unbind_wrap(curr_priv, (void __user *) arg);
1035 break; 1042 break;
1043
1044 case AGPIOC_CHIPSET_FLUSH:
1045 ret_val = agpioc_chipset_flush_wrap(curr_priv);
1046 break;
1036 } 1047 }
1037 1048
1038ioctl_out: 1049ioctl_out: