]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/src/tscan1.c
Corrected print of address in report of card presence check failure.
[lincan.git] / lincan / src / tscan1.c
index a48a93edef252b9d4eefb80912ff3620a5606fe1..5f7ca7aa42d98e6b2573cac60ef747c1ff84bcb2 100644 (file)
@@ -35,13 +35,13 @@ int tsxxx_base=TS7XXX_IO8_BASE;
 unsigned long tsxxx_base=0;
 #endif /*TS7XXX_IO8_BASE*/
 
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12))
 MODULE_PARM(tscanio, "1-" __MODULE_STRING(MAX_HW_CARDS)"i");
 MODULE_PARM(tsxxx_base, "1i");
-#else /* LINUX_VERSION_CODE >= 2,6,0 */
+#else /* LINUX_VERSION_CODE >= 2,6,12 */
 module_param_array(tscanio, int, &tscanio_specified, 0);
 module_param(tsxxx_base, ulong, 0);
-#endif /* LINUX_VERSION_CODE >= 2,6,0 */
+#endif /* LINUX_VERSION_CODE >= 2,6,12 */
 
 MODULE_PARM_DESC(tscanio,"TSCAN CAN controller IO address for each board");
 MODULE_PARM_DESC(tsxxx_base,"The base of the ISA/8-bit IO space for TSxxx CAN peripherals in the system");
@@ -136,8 +136,8 @@ int tscan1_request_io(struct candevice_t *candev)
                default:        mode=0x60; break;
        }
 
-       outb(0x00, candev->io_addr+TSCAN1_WIN_REG);
-       outb(mode, candev->io_addr+TSCAN1_MOD_REG);
+       can_outb(0x00, candev->io_addr+TSCAN1_WIN_REG);
+       can_outb(mode, candev->io_addr+TSCAN1_MOD_REG);
 
        return 0;
 }
@@ -177,7 +177,7 @@ int tscan1_release_io(struct candevice_t *candev)
                        can_release_io_region(remap_can_io_addr, TSXXX_CAN_RANGE);
        }
 
-       outb(0x20, candev->io_addr+TSCAN1_MOD_REG);
+       can_outb(0x20, candev->io_addr+TSCAN1_MOD_REG);
 
        can_release_io_region(candev->io_addr, TSXXX_IO_RANGE);
        return 0;
@@ -238,15 +238,15 @@ int tscan1_check_presence(unsigned long remap_io_addr, int *pjmp)
                return -ENODEV;
 
        do {
-               if (inb(remap_io_addr+TSXXX_ID0_REG)!=TSCAN1_ID0 ||
-                       inb(remap_io_addr+TSXXX_ID1_REG)!=TSCAN1_ID1)
+               if (can_inb(remap_io_addr+TSXXX_ID0_REG)!=TSCAN1_ID0 ||
+                       can_inb(remap_io_addr+TSXXX_ID1_REG)!=TSCAN1_ID1)
                        break;
 
-               outb(0x00, remap_io_addr+TSCAN1_WIN_REG);
-               outb(0x20, remap_io_addr+TSCAN1_MOD_REG);
+               can_outb(0x00, remap_io_addr+TSCAN1_WIN_REG);
+               can_outb(0x20, remap_io_addr+TSCAN1_MOD_REG);
 
                if(pjmp)
-                       *pjmp = inb(remap_io_addr+TSCAN1_JMP_REG);
+                       *pjmp = can_inb(remap_io_addr+TSCAN1_JMP_REG);
 
                result = 0;
        } while (0);
@@ -281,10 +281,11 @@ int tscan1_init_hw_data(struct candevice_t *candev)
        io_addr = candev->io_addr;
 
        if(io_addr && (io_addr != (unsigned long)-1)) {
-               remap_io_addr = io_addr = tsxxx_base;
+               remap_io_addr = io_addr + tsxxx_base;
 
                if(tscan1_check_presence(remap_io_addr, &jmp)){
-                       CANMSG("No TSCAN1 card found at address 0xlx\n");
+                       CANMSG("No TSCAN1 card found at address 0x%lx\n",
+                               remap_io_addr);
                        return -ENODEV;
                }
        } else {
@@ -298,7 +299,7 @@ int tscan1_init_hw_data(struct candevice_t *candev)
                        }
 
                        io_addr = TSCAN1_BASE_IO + i*TSXXX_IO_RANGE;
-                       remap_io_addr = io_addr = tsxxx_base;
+                       remap_io_addr = io_addr + tsxxx_base;
 
                        for (j = 0; j < MAX_HW_CARDS; j++) {
                                if(io[j] == io_addr){
@@ -343,12 +344,12 @@ int ts7kv_check_presence(unsigned long remap_io_addr, int *pjmp)
                return -ENODEV;
 
        do {
-               if (inb(remap_io_addr+TSXXX_ID0_REG)!=TS7KV_ID0 ||
-                       inb(remap_io_addr+TSXXX_ID1_REG)!=TS7KV_ID1)
+               if (can_inb(remap_io_addr+TSXXX_ID0_REG)!=TS7KV_ID0 ||
+                       can_inb(remap_io_addr+TSXXX_ID1_REG)!=TS7KV_ID1)
                        break;
 
                if(pjmp)
-                       *pjmp = inb(remap_io_addr+TS7KV_JMP_REG);
+                       *pjmp = can_inb(remap_io_addr+TS7KV_JMP_REG);
 
                result = 0;
        } while (0);
@@ -368,10 +369,11 @@ int ts7kv_init_hw_data(struct candevice_t *candev)
        io_addr = candev->io_addr;
 
        if(io_addr && (io_addr != (unsigned long)-1)) {
-               remap_io_addr = io_addr = tsxxx_base;
+               remap_io_addr = io_addr + tsxxx_base;
 
                if(ts7kv_check_presence(remap_io_addr, &jmp)){
-                       CANMSG("No TS7KV card found at address 0xlx\n");
+                       CANMSG("No TS7KV card found at address 0x%lx\n",
+                              remap_io_addr);
                        return -ENODEV;
                }
        } else {
@@ -385,7 +387,7 @@ int ts7kv_init_hw_data(struct candevice_t *candev)
                        }
 
                        io_addr = TS7KV_BASE_IO + i*TSXXX_IO_RANGE;
-                       remap_io_addr = io_addr = tsxxx_base;
+                       remap_io_addr = io_addr + tsxxx_base;
 
                        for (j = 0; j < MAX_HW_CARDS; j++) {
                                if(io[j] == io_addr){
@@ -580,32 +582,33 @@ int tscan1_program_irq(struct candevice_t *candev)
  * Return Value: The function does not return a value
  * File: src/tscan1.c
  */
-void tscan1_write_register(unsigned data, unsigned long address)
+void tscan1_write_register(unsigned data, can_ioptr_t address)
 {
-       outb(data, address);
+       can_outb(data, address);
 }
 
-void ts7kv_write_register(unsigned data, unsigned long address)
+void ts7kv_write_register(unsigned data, can_ioptr_t address)
 {
-       unsigned long base = address & ~0x1f;
+       unsigned long addr=can_ioptr2ulong(address);
+       can_ioptr_t base = can_ulong2ioptr(addr & ~0x1f);
        unsigned char nwin = 0x10;
        unsigned char savewin;
        
        can_spin_irqflags_t flags;
 
-       if((address&0x1f) > 0x1d) {
+       if((addr&0x1f) > 0x1d) {
                nwin++;
                address -= 0x10;
        }
 
        can_spin_lock_irqsave(&ts7kv_win_lock,flags);
-       savewin = inb(base+TS7KV_WIN_REG);
+       savewin = can_inb(base+TS7KV_WIN_REG);
        if(nwin == savewin) {
-               outb(data, address);
+               can_outb(data, address);
        }else{
-               outb(nwin, base+TS7KV_WIN_REG);
-               outb(data, address);
-               outb(savewin, base+TS7KV_WIN_REG);
+               can_outb(nwin, base+TS7KV_WIN_REG);
+               can_outb(data, address);
+               can_outb(savewin, base+TS7KV_WIN_REG);
        }
        can_spin_unlock_irqrestore(&ts7kv_win_lock,flags);
 }
@@ -620,33 +623,34 @@ void ts7kv_write_register(unsigned data, unsigned long address)
  * Return Value: The function returns the value stored in @address
  * File: src/tscan1.c
  */
-unsigned tscan1_read_register(unsigned long address)
+unsigned tscan1_read_register(can_ioptr_t address)
 {
-       return inb(address);
+       return can_inb(address);
 }
 
-unsigned ts7kv_read_register(unsigned long address)
+unsigned ts7kv_read_register(can_ioptr_t address)
 {
-       unsigned long base = address & ~0x1f;
+       unsigned long addr=can_ioptr2ulong(address);
+       can_ioptr_t base = can_ulong2ioptr(addr & ~0x1f);
        unsigned char nwin = 0x10;
        unsigned char savewin;
        unsigned val;
        
        can_spin_irqflags_t flags;
 
-       if((address&0x1f) > 0x1d) {
+       if((addr&0x1f) > 0x1d) {
                nwin++;
                address -= 0x10;
        }
 
        can_spin_lock_irqsave(&ts7kv_win_lock,flags);
-       savewin = inb(base+TS7KV_WIN_REG);
+       savewin = can_inb(base+TS7KV_WIN_REG);
        if(nwin == savewin) {
-               val = inb(address);
+               val = can_inb(address);
        }else{
-               outb(nwin, base+TS7KV_WIN_REG);
-               val = inb(address);
-               outb(savewin, base+TS7KV_WIN_REG);
+               can_outb(nwin, base+TS7KV_WIN_REG);
+               val = can_inb(address);
+               can_outb(savewin, base+TS7KV_WIN_REG);
        }
        can_spin_unlock_irqrestore(&ts7kv_win_lock,flags);