]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/src/m437.c
Use mdelay instead of udelay for long times.
[lincan.git] / lincan / src / m437.c
index 00ac7c3ea9b43bec2fed349120675c29c248be38..da772e893d195835b8904992e32a5e43dd841c69 100644 (file)
@@ -1,14 +1,42 @@
-/* m437.c
- * Linux CAN-bus device driver.
- * Written by Arnaud Westenberg email:arnaud@wanadoo.nl
- * Rewritten for new CAN queues by Pavel Pisa - OCERA team member
- * email:pisa@cmp.felk.cvut.cz
- * This software is released under the GPL-License.
- * Version lincan-0.3  17 Jun 2004
- *
- * 15 July 2008 updated by Philippe Corbes,  email:philippe.corbes@logibag.com
+/**************************************************************************/
+/* File: m437.c -  M437 PC/104 card by SECO                               */
+/*                                                                        */
+/* LinCAN - (Not only) Linux CAN bus driver                               */
+/* Copyright (C) 2002-2009 DCE FEE CTU Prague <http://dce.felk.cvut.cz>   */
+/* Copyright (C) 2002-2009 Pavel Pisa <pisa@cmp.felk.cvut.cz>             */
+/* Copyright (C) 2008 Philippe Corbes <philippe.corbes@logibag.com>       */
+/* Copyright (C) 2001 Fabio Parodi  <fabio.parodi@iname.com>              */
+/* Funded by OCERA and FRESCOR IST projects                               */
+/* Based on CAN driver code by Arnaud Westenberg <arnaud@wanadoo.nl>      */
+/*                                                                        */
+/* LinCAN is free software; you can redistribute it and/or modify it      */
+/* under terms of the GNU General Public License as published by the      */
+/* Free Software Foundation; either version 2, or (at your option) any    */
+/* later version.  LinCAN is distributed in the hope that it will be      */
+/* useful, but WITHOUT ANY WARRANTY; without even the implied warranty    */
+/* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU    */
+/* General Public License for more details. You should have received a    */
+/* copy of the GNU General Public License along with LinCAN; see file     */
+/* COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,  */
+/* Cambridge, MA 02139, USA.                                              */
+/*                                                                        */
+/* To allow use of LinCAN in the compact embedded systems firmware        */
+/* and RT-executives (RTEMS for example), main authors agree with next    */
+/* special exception:                                                     */
+/*                                                                        */
+/* Including LinCAN header files in a file, instantiating LinCAN generics */
+/* or templates, or linking other files with LinCAN objects to produce    */
+/* an application image/executable, does not by itself cause the          */
+/* resulting application image/executable to be covered by                */
+/* the GNU General Public License.                                        */
+/* This exception does not however invalidate any other reasons           */
+/* why the executable file might be covered by the GNU Public License.    */
+/* Publication of enhanced or derived LinCAN files is required although.  */
+/**************************************************************************/
+
+/*
  * This driver has been designed to support "Memory (MEM)" mode.
- * For example: Memory, MEM:0xD0000 => io=0xD0000. 
+ * For example: Memory, MEM:0xD0000 => io=0xD0000.
  * Configure the card with m437set.com provided by seco before loading driver.
  * This software is released under the GPL-License.
  */
@@ -71,8 +99,10 @@ int m437_request_io(struct candevice_t *candev)
                return -ENODEV;
 
        }
-       CANMSG("M437 Registered IO-memory: 0x%lx - 0x%lx\n", candev->io_addr, candev->io_addr + IO_RANGE - 1);
-       CANMSG("M437 IO-memory: 0x%lx  Remapped to: 0x%lx\n", candev->io_addr, remap_addr);
+       CANMSG("M437 Registered IO-memory: 0x%lx - 0x%lx\n",
+               candev->io_addr, candev->io_addr + IO_RANGE - 1);
+       CANMSG("M437 IO-memory: 0x%lx  Remapped to: 0x%lx\n",
+               (unsigned long)candev->io_addr, (unsigned long)remap_addr);
 
        /* remap the chip and pointers on objects */
        can_base_addr_fixup(candev, remap_addr);
@@ -110,24 +140,24 @@ int m437_release_io(struct candevice_t *candev)
         */
 #if 0 /* Object reset method */
        unsigned i;
-       
+
         /* disable IRQ generation */
         m437_write_register(iCTL_CCE, candev->dev_base_addr+iCTL);
 
        /* clear all message objects */
        for (i=1; i<=15; i++) {
                m437_write_register(
-                               INTPD_RES | 
-                               RXIE_RES | 
-                               TXIE_RES | 
-                               MVAL_RES, 
+                               INTPD_RES |
+                               RXIE_RES |
+                               TXIE_RES |
+                               MVAL_RES,
                                candev->dev_base_addr+i*0x10+iMSGCTL0);
                m437_write_register(
-                               NEWD_RES | 
-                               MLST_RES | 
-                               CPUU_RES | 
-                               TXRQ_RES | 
-                               RMPD_RES, 
+                               NEWD_RES |
+                               MLST_RES |
+                               CPUU_RES |
+                               TXRQ_RES |
+                               RMPD_RES,
                                candev->dev_base_addr+i*0x10+iMSGCTL1);
        }
 
@@ -172,7 +202,7 @@ int m437_reset(struct candevice_t *candev)
        /* Check hardware reset status */
        i=0;
        while ( (m437_read_register(candev->dev_base_addr+iCPU) & iCPU_RST) && (i<=15)) {
-               udelay(20000);
+               mdelay(20);
                i++;
        }
        if (i>=15) {