[packages/xorg-driver-video-fglrx] - fix building with linux 3.10 - rel 13

baggins baggins at pld-linux.org
Sun Aug 25 12:13:53 CEST 2013


commit eddc674f99d5c553f78abd73061ffa6b51c9c536
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sun Aug 25 12:13:32 2013 +0200

    - fix building with linux 3.10
    - rel 13

 linux-3.10.patch             | 226 +++++++++++++++++++++++++++++++++++++++++++
 xorg-driver-video-fglrx.spec |   4 +-
 2 files changed, 229 insertions(+), 1 deletion(-)
---
diff --git a/xorg-driver-video-fglrx.spec b/xorg-driver-video-fglrx.spec
index d23b16a..aaa3797 100644
--- a/xorg-driver-video-fglrx.spec
+++ b/xorg-driver-video-fglrx.spec
@@ -27,7 +27,7 @@
 
 %define		intver		12.104
 
-%define		rel		12
+%define		rel		13
 %define		pname		xorg-driver-video-fglrx
 Summary:	Linux Drivers for AMD/ATI graphics accelerators
 Summary(pl.UTF-8):	Sterowniki do akceleratorów graficznych AMD/ATI
@@ -53,6 +53,7 @@ Patch4:		%{pname}-nofinger.patch
 Patch5:		%{pname}-GPL-only.patch
 Patch7:		%{pname}-kernel-fpu.patch
 Patch8:		linux-3.7.patch
+Patch9:		linux-3.10.patch
 URL:		http://ati.amd.com/support/drivers/linux/linux-radeon.html
 %{?with_dist_kernel:BuildRequires:	kernel%{_alt_kernel}-module-build >= 3:2.6.20.2}
 BuildRequires:	rpmbuild(macros) >= 1.659
@@ -200,6 +201,7 @@ cp -p arch/%{arch_dir}/lib/modules/fglrx/build_mod/* common/lib/modules/fglrx/bu
 %patch5 -p1
 %patch7 -p0
 %patch8 -p1
+%patch9 -p1
 
 install -d common{%{_prefix}/{%{_lib},bin,sbin},/etc}
 cp -a %{x11ver}%{arch_sufix}/usr/X11R6/%{_lib}/* common%{_libdir}
diff --git a/linux-3.10.patch b/linux-3.10.patch
new file mode 100644
index 0000000..155b483
--- /dev/null
+++ b/linux-3.10.patch
@@ -0,0 +1,226 @@
+--- 13.4/common/lib/modules/fglrx/build_mod/drm_proc.h
++++ 13.4/common/lib/modules/fglrx/build_mod/drm_proc.h
+@@ -94,23 +95,34 @@ struct proc_dir_entry *DRM(proc_init)(drm_device_t *dev, int minor,
+ 	struct proc_dir_entry *ent;
+ 	int		      i, j;
+ 	char                  name[64];
+-
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ 	if (!minor) root = create_proc_entry("dri", S_IFDIR, NULL);
++#else
++	if (!minor) root = proc_mkdir("dri", NULL);
++#endif
+ 	if (!root) {
+ 		DRM_ERROR("Cannot create /proc/ati\n");
+ 		return NULL;
+ 	}
+ 
+ 	sprintf(name, "%d", minor);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ 	*dev_root = create_proc_entry(name, S_IFDIR, root);
++#else
++	*dev_root = proc_mkdir(name, root);
++#endif
+ 	if (!*dev_root) {
+ 		DRM_ERROR("Cannot create /proc/ati/%s\n", name);
+ 		return NULL;
+ 	}
+-
+ 	for (i = 0; i < DRM_PROC_ENTRIES; i++) {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ 		ent = create_proc_entry(DRM(proc_list)[i].name,
+ 					S_IFREG|S_IRUGO, *dev_root);
++#else
++		ent = proc_create_data(DRM(proc_list)[i].name,
++					S_IFREG|S_IRUGO, *dev_root, &firegl_fops, dev);
++#endif
+ 		if (!ent) {
+ 			DRM_ERROR("Cannot create /proc/ati/%s/%s\n",
+ 				  name, DRM(proc_list)[i].name);
+@@ -121,10 +133,11 @@ struct proc_dir_entry *DRM(proc_init)(drm_device_t *dev, int minor,
+ 			if (!minor) remove_proc_entry("dri", NULL);
+ 			return NULL;
+ 		}
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ 		ent->read_proc = DRM(proc_list)[i].f;
+ 		ent->data      = dev;
++#endif
+ 	}
+-
+ 	return root;
+ }
+ 
+--- 13.4/common/lib/modules/fglrx/build_mod/firegl_public.c
++++ 13.4/common/lib/modules/fglrx/build_mod/firegl_public.c
+@@ -520,12 +520,23 @@ READ_PROC_WRAP(firegl_lock_info)
+ #ifdef DEBUG
+ READ_PROC_WRAP(drm_bq_info)
+ #endif
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ READ_PROC_WRAP(firegl_debug_proc_read)
++#endif
+ READ_PROC_WRAP(firegl_bios_version)
+ READ_PROC_WRAP(firegl_interrupt_info)
+ READ_PROC_WRAP(firegl_ptm_info)
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ static int firegl_debug_proc_write_wrap(void* file, const char *buffer, unsigned long count, void *data)
++#else
++static int firegl_debug_proc_read_wrap(struct seq_file *m, void* data)
++{
++	return firegl_debug_proc_read(m->buf, m->from, m->index, m->size, m->size - m->count, data);
++}
++
++static ssize_t firegl_debug_proc_write_wrap(struct file *file, const char *buffer, size_t count, void *data)
++#endif
+ {                                                                  
+     return firegl_debug_proc_write(file, buffer, count, data);     
+ }
+@@ -543,9 +554,15 @@ static int firegl_debug_proc_write_wrap(void* file, const char *buffer, unsigned
+  *
+  * \return number of bytes written
+  */
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ static int firegl_major_proc_read(char *buf, char **start, kcl_off_t offset,
+                                   int request, int* eof, void* data)
++#else
++static int firegl_major_proc_read(struct seq_file *m, void* data)
++#endif
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+     int len = 0;    // For ProcFS: fill buf from the beginning
+ 
+     KCL_DEBUG1(FN_FIREGL_PROC, "offset %d\n", (int)offset);
+@@ -561,8 +578,10 @@ static int firegl_major_proc_read(char *buf, char **start, kcl_off_t offset,
+ 
+     len = snprintf(buf, request, "%d\n", major);
+ 
++#else
++    int len = seq_printf(m, "%d\n", major);
++#endif
+     KCL_DEBUG1(FN_FIREGL_PROC, "return len=%i\n",len);
+-
+     return len;
+ }
+ 
+@@ -583,6 +602,29 @@ kcl_proc_list_t KCL_PROC_FileList[] =
+     { "NULL",           NULL,                       NULL} // Terminate List!!!
+ };
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++static int firegl_major_proc_open(struct inode *inode, struct file *file){
++        return single_open(file, firegl_major_proc_read, NULL);
++}
++
++static const struct file_operations firegl_major_fops = {
++        .open = firegl_major_proc_open,
++        .read = seq_read,
++        .llseek = seq_lseek,
++};
++
++static int firegl_debug_proc_open(struct inode *inode, struct file *file){
++        return single_open(file, firegl_debug_proc_read_wrap, NULL);
++}
++
++static const struct file_operations firegl_debug_fops = {
++        .open = firegl_debug_proc_open,
++        .write = firegl_debug_proc_write_wrap,
++        .read = seq_read,
++        .llseek = seq_lseek,
++};
++#endif
++
+ static struct proc_dir_entry *firegl_proc_init( device_t *dev,
+                                                 int minor,
+                                                 struct proc_dir_entry *root,
+@@ -595,7 +637,11 @@ static struct proc_dir_entry *firegl_proc_init( device_t *dev,
+     KCL_DEBUG1(FN_FIREGL_PROC, "minor %d, proc_list 0x%08lx\n", minor, (unsigned long)proc_list);
+     if (!minor)
+     {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+         root = create_proc_entry("ati", S_IFDIR, NULL);
++#else
++        root = proc_mkdir("ati", NULL);
++#endif
+     }
+ 
+     if (!root)
+@@ -607,18 +653,28 @@ static struct proc_dir_entry *firegl_proc_init( device_t *dev,
+     if (minor == 0)
+     {
+         // Global major debice number entry
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+         ent = create_proc_entry("major", S_IFREG|S_IRUGO, root);
++#else
++        ent = proc_create("major", S_IFREG|S_IRUGO, root, &firegl_major_fops);
++#endif
+         if (!ent)
+         {
+             remove_proc_entry("ati", NULL);
+             KCL_DEBUG_ERROR("Cannot create /proc/ati/major\n");
+             return NULL;
+         }
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+         ent->read_proc = (read_proc_t*)firegl_major_proc_read;
++#endif
+     }
+ 
+     sprintf(name, "%d", minor);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+     *dev_root = create_proc_entry(name, S_IFDIR, root);
++#else
++    *dev_root = proc_mkdir(name, root);
++#endif
+     if (!*dev_root) {
+         remove_proc_entry("major", root);
+         remove_proc_entry("ati", NULL);
+@@ -628,7 +684,12 @@ static struct proc_dir_entry *firegl_proc_init( device_t *dev,
+ 
+     while (list->f || list->fops)
+     {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+         ent = create_proc_entry(list->name, S_IFREG|S_IRUGO, *dev_root);
++#else
++        ent = proc_create_data(list->name, S_IFREG|S_IRUGO, *dev_root, &firegl_fops, 
++            (dev->pubdev.signature == FGL_DEVICE_SIGNATURE)? firegl_find_device(minor) : (dev));
++#endif
+         if (!ent)
+         {
+             KCL_DEBUG_ERROR("Cannot create /proc/ati/%s/%s\n", name, list->name);
+@@ -646,6 +707,7 @@ static struct proc_dir_entry *firegl_proc_init( device_t *dev,
+             return NULL;
+         }
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+         if (list->f)
+         {
+             ent->read_proc = (read_proc_t*)list->f;
+@@ -659,19 +721,25 @@ static struct proc_dir_entry *firegl_proc_init( device_t *dev,
+         {
+             ent->data = (dev->pubdev.signature == FGL_DEVICE_SIGNATURE)? firegl_find_device(minor) : (dev);
+         }
+-
++#endif
+         list++;
+     }
+ 
+     if (minor == 0)
+     {
+         // Global debug entry, only create it once
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+         ent = create_proc_entry("debug", S_IFREG|S_IRUGO, root);
+-        if (ent) 
++#else
++        ent = proc_create_data("debug", S_IFREG|S_IRUGO, root, &firegl_debug_fops, dev);
++#endif
++        if (ent)
+         {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+             ent->read_proc = (read_proc_t*)firegl_debug_proc_read_wrap;     
+             ent->write_proc = (write_proc_t*)firegl_debug_proc_write_wrap;  
+             ent->data = dev;
++#endif
+         }
+     }
+ 
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/xorg-driver-video-fglrx.git/commitdiff/eddc674f99d5c553f78abd73061ffa6b51c9c536



More information about the pld-cvs-commit mailing list