mini/ec_mini.c
author Florian Pose <fp@igh-essen.com>
Fri, 02 Dec 2005 12:59:21 +0000
branchkernel2.6
changeset 26 60435f959e5c
parent 24 d417dd9bdc2f
child 27 d75ef6b46e33
permissions -rw-r--r--
Serial-Debugger entfernt.
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     1
/******************************************************************************
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     2
 *
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     3
 * ec_mini.c
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     4
 *
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     5
 * Minimalmodul für EtherCAT
13
db0742533c10 Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents: 5
diff changeset
     6
 *
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     7
 * $Id$
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     8
 *
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     9
 ******************************************************************************/
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    10
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    11
#include <linux/module.h>
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    12
#include <linux/delay.h>
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    13
#include <linux/timer.h>
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    14
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    15
#include "../drivers/ec_master.h"
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    16
#include "../drivers/ec_device.h"
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    17
#include "../drivers/ec_types.h"
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    18
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    19
/******************************************************************************/
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    20
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    21
#define ECAT
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    22
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    23
#define ECAT_OPEN
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    24
#define ECAT_MASTER
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    25
#define ECAT_SLAVES
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    26
#define ECAT_CYCLIC_DATA
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    27
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    28
/******************************************************************************/
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    29
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    30
#ifdef ECAT
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    31
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    32
extern EtherCAT_device_t rtl_ecat_dev;
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    33
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    34
#ifdef ECAT_MASTER
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    35
static EtherCAT_master_t *ecat_master = NULL;
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    36
#endif
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    37
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    38
#ifdef ECAT_SLAVES
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    39
static EtherCAT_slave_t ecat_slaves[] =
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    40
{
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    41
#if 0
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    42
    // Block 1
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    43
    ECAT_INIT_SLAVE(Beckhoff_EK1100),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    44
    ECAT_INIT_SLAVE(Beckhoff_EL4102),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    45
    ECAT_INIT_SLAVE(Beckhoff_EL3162),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    46
    ECAT_INIT_SLAVE(Beckhoff_EL1014),
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    47
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    48
    ECAT_INIT_SLAVE(Beckhoff_EL4102),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    49
    ECAT_INIT_SLAVE(Beckhoff_EL4102),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    50
    ECAT_INIT_SLAVE(Beckhoff_EL4102),
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    51
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    52
    ECAT_INIT_SLAVE(Beckhoff_EL3162),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    53
    ECAT_INIT_SLAVE(Beckhoff_EL3162),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    54
    ECAT_INIT_SLAVE(Beckhoff_EL3162),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    55
    ECAT_INIT_SLAVE(Beckhoff_EL3102),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    56
    ECAT_INIT_SLAVE(Beckhoff_EL3102),
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    57
    ECAT_INIT_SLAVE(Beckhoff_EL3102),
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    58
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    59
#endif
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    60
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    61
#if 1
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    62
    // Block 2
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    63
    ECAT_INIT_SLAVE(Beckhoff_EK1100),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    64
    ECAT_INIT_SLAVE(Beckhoff_EL4102),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    65
    ECAT_INIT_SLAVE(Beckhoff_EL1014),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    66
    ECAT_INIT_SLAVE(Beckhoff_EL3162),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    67
    ECAT_INIT_SLAVE(Beckhoff_EL2004),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    68
    ECAT_INIT_SLAVE(Beckhoff_EL3102),
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    69
    ECAT_INIT_SLAVE(Beckhoff_EL2004),
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    70
    ECAT_INIT_SLAVE(Beckhoff_EL2004),
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    71
    ECAT_INIT_SLAVE(Beckhoff_EL2004),
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    72
    ECAT_INIT_SLAVE(Beckhoff_EL2004),
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    73
    ECAT_INIT_SLAVE(Beckhoff_EL2004),
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    74
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    75
    // Block 3
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    76
    ECAT_INIT_SLAVE(Beckhoff_EK1100),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    77
    ECAT_INIT_SLAVE(Beckhoff_EL1014),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    78
    ECAT_INIT_SLAVE(Beckhoff_EL1014),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    79
    ECAT_INIT_SLAVE(Beckhoff_EL1014),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    80
    ECAT_INIT_SLAVE(Beckhoff_EL1014),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    81
    ECAT_INIT_SLAVE(Beckhoff_EL1014),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    82
    ECAT_INIT_SLAVE(Beckhoff_EL2004),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    83
    ECAT_INIT_SLAVE(Beckhoff_EL2004),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    84
    ECAT_INIT_SLAVE(Beckhoff_EL2004),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    85
    ECAT_INIT_SLAVE(Beckhoff_EL2004),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    86
    ECAT_INIT_SLAVE(Beckhoff_EL1014),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    87
    ECAT_INIT_SLAVE(Beckhoff_EL1014),
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    88
    ECAT_INIT_SLAVE(Beckhoff_EL1014)
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
    89
#endif
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    90
};
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    91
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    92
#define ECAT_SLAVES_COUNT (sizeof(ecat_slaves) / sizeof(EtherCAT_slave_t))
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    93
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    94
#endif // ECAT_SLAVES
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    95
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    96
#endif // ECAT
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    97
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    98
#ifdef ECAT_CYCLIC_DATA
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
    99
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   100
int value;
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   101
int dig1;
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   102
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   103
struct timer_list timer;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   104
unsigned long last_start_jiffies;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   105
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   106
#endif // ECAT_CYCLIC_DATA
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   107
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   108
/******************************************************************************
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   109
 *
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   110
 * Function: next2004
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   111
 *
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   112
 *****************************************************************************/
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   113
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   114
#ifdef ECAT
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   115
#ifdef ECAT_CYCLIC_DATA
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   116
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   117
static int next2004(int *wrap)
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   118
{
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   119
    static int i = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   120
    unsigned int j = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   121
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   122
    *wrap = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   123
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   124
    for (j = 0; j < ECAT_SLAVES_COUNT; j++)
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   125
    {
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   126
        i++;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   127
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   128
        i %= ECAT_SLAVES_COUNT;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   129
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   130
        if (i == 0) *wrap = 1;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   131
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   132
        if (ecat_slaves[i].desc == Beckhoff_EL2004)
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   133
        {
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   134
            return i;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   135
        }
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   136
    }
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   137
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   138
    return -1;
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   139
}
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   140
#endif
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   141
#endif
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   142
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   143
/******************************************************************************
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   144
 *
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   145
 * Function: run
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   146
 *
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   147
 * Beschreibung: Zyklischer Prozess
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   148
 *
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   149
 *****************************************************************************/
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   150
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   151
#ifdef ECAT_CYCLIC_DATA
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   152
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   153
static void run(unsigned long data)
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   154
{
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   155
#ifdef ECAT
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   156
    static int ms = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   157
    static int cnt = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   158
    static unsigned long int k = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   159
    static int firstrun = 1;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   160
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   161
    static int klemme = 0;
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   162
    static int kanal = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   163
    static int up_down = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   164
    int wrap = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   165
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   166
    ms++;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   167
    ms %= 1000;
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   168
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   169
#if 0
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   170
    ecat_tx_delay = ((unsigned int) (100000 / HZ) * (ecat_master->dev->tx_time-k))
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   171
        / (current_cpu_data.loops_per_jiffy / 10);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   172
    ecat_rx_delay = ((unsigned int) (100000 / HZ) * (ecat_master->dev->rx_time-k))
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   173
        / (current_cpu_data.loops_per_jiffy / 10);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   174
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   175
    rx_intr = ecat_master->dev->rx_intr_cnt;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   176
    tx_intr = ecat_master->dev->tx_intr_cnt;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   177
    total_intr = ecat_master->dev->intr_cnt;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   178
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   179
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   180
    // Prozessdaten lesen
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   181
    if (!firstrun)
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   182
    {
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   183
        EtherCAT_read_process_data(ecat_master);
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   184
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   185
        // Daten lesen und skalieren
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   186
//        value = EtherCAT_read_value(&ecat_master->slaves[5], 0) / 3276; //.7; FIXME kein FP im Kernel ohne Schutz !!
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   187
//        dig1 = EtherCAT_read_value(&ecat_master->slaves[3], 0);
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   188
    }
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   189
    else
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   190
        klemme = next2004(&wrap);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   191
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   192
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   193
#if 0
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   194
    // Daten schreiben
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   195
    EtherCAT_write_value(&ecat_master->slaves[4], 0, ms > 500 ? 1 : 0);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   196
    EtherCAT_write_value(&ecat_master->slaves[4], 1, ms > 500 ? 0 : 1);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   197
    EtherCAT_write_value(&ecat_master->slaves[4], 2, ms > 500 ? 0 : 1);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   198
    EtherCAT_write_value(&ecat_master->slaves[4], 3, ms > 500 ? 1 : 0);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   199
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   200
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   201
    if (cnt++ > 20)
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   202
    {
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   203
        cnt = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   204
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   205
        if (++kanal > 3)
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   206
        {
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   207
            kanal = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   208
            klemme = next2004(&wrap);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   209
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   210
            if (wrap == 1)
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   211
            {
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   212
                if (up_down == 1) up_down = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   213
                else up_down = 1;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   214
            }
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   215
        }
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   216
    }
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   217
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   218
    if (klemme >= 0) {
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   219
        EtherCAT_write_value(&ecat_master->slaves[klemme], kanal,up_down);
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   220
	//printk("ECAT write: Klemme: %d, Kanal: %d, Wert: %d\n",klemme,kanal,up_down); 
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   221
    }
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   222
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   223
#if 0
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   224
    EtherCAT_write_value(&ecat_master->slaves[13], 1, ms > 500 ? 0 : 1);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   225
    EtherCAT_write_value(&ecat_master->slaves[14], 2, ms > 500 ? 0 : 1);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   226
    EtherCAT_write_value(&ecat_master->slaves[15], 3, ms > 500 ? 1 : 0);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   227
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   228
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   229
    // Prozessdaten schreiben
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   230
    rdtscl(k);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   231
    EtherCAT_write_process_data(ecat_master);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   232
    firstrun = 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   233
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   234
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   235
    timer.expires += HZ / 1000;
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   236
    add_timer(&timer);
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   237
}
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   238
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   239
#endif // ECAT_CYCLIC_DATA
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   240
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   241
/******************************************************************************
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   242
 *
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   243
 * Function: init
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   244
 *
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   245
 ******************************************************************************/
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   246
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   247
int __init init_module()
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   248
{
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   249
#ifdef ECAT
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   250
#ifdef ECAT_OPEN
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   251
    int rv = -1;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   252
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   253
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   254
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   255
    printk(KERN_INFO "=== Starting Minimal EtherCAT environment... ===\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   256
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   257
#ifdef ECAT
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   258
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   259
    EtherCAT_device_debug(&rtl_ecat_dev);
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   260
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   261
#ifdef ECAT_OPEN
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   262
    printk("Opening EtherCAT device.\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   263
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   264
    // HIER PASSIERT DER FEHLER:
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   265
    if (EtherCAT_device_open(&rtl_ecat_dev) < 0)
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   266
    {
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   267
        printk(KERN_ERR "msr_modul: Could not initialize EtherCAT NIC.\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   268
        goto out_nothing;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   269
    }
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   270
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   271
    if (!rtl_ecat_dev.dev) // Es gibt kein EtherCAT-Device
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   272
    {
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   273
        printk(KERN_ERR "msr_modul: No EtherCAT device!\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   274
        goto out_close;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   275
    }
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   276
#endif // ECAT_OPEN
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   277
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   278
#ifdef ECAT_MASTER
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   279
    printk("Initialising EtherCAT master\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   280
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   281
    if ((ecat_master = (EtherCAT_master_t *) kmalloc(sizeof(EtherCAT_master_t), GFP_KERNEL)) == 0)
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   282
    {
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   283
        printk(KERN_ERR "msr_modul: Could not alloc memory for EtherCAT master!\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   284
        goto out_close;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   285
    }
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   286
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   287
    if (EtherCAT_master_init(ecat_master, &rtl_ecat_dev) < 0)
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   288
    {
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   289
        printk(KERN_ERR "EtherCAT could not init master!\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   290
        goto out_master;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   291
    }
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   292
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   293
    //ecat_master->debug_level = 1;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   294
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   295
#endif // ECAT_MASTER
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   296
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   297
#ifdef ECAT_SLAVES
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   298
    printk("Checking EtherCAT slaves.\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   299
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   300
    if (EtherCAT_check_slaves(ecat_master, ecat_slaves, ECAT_SLAVES_COUNT) != 0)
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   301
    {
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   302
        printk(KERN_ERR "EtherCAT: Could not init slaves!\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   303
        goto out_masterclear;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   304
    }
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   305
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   306
    printk("Activating all EtherCAT slaves.\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   307
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   308
    if (EtherCAT_activate_all_slaves(ecat_master) != 0)
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   309
    {
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   310
        printk(KERN_ERR "EtherCAT: Could not activate slaves!\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   311
        goto out_masterclear;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   312
    }
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   313
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   314
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   315
#endif // ECAT
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   316
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   317
#ifdef ECAT_CYCLIC_DATA
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   318
    printk("Starting cyclic sample thread.\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   319
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   320
    schedule();
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   321
    mdelay(1000);
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   322
    schedule();
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   323
    init_timer(&timer);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   324
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   325
    timer.function = run;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   326
    timer.data = 0;
24
d417dd9bdc2f Wilhelms ?nderungen ?bernommen.
Florian Pose <fp@igh-essen.com>
parents: 23
diff changeset
   327
    timer.expires = jiffies+10; // Das erste Mal sofort feuern
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   328
    last_start_jiffies = timer.expires;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   329
    add_timer(&timer);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   330
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   331
    printk("Initialised sample thread.\n");
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   332
#endif
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   333
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   334
    printk(KERN_INFO "=== Minimal EtherCAT environment started. ===\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   335
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   336
    return 0;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   337
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   338
#ifdef ECAT
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   339
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   340
#ifdef ECAT_SLAVES
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   341
 out_masterclear:
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   342
    printk(KERN_INFO "Clearing EtherCAT master.\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   343
    EtherCAT_master_clear(ecat_master);
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   344
#endif
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   345
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   346
#ifdef ECAT_MASTER
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   347
 out_master:
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   348
    printk(KERN_INFO "Freeing EtherCAT master.\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   349
    kfree(ecat_master);
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   350
#endif
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   351
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   352
#ifdef ECAT_OPEN
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   353
 out_close:
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   354
    printk(KERN_INFO "Closing device.\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   355
    EtherCAT_device_close(&rtl_ecat_dev);
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   356
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   357
 out_nothing:
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   358
    return rv;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   359
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   360
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   361
#endif // ECAT
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   362
}
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   363
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   364
/******************************************************************************
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   365
 *
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   366
 * Function: cleanup
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   367
 *
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   368
 ******************************************************************************/
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   369
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   370
void __exit cleanup_module()
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   371
{
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   372
    printk(KERN_INFO "=== Stopping Minimal EtherCAT environment... ===\n");
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   373
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   374
#ifdef ECAT_MASTER
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   375
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   376
#ifdef ECAT
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   377
    if (ecat_master)
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   378
    {
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   379
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   380
        //ecat_master->debug_level = 1;
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   381
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   382
#ifdef ECAT_CYCLIC_DATA
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   383
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   384
        del_timer_sync(&timer);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   385
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   386
#ifdef ECAT
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   387
        EtherCAT_clear_process_data(ecat_master);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   388
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   389
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   390
#endif // ECAT_CYCLIC_DATA
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   391
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   392
#ifdef ECAT
5
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   393
6f2508af550c Alle ?nderungen aus den Branches no_rtai und no_int nach Trunk portiert.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
   394
#ifdef ECAT_SLAVES
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   395
        printk(KERN_INFO "Deactivating slaves.\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   396
        EtherCAT_deactivate_all_slaves(ecat_master);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   397
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   398
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   399
        printk(KERN_INFO "Clearing EtherCAT master.\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   400
        EtherCAT_master_clear(ecat_master);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   401
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   402
        printk(KERN_INFO "Freeing EtherCAT master.\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   403
        kfree(ecat_master);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   404
        ecat_master = NULL;
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   405
    }
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   406
#endif // ECAT
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   407
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   408
#endif // ECAT_MASTER
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   409
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   410
#ifdef ECAT
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   411
#ifdef ECAT_OPEN
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   412
    printk(KERN_INFO "Closing device.\n");
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   413
    EtherCAT_device_close(&rtl_ecat_dev);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   414
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   415
#endif
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   416
26
60435f959e5c Serial-Debugger entfernt.
Florian Pose <fp@igh-essen.com>
parents: 24
diff changeset
   417
    printk(KERN_INFO "=== Minimal EtherCAT environment stopped. ===\n");
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   418
}
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   419
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   420
/*****************************************************************************/
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   421
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   422
MODULE_LICENSE("GPL");
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   423
MODULE_AUTHOR ("Florian Pose <fp@igh-essen.com>");
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   424
MODULE_DESCRIPTION ("Minimal EtherCAT environment");
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   425
22
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   426
module_init(init_module);
e8c2cd004e0b Portierung der Module in drivers/ und mini/ nach Kernel 2.6.
Florian Pose <fp@igh-essen.com>
parents: 13
diff changeset
   427
module_exit(cleanup_module);
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   428
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   429
/*****************************************************************************/