diff -urpN svgalib-1.9.18/kernel/svgalib_helper/Makefile svgalib-1.9.18.new/kernel/svgalib_helper/Makefile --- svgalib-1.9.18/kernel/svgalib_helper/Makefile 2004-02-23 00:47:43.616320424 +0200 +++ svgalib-1.9.18.new/kernel/svgalib_helper/Makefile 2004-02-23 00:47:58.475061552 +0200 @@ -13,15 +13,32 @@ EXTRA_CFLAGS := -DSVGALIB_HELPER_MAJOR=$ ifeq ($(PATCHLEVEL),4) include $(TOPDIR)/Rules.make + OBJEXT := o +else + OBJEXT := ko endif else -VER = $(shell uname -r) +# Extract version number from headers. +VER = $(shell awk -F\" '/REL/ {print $$2}' $(INCLUDEDIR)/linux/version.h 2>/dev/null) + +# Use version of current running kernel +ifeq ($(VER),) + VER = $(shell uname -r) +endif + +PATCHLEVEL := $(shell echo $(VER) | cut -d. -f2) KDIR := /lib/modules/$(VER)/build PWD := $(shell pwd) TARGET := svgalib_helper +ifeq ($(PATCHLEVEL),4) + OBJEXT := o +else + OBJEXT := ko +endif + default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules @@ -49,4 +66,4 @@ install: modules_install modules_install: $(TARGET).o mkdir -p $(TOPDIR)/lib/modules/$(VER)/kernel/misc - install -m 0644 -c $(TARGET).o $(TOPDIR)/lib/modules/$(VER)/kernel/misc + install -m 0644 -c $(TARGET).$(OBJEXT) $(TOPDIR)/lib/modules/$(VER)/kernel/misc diff -urpN svgalib-1.9.18/kernel/svgalib_helper/kernel26compat.h svgalib-1.9.18.new/kernel/svgalib_helper/kernel26compat.h --- svgalib-1.9.18/kernel/svgalib_helper/kernel26compat.h 2003-10-04 15:42:01.000000000 +0200 +++ svgalib-1.9.18.new/kernel/svgalib_helper/kernel26compat.h 2004-02-23 00:41:03.176196576 +0200 @@ -9,9 +12,11 @@ # define my_io_remap_page_range(vma, start, ofs, len, prot) io_remap_page_range(start,ofs,len,prot) +# ifndef IRQ_NONE typedef void irqreturn_t; -# define IRQ_NONE -# define IRQ_HANDLED +# define IRQ_NONE +# define IRQ_HANDLED +# endif #else /* Kernel 2.6 */ @@ -43,9 +43,36 @@ static inline int devfs_unregister_chrde } #endif +#if defined(KERNEL_2_6) && !defined(CONFIG_DEVFS_FS) +# define SLH_SYSFS_REGISTER \ + svgalib_helper_class = class_simple_create(THIS_MODULE, "svgalib_helper"); + +# define SLH_SYSFS_ADD_CONTROL \ + class_simple_device_add(svgalib_helper_class, \ + MKDEV(SVGALIB_HELPER_MAJOR, 0), \ + NULL, "svga"); + +# define SLH_SYSFS_ADD_DEVICE(_name, _minor) \ + class_simple_device_add(svgalib_helper_class, \ + MKDEV(SVGALIB_HELPER_MAJOR, _minor), \ + &sh_pci_devs[_minor]->dev->dev, _name); + +# define SLH_SYSFS_REMOVE_DEVICE(i) \ + class_simple_device_remove(MKDEV(SVGALIB_HELPER_MAJOR, i)); + +# define SLH_SYSFS_UNREGISTER \ + class_simple_destroy(svgalib_helper_class); +#else +# define SLH_SYSFS_REGISTER +# define SLH_SYSFS_ADD_CONTROL +# define SLH_SYSFS_ADD_DEVICE(_name, _minor) +# define SLH_SYSFS_REMOVE_DEVICE(i) +# define SLH_SYSFS_UNREGISTER +#endif + /* Our main.c really do not like MINOR from 2.6 kernels ... */ -#if (defined MINOR) && (!defined KERNEL_2_6) +#if (defined MINOR) # define my_minor(x) MINOR(x) #else # define my_minor(x) minor(x) diff -urpN svgalib-1.9.18/kernel/svgalib_helper/main.c svgalib-1.9.18.new/kernel/svgalib_helper/main.c --- svgalib-1.9.18/kernel/svgalib_helper/main.c 2003-10-04 12:34:20.000000000 +0200 +++ svgalib-1.9.18.new/kernel/svgalib_helper/main.c 2004-02-23 00:42:25.490682872 +0200 @@ -53,6 +53,10 @@ static int irqs[MAX_NR_DEVICES]; static devfs_handle_t devfs_handle; #endif +#if defined(KERNEL_2_6) && !defined(CONFIG_DEVFS_FS) +struct class_simple *svgalib_helper_class; +#endif + static int check_io_range(int port, int device) { return 1; } @@ -502,6 +506,7 @@ int init_module(void) { int result, i, j; struct pci_dev *dev=NULL; + char name[255]; #ifdef CONFIG_DEVFS_FS # ifndef KERNEL_2_6 devfs_handle_t slave_handle; @@ -513,9 +518,9 @@ int init_module(void) printk(KERN_INFO "svgalib_helper: Initializing, version %s\n", versionstr); - result = devfs_register_chrdev(SVGALIB_HELPER_MAJOR, "svgalib_helper", &svgalib_helper_fops); + result = devfs_register_chrdev(SVGALIB_HELPER_MAJOR, "svgalib_helper", &svgalib_helper_fops); - if (result < 0) { + if (result < 0) { printk(KERN_WARNING "svgalib_helper: can't get major %d\n",SVGALIB_HELPER_MAJOR); return result; } @@ -523,7 +528,7 @@ int init_module(void) if((sh_pci_devs[0]=kmalloc(sizeof(struct sh_pci_device),GFP_KERNEL))==NULL) { goto nomem_error; } - + memset(sh_pci_devs[0],0,sizeof(struct sh_pci_device)); num_devices=1; for(i=1;i