]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/src/tscan1.c
Changed kernel version to switch to new module parameters made consistent with value...
[lincan.git] / lincan / src / tscan1.c
index 313f0418edbfb587eb2b8d4572a53ee4d71d78a9..e79909794edabfa292c32d21fddf50632d5f4b92 100644 (file)
 
 static CAN_DEFINE_SPINLOCK(ts7kv_win_lock);
 
-long clock[MAX_HW_CARDS]={-1,-1,-1,-1,-1,-1,-1,-1};
-MODULE_PARM(clock, "1-" __MODULE_STRING(MAX_HW_CARDS)"i");
-MODULE_PARM_DESC(clock,"clock frequency for each board in step of 1kHz");
-
-long tscanio[MAX_HW_CARDS]={-1,-1,-1,-1,-1,-1,-1,-1};
-MODULE_PARM(tscanio, "1-" __MODULE_STRING(MAX_HW_CARDS)"i");
-MODULE_PARM_DESC(tscanio,"TSCAN CAN controller IO address for each board");
+unsigned long tscanio[MAX_HW_CARDS]={-1,-1,-1,-1,-1,-1,-1,-1};
+unsigned int tscanio_specified;
 
 #if defined(TS7XXX_IO8_BASE)&&defined(TSXXX_BASE_IO)
 int tsxxx_base=TS7XXX_IO8_BASE+TSXXX_BASE_IO;
@@ -39,10 +34,18 @@ int tsxxx_base=TS7XXX_IO8_BASE;
 #else /*TS7XXX_IO8_BASE*/
 unsigned long tsxxx_base=0;
 #endif /*TS7XXX_IO8_BASE*/
+
+#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,12 */
+module_param_array(tscanio, int, &tscanio_specified, 0);
+module_param(tsxxx_base, ulong, 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");
 
-unsigned short ts7kv_isused = 0x0;
 
 /**
  * tscan1_request_io: - reserve io or memory range for can board
@@ -457,16 +460,10 @@ int ts7kv_init_hw_data(struct candevice_t *candev)
  */
 int tscan1_init_chip_data(struct candevice_t *candev, int chipnr)
 {
-       unsigned long clk;
+       unsigned long default_clk = 16000 * 1000;
        int jmp;
        int irq = -1;
 
-       clk = clock[candev->candev_idx];
-       if(!clk || (clk == -1))
-               clk = 16000 * 1000;
-       else
-               clk *= 1000;
-
        /* unused reset address is used to store jumper setting */
        jmp = candev->res_addr;
 
@@ -483,7 +480,8 @@ int tscan1_init_chip_data(struct candevice_t *candev, int chipnr)
 
        sja1000p_fill_chipspecops(candev->chip[chipnr]);
 
-       candev->chip[chipnr]->clock = clk;
+       if(candev->chip[chipnr]->clock <= 0)
+               candev->chip[chipnr]->clock = default_clk;
        candev->chip[chipnr]->int_clk_reg = 0x0;
        candev->chip[chipnr]->int_bus_reg = 0x0;
        candev->chip[chipnr]->sja_cdr_reg = sjaCDR_CBP | sjaCDR_CLK_OFF;
@@ -499,16 +497,10 @@ int tscan1_init_chip_data(struct candevice_t *candev, int chipnr)
 
 int ts7kv_init_chip_data(struct candevice_t *candev, int chipnr)
 {
-       unsigned long clk;
+       unsigned long default_clk = 16000 * 1000;
        int jmp;
        int irq = -1;
 
-       clk = clock[candev->candev_idx];
-       if(!clk || (clk == -1))
-               clk = 24000 * 1000;
-       else
-               clk *= 1000;
-
        /* unused reset address is used to store jumper setting */
        jmp = candev->res_addr;
 
@@ -526,7 +518,8 @@ int ts7kv_init_chip_data(struct candevice_t *candev, int chipnr)
 
        sja1000p_fill_chipspecops(candev->chip[chipnr]);
 
-       candev->chip[chipnr]->clock = clk;
+       if(candev->chip[chipnr]->clock <= 0)
+               candev->chip[chipnr]->clock = default_clk;
        candev->chip[chipnr]->int_clk_reg = 0x0;
        candev->chip[chipnr]->int_bus_reg = 0x0;
        candev->chip[chipnr]->sja_cdr_reg = sjaCDR_CBP | sjaCDR_CLK_OFF;