+int can_request_io_region(unsigned long start, unsigned long n, const char *name)
+{
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
+ if(check_region(start,n)) return 0;
+ request_region(start,n,name);
+ return 1;
+ #else
+ return (request_region(start,n,name))?1:0;
+ #endif
+}
+
+void can_release_io_region(unsigned long start, unsigned long n)
+{
+ release_region(start,n);
+}
+
+/* This function shifts all base address structures acording to address
+ translation between physical and virtual address mappings */
+int can_base_addr_fixup(struct candevice_t *candev, unsigned long new_base)
+{
+ unsigned long offs;
+ int i, j;
+
+ offs=new_base-candev->dev_base_addr;
+ candev->dev_base_addr=new_base;
+ for(i=0;i<candev->nr_all_chips;i++){
+ candev->chip[i]->chip_base_addr += offs;
+ for(j=0;j<candev->chip[i]->max_objects;j++)
+ candev->chip[i]->msgobj[j]->obj_base_addr += offs;
+ }
+ return 0;
+}
+