diff options
author | Dave Airlie <airlied@linux.ie> | 2007-10-29 01:14:03 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2008-02-04 23:33:32 -0500 |
commit | a13af4b4d842da6d7065b8c73fa8f0ac58fea1b6 (patch) | |
tree | 3269002c62ee1f10728cfa5a9782225329166d6b /drivers/char/agp/frontend.c | |
parent | 9ef9dc69d4167276c04590d67ee55de8380bc1ad (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.c | 11 |
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 | ||
963 | int agpioc_chipset_flush_wrap(struct agp_file_private *priv) | ||
964 | { | ||
965 | DBG(""); | ||
966 | agp_flush_chipset(agp_bridge); | ||
967 | return 0; | ||
968 | } | ||
969 | |||
963 | static int agp_ioctl(struct inode *inode, struct file *file, | 970 | static 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 | ||
1038 | ioctl_out: | 1049 | ioctl_out: |