annotate packages/devs/can/arm/lpc2xxx/current/src/can_accfilt_lpc2xxx.c @ 3345:b06697684f0a

* src/can_accfilt_lpc2xxx.c, src/can_lpc2xxx.c: Fix a compile issue of the lpc2xxx driver that only occurs if support for extended 29-bit CAN identifiers is enabled and support for message filtering is disabled. [ Bugzilla 1001901 ] * includes/can_lpc2xxx_baudrates.h: Added baudrate table for CAN clock of 14.745600 MHz. [ Bugzilla 1001900 ]
author sergeig
date Wed, 11 Sep 2013 21:00:16 +0000
parents 74dbf4c3f2e1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
1 //==========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
2 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
3 // devs/can/arm/lpc2xxx/current/src/can_accfilt_lpc2xxx.c
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
4 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
5 // Acceptance filter management for LPC2xxx CAN driver
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
6 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
7 //==========================================================================
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
8 // ####ECOSGPLCOPYRIGHTBEGIN####
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
9 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
12 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
13 // eCos is free software; you can redistribute it and/or modify it under
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
14 // the terms of the GNU General Public License as published by the Free
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
15 // Software Foundation; either version 2 or (at your option) any later
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
16 // version.
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
17 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
18 // eCos is distributed in the hope that it will be useful, but WITHOUT
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
19 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
20 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
21 // for more details.
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
22 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
23 // You should have received a copy of the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
24 // along with eCos; if not, write to the Free Software Foundation, Inc.,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
25 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
26 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
27 // As a special exception, if other files instantiate templates or use
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
28 // macros or inline functions from this file, or you compile this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
29 // and link it with other works to produce a work based on this file,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
30 // this file does not by itself cause the resulting work to be covered by
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
31 // the GNU General Public License. However the source code for this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
32 // must still be made available in accordance with section (3) of the GNU
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
33 // General Public License v2.
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
34 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
35 // This exception does not invalidate any other reasons why a work based
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
36 // on this file might be covered by the GNU General Public License.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
37 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
38 // ####ECOSGPLCOPYRIGHTEND####
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
39 //==========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
40 //#####DESCRIPTIONBEGIN####
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
41 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
42 // Author(s): Uwe Kindler
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
43 // Contributors: Uwe Kindler
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
44 // Date: 2007-05-28
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
45 // Purpose: Support LPC2xxx on-chip CAN acceptance filters
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
46 // Description:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
47 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
48 //####DESCRIPTIONEND####
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
49 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
50 //==========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
51
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
52
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
53 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
54 // Data types
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
55 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
56 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
57 // Acceptance filter entry
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
58 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
59 typedef struct lpc2xxx_accfilt_entry
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
60 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
61 cyg_uint32 data; // the value inclusive channel number
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
62 cyg_uint32 id;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
63 cyg_uint32 lower_id_bound;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
64 cyg_uint32 upper_id_bound;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
65 cyg_uint8 channel_no;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
66 } lpc2xxx_accfilt_entry_t;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
67
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
68
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
69 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
70 // Declarations
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
71 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
72 //--------------------------------------------------------------------------
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
73 // On no-suffix and /00 devices, the CAN controllers are numbered 1 to n
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
74 // (n = 2 or 4) in the LUT tables. However, on /01 devices, the CAN controllers
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
75 // are numbered 0 to n�1 in the LUT tables.
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
76 //
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
77 // On the LPC2468 the LUT channel numbers are also numbered from 0 - 4.
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
78 //
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
79 #if defined(CYGHWR_HAL_ARM_LPC2XXX_SUFFIX_01) || (CYGHWR_HAL_ARM_LPC2XXX_VARIANT_VERSION == 4)
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
80 # define LPC2XXX_CAN_FIRST_IN_LUT (0)
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
81 #else
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
82 # define LPC2XXX_CAN_FIRST_IN_LUT (1)
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
83 #endif
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
84
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
85 //
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
86 // This macro calculates the chanel number from the channel info. The channel
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
87 // number is numbered from 0 - 3 but in the LUT the channel number may differ
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
88 // depending on the device suffix. For some devices the channel number in
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
89 // LUT are numbered 0 - 3 and for other devices the channels in LUT are
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
90 // numbered 1 - 4. This macro abstrats this fact from the acceptance filter
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
91 // code
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
92 //
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
93 #define CAN_CHAN_NO_LUT(_info_) (CAN_CHAN_NO(_info_) + LPC2XXX_CAN_FIRST_IN_LUT)
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
94
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
95 //--------------------------------------------------------------------------
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
96 // Lowlevel acceptance filter access
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
97 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
98 #ifdef CYGOPT_IO_CAN_RUNTIME_MBOX_CFG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
99 static bool lpc2xxx_can_accfilt_add(lpc2xxx_can_info_t *info,
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
100 cyg_uint32 lower_id,
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
101 cyg_uint32 upper_id,
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
102 cyg_can_id_type ext);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
103 void lpc2xxx_can_accfilt_ram_insert_entry(cyg_uint32 TableAddress, cyg_uint16 EntryNo);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
104 void lpc2xxx_can_accfilt_ram_remove_entry(cyg_uint32 TableAddress, cyg_uint16 EntryNo);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
105 void lpc2xxx_can_accfilt_remove_all_ctrl_entries(lpc2xxx_can_info_t *info);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
106 #else
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
107 static void lpc2xxx_can_accfilt_simple_rx_all(void);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
108 #endif // CYGOPT_IO_CAN_RUNTIME_MBOX_CFG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
109 void lpc2xxx_can_accfilt_reset(void);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
110
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
111 #ifdef CYGDBG_DEVS_CAN_LPC2XXX_DEBUG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
112 void lpc2xxx_can_accfilt_dbg_dump(void);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
113 void lpc2xxx_can_reg_dump(struct cyg_devtab_entry* devtab_entry);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
114 #endif
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
115
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
116
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
117 #ifdef CYGOPT_IO_CAN_RUNTIME_MBOX_CFG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
118 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
119 // Calculate address of entry in certain table
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
120 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
121 static cyg_uint32 lpc2xxx_can_accfilt_calc_entry_address(cyg_uint32 TableAddressRegister, cyg_uint16 EntryNo)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
122 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
123 cyg_uint32 EntryAddress = 0xFFFFFFFF;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
124 cyg_uint32 TableAddress;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
125
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
126 HAL_READ_UINT32(TableAddressRegister, TableAddress);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
127 switch (TableAddressRegister)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
128 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
129 #ifdef CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
130 case CAN_ACCFILT_SFF_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
131 EntryAddress = ((EntryNo / 2) << 2) + TableAddress;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
132 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
133
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
134 case CAN_ACCFILT_SFF_GRP_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
135 EntryAddress = TableAddress + (EntryNo << 2);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
136 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
137 #endif // CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
138
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
139 #ifdef CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
140 case CAN_ACCFILT_EFF_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
141 EntryAddress = TableAddress + (EntryNo << 2);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
142 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
143
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
144 case CAN_ACCFILT_EFF_GRP_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
145 EntryAddress = TableAddress + (EntryNo << 3);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
146 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
147 #endif // CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
148 default:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
149 CYG_ASSERT(0, "Wrong TableAddressRegister");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
150 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
151
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
152 return EntryAddress;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
153 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
154
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
155
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
156 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
157 // Remove one single entry from acceptance filter table
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
158 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
159 void lpc2xxx_can_accfilt_ram_remove_entry(cyg_uint32 Table, cyg_uint16 EntryNo)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
160 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
161 cyg_int32 remove_address = lpc2xxx_can_accfilt_calc_entry_address(Table, EntryNo);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
162 cyg_int32 entry_address;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
163 lsc_buf_t lsc_val;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
164 cyg_uint8 entry_size = sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
165 cyg_uint32 sff_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
166 cyg_uint32 sff_grp_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
167 cyg_uint32 eff_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
168 cyg_uint32 eff_grp_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
169 cyg_int32 end_of_table;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
170
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
171 HAL_READ_UINT32(CAN_ACCFILT_SFF_SA, sff_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
172 HAL_READ_UINT32(CAN_ACCFILT_SFF_GRP_SA, sff_grp_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
173 HAL_READ_UINT32(CAN_ACCFILT_EFF_SA, eff_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
174 HAL_READ_UINT32(CAN_ACCFILT_EFF_GRP_SA, eff_grp_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
175 HAL_READ_UINT32(CAN_ACCFILT_ENDOFTABLE, end_of_table);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
176
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
177 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
178 // Do not try to remove from an empty table
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
179 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
180 if (!end_of_table)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
181 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
182 return;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
183 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
184
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
185 entry_address = remove_address;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
186
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
187 if ((remove_address < eff_grp_sa) && (CAN_ACCFILT_EFF_GRP_SA != Table))
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
188 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
189 if ((remove_address < eff_sa) && (CAN_ACCFILT_EFF_SA != Table))
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
190 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
191 if ((remove_address < sff_grp_sa) && (CAN_ACCFILT_SFF_GRP_SA != Table))
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
192 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
193 lsc_buf_t nextval;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
194
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
195 if (EntryNo % 2)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
196 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
197 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + remove_address, lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
198 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + remove_address + sizeof(cyg_uint32), nextval.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
199 lsc_val.column.upper = nextval.column.lower;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
200 entry_address += sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
201 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
202
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
203 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
204 // Start copy immediatelly after removed entry
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
205 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
206 while (entry_address < sff_grp_sa)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
207 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
208 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + entry_address, lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
209 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + entry_address + sizeof(cyg_uint32), nextval.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
210 lsc_val.column.lower = lsc_val.column.upper;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
211 lsc_val.column.upper = nextval.column.lower;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
212 HAL_WRITE_UINT32(CAN_ACCFILT_RAM_BASE + entry_address, lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
213 entry_address += sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
214 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
215
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
216 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
217 // now check if the lower identifier is disabled - if it is disabled, then
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
218 // also the upper identifier is invalid and we can remove the entry completely
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
219 // if the lower identifier is not disabled, then it is valid and we need
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
220 // to disable the upper identifier because it contains an invalid entry
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
221 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
222 if (lsc_val.column.lower & ACCFILT_STD_DIS)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
223 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
224 sff_grp_sa -= sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
225 entry_address = sff_grp_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
226 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
227 else
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
228 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
229 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + sff_grp_sa - sizeof(cyg_uint32), lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
230 lsc_val.column.upper = 0xffff;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
231 HAL_WRITE_UINT32(CAN_ACCFILT_RAM_BASE + sff_grp_sa - sizeof(cyg_uint32), lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
232 entry_size = 0; // we do not need to remove anything
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
233 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
234 } // if (pLine < pStdGrpStart)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
235
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
236 eff_sa -= entry_size;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
237 } // if (pLine < pExtIdStart)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
238
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
239 eff_grp_sa -= entry_size;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
240 } // if (pLine < pExtGrpStart)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
241
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
242 //
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
243 // If no entry was removed then we can leave immediately without changing any
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
244 // table pointers because we only did a change inside the sff table
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
245 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
246 if (!entry_size)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
247 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
248 #ifdef CYGDBG_DEVS_CAN_LPC2XXX_DEBUG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
249 lpc2xxx_can_accfilt_dbg_dump();
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
250 #endif
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
251 return;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
252 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
253
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
254 if (CAN_ACCFILT_EFF_GRP_SA == Table)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
255 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
256 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
257 // If we are in the area of extended groups then we need to remove
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
258 // 2 lines because lower and upper identifier need 1 line each
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
259 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
260 entry_size += sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
261 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
262
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
263 end_of_table -= entry_size;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
264
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
265 //
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
266 // Move all entries one or two dword downwards - that means we remove a line
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
267 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
268 while (entry_address < end_of_table)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
269 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
270 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + entry_address + entry_size, lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
271 HAL_WRITE_UINT32(CAN_ACCFILT_RAM_BASE + entry_address, lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
272 entry_address += sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
273 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
274
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
275 HAL_WRITE_UINT32(CAN_ACCFILT_SFF_SA, sff_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
276 HAL_WRITE_UINT32(CAN_ACCFILT_SFF_GRP_SA, sff_grp_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
277 HAL_WRITE_UINT32(CAN_ACCFILT_EFF_SA, eff_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
278 HAL_WRITE_UINT32(CAN_ACCFILT_EFF_GRP_SA, eff_grp_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
279 HAL_WRITE_UINT32(CAN_ACCFILT_ENDOFTABLE, end_of_table);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
280
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
281 #ifdef CYGDBG_DEVS_CAN_LPC2XXX_DEBUG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
282 lpc2xxx_can_accfilt_dbg_dump();
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
283 #endif
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
284 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
285
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
286 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
287 // Insert one empty line into ram - all entries behind this line will be
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
288 // moved one entry upwards
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
289 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
290 void lpc2xxx_can_accfilt_ram_insert_entry(cyg_uint32 Table, cyg_uint16 EntryNo)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
291 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
292 cyg_int16 insert_address = lpc2xxx_can_accfilt_calc_entry_address(Table, EntryNo);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
293 cyg_int16 entry_address;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
294 cyg_int16 copy_start = insert_address;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
295 lsc_buf_t lsc_val;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
296 cyg_uint8 entry_size = sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
297 cyg_uint32 sff_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
298 cyg_uint32 sff_grp_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
299 cyg_uint32 eff_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
300 cyg_uint32 eff_grp_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
301 cyg_uint32 end_of_table;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
302
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
303
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
304 HAL_READ_UINT32(CAN_ACCFILT_SFF_SA, sff_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
305 HAL_READ_UINT32(CAN_ACCFILT_SFF_GRP_SA, sff_grp_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
306 HAL_READ_UINT32(CAN_ACCFILT_EFF_SA, eff_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
307 HAL_READ_UINT32(CAN_ACCFILT_EFF_GRP_SA, eff_grp_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
308 HAL_READ_UINT32(CAN_ACCFILT_ENDOFTABLE, end_of_table);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
309
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
310 if ((insert_address <= eff_grp_sa) && (CAN_ACCFILT_EFF_GRP_SA != Table))
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
311 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
312 if ((insert_address <= eff_sa) && (CAN_ACCFILT_EFF_SA != Table))
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
313 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
314 if ((insert_address <= sff_grp_sa) && (CAN_ACCFILT_SFF_GRP_SA != Table))
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
315 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
316 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
317 // If we are in the range of standard identifiers then we need to
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
318 // do some special copy procedure for this area because a standard entry
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
319 // is only 2 byte long. Copy only til start of area with standard groups
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
320 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
321 if (sff_grp_sa)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
322 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
323 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + sff_grp_sa - sizeof(cyg_uint32), lsc_val.dword); // read last entry
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
324 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
325 // now check if the upper identifier is disabled - if it is disabled, then
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
326 // we have an odd number of std ids in the list. Then we do not need to
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
327 // insert a new line - we simply need to copy all entries 2 bytes upwards
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
328 // that means we only need to change the std id area and do not need to touch
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
329 // any other filter id area.
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
330 // If the last entry is not disabled, then we have a valid filter here.
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
331 // Then we need to insert a complete new line, that means we also have to move
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
332 // all following entries and filter tables one dword upwards.
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
333 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
334 if (lsc_val.words.low & ACCFILT_STD_DIS)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
335 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
336 copy_start = end_of_table + sizeof(cyg_uint32); // we do not need to insert a new line and do not copy anything
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
337 entry_size = 0;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
338 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
339 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
340
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
341 if (entry_size)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
342 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
343 copy_start = sff_grp_sa; // copy everything behind std id group
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
344 sff_grp_sa += entry_size;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
345 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
346 } // if (pLine < pStdGrpStart)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
347
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
348 eff_sa += entry_size;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
349 } // if (pLine < pExtIdStart)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
350
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
351 eff_grp_sa += entry_size;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
352 } // if (pLine < pExtGrpStart)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
353
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
354 if (CAN_ACCFILT_EFF_GRP_SA == Table)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
355 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
356 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
357 // If we are in the area of extended groups then we need to insert
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
358 // 2 lines because lower and upper identifier need 1 line each
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
359 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
360 entry_size += sizeof(cyg_uint32); // one entry is 2 dword long
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
361 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
362
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
363 entry_address = end_of_table - sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
364 end_of_table += entry_size; // add one additional entry
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
365
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
366 //
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
367 // Move all entries one or two dwords upwards - that means we insert a new empty line
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
368 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
369 while (entry_address >= copy_start)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
370 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
371 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + (cyg_uint32)entry_address, lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
372 HAL_WRITE_UINT32(CAN_ACCFILT_RAM_BASE + (cyg_uint32)entry_address + entry_size, lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
373 entry_address -= sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
374 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
375
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
376 //
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
377 // For the std ID area we need a special procedure
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
378 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
379 if (CAN_ACCFILT_SFF_SA == Table)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
380 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
381 lsc_buf_t preval;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
382 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
383 // Start copy with last entry of std id table
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
384 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
385 entry_address = sff_grp_sa - sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
386
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
387 while (entry_address > insert_address)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
388 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
389 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + (cyg_uint32)entry_address, lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
390 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + (cyg_uint32)entry_address - sizeof(cyg_uint32), preval.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
391 lsc_val.column.upper = lsc_val.column.lower;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
392 lsc_val.column.lower = preval.column.upper;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
393 HAL_WRITE_UINT32(CAN_ACCFILT_RAM_BASE + (cyg_uint32)entry_address, lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
394 entry_address -= sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
395 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
396
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
397 //
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
398 // If we insert an entry into the lower column, then we need to move the
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
399 // content of the lower column into the upper column
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
400 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
401 if (!(EntryNo % 2))
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
402 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
403 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + (cyg_uint32)insert_address, lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
404 lsc_val.column.upper = lsc_val.column.lower;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
405 HAL_WRITE_UINT32(CAN_ACCFILT_RAM_BASE + (cyg_uint32)insert_address, lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
406 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
407
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
408 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
409 // If we inserted a new line, then we have an odd number of identifiers now
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
410 // and need to disable the last (the upper) entry
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
411 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
412 if (entry_size)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
413 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
414 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + sff_grp_sa - sizeof(cyg_uint32) , lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
415 lsc_val.column.upper = 0xFFFF; // disable the entry
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
416 HAL_WRITE_UINT32(CAN_ACCFILT_RAM_BASE + sff_grp_sa - sizeof(cyg_uint32) , lsc_val.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
417 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
418 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
419
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
420 HAL_WRITE_UINT32(CAN_ACCFILT_SFF_SA, sff_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
421 HAL_WRITE_UINT32(CAN_ACCFILT_SFF_GRP_SA, sff_grp_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
422 HAL_WRITE_UINT32(CAN_ACCFILT_EFF_SA, eff_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
423 HAL_WRITE_UINT32(CAN_ACCFILT_EFF_GRP_SA, eff_grp_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
424 HAL_WRITE_UINT32(CAN_ACCFILT_ENDOFTABLE, end_of_table);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
425 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
426
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
427
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
428 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
429 // Query number of entries in a certain table
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
430 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
431 static cyg_uint16 lpc2xxx_can_accfilt_get_table_entries(cyg_uint32 TableStartAddress)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
432 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
433 cyg_uint32 start;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
434 cyg_uint32 end;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
435
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
436 switch (TableStartAddress)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
437 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
438 #ifdef CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
439 case CAN_ACCFILT_SFF_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
440 HAL_READ_UINT32(CAN_ACCFILT_SFF_SA, start);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
441 HAL_READ_UINT32(CAN_ACCFILT_SFF_GRP_SA, end);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
442 if (end - start)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
443 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
444 lsc_buf_t data;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
445 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + end - sizeof(cyg_uint32), data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
446 if (data.column.upper & ACCFILT_STD_DIS)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
447 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
448 return (((end - start) >> 1) - 1);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
449 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
450 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
451 return (end - start) >> 1;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
452
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
453 case CAN_ACCFILT_SFF_GRP_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
454 HAL_READ_UINT32(CAN_ACCFILT_SFF_GRP_SA, start);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
455 HAL_READ_UINT32(CAN_ACCFILT_EFF_SA, end);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
456 return (end - start) >> 2;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
457 #endif // CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
458
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
459 #ifdef CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
460 case CAN_ACCFILT_EFF_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
461 HAL_READ_UINT32(CAN_ACCFILT_EFF_SA, start);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
462 HAL_READ_UINT32(CAN_ACCFILT_EFF_GRP_SA, end);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
463 return (end - start) >> 2;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
464
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
465 case CAN_ACCFILT_EFF_GRP_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
466 HAL_READ_UINT32(CAN_ACCFILT_EFF_GRP_SA, start);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
467 HAL_READ_UINT32(CAN_ACCFILT_ENDOFTABLE, end);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
468 return (end - start) >> 3;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
469 #endif // CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
470 default:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
471 CYG_FAIL("Invalid identifier table address");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
472 return 0;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
473 } // switch (TableStartAddress)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
474 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
475
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
476 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
477 // Query certain entry from table
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
478 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
479 static void lpc2xxx_can_accfilt_get_entry(cyg_uint32 TableStartAddress, cyg_uint16 EntryNo, lpc2xxx_accfilt_entry_t *pEntry)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
480 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
481 cyg_uint32 EntryAddress = lpc2xxx_can_accfilt_calc_entry_address(TableStartAddress, EntryNo);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
482 lsc_buf_t Data;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
483
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
484 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + EntryAddress, Data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
485 pEntry->data = Data.dword;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
486 switch (TableStartAddress)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
487 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
488 #ifdef CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
489 case CAN_ACCFILT_SFF_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
490 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
491 cyg_uint16 column;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
492 if (EntryNo % 2)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
493 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
494 column = Data.column.upper;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
495 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
496 else
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
497 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
498 column = Data.column.lower;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
499 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
500 pEntry->id = ACCFILT_STD_GET_ID(column);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
501 pEntry->channel_no = ACCFILT_STD_GET_CTRL(column);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
502 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
503 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
504
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
505 case CAN_ACCFILT_SFF_GRP_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
506 pEntry->lower_id_bound = ACCFILT_STD_GET_ID(Data.column.lower);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
507 pEntry->upper_id_bound = ACCFILT_STD_GET_ID(Data.column.upper);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
508 pEntry->channel_no = ACCFILT_STD_GET_CTRL(Data.column.lower);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
509 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
510 #endif // #ifdef CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
511
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
512 #ifdef CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
513 case CAN_ACCFILT_EFF_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
514 pEntry->id = ACCFILT_EXT_GET_ID(Data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
515 pEntry->channel_no = ACCFILT_EXT_GET_CTRL(Data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
516 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
517
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
518 case CAN_ACCFILT_EFF_GRP_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
519 pEntry->lower_id_bound = ACCFILT_EXT_GET_ID(Data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
520 pEntry->channel_no = ACCFILT_EXT_GET_CTRL(Data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
521 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE+ EntryAddress + sizeof(cyg_uint32), Data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
522 pEntry->upper_id_bound = ACCFILT_EXT_GET_ID(Data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
523 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
524 #endif // #ifedf CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
525 default:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
526 CYG_FAIL("Invalid identifier table address");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
527 } // switch ()
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
528 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
529
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
530
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
531 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
532 // Set certain entry in table
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
533 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
534 static void lpc2xxx_can_accfilt_set_entry(cyg_uint32 TableStartAddress, cyg_uint16 EntryNo, lpc2xxx_accfilt_entry_t *pEntry)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
535 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
536 cyg_uint32 EntryAddress = lpc2xxx_can_accfilt_calc_entry_address(TableStartAddress, EntryNo);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
537 lsc_buf_t Data;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
538
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
539 switch (TableStartAddress)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
540 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
541 #ifdef CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
542 case CAN_ACCFILT_SFF_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
543 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
544 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + EntryAddress, Data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
545 if (EntryNo % 2)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
546 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
547 Data.column.upper = (pEntry->channel_no << 13) | (pEntry->id & ACCFILT_STD_ID_MASK);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
548 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
549 else
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
550 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
551 Data.column.lower = (pEntry->channel_no << 13) | (pEntry->id & ACCFILT_STD_ID_MASK);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
552 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
553 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
554 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
555
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
556 case CAN_ACCFILT_SFF_GRP_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
557 Data.column.lower = (pEntry->channel_no << 13) | (pEntry->lower_id_bound & ACCFILT_STD_ID_MASK);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
558 Data.column.upper = (pEntry->channel_no << 13) | (pEntry->upper_id_bound & ACCFILT_STD_ID_MASK);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
559 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
560 #endif // #ifdef CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
561
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
562 #ifdef CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
563 case CAN_ACCFILT_EFF_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
564 Data.dword = (pEntry->channel_no << 29) | (pEntry->id & ACCFILT_EXT_ID_MASK);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
565 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
566
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
567 case CAN_ACCFILT_EFF_GRP_SA:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
568 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
569 lsc_buf_t Data2;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
570
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
571 Data.dword = (pEntry->channel_no << 29) | (pEntry->lower_id_bound & ACCFILT_EXT_ID_MASK);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
572 Data2.dword = (pEntry->channel_no << 29) | (pEntry->upper_id_bound & ACCFILT_EXT_ID_MASK);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
573 HAL_WRITE_UINT32(CAN_ACCFILT_RAM_BASE + EntryAddress + sizeof(cyg_uint32), Data2.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
574 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
575 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
576 #endif // #ifdef CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
577
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
578 default:
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
579 CYG_FAIL("Invalid identifier table address");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
580 } // switch ()
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
581
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
582 HAL_WRITE_UINT32(CAN_ACCFILT_RAM_BASE + EntryAddress, Data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
583 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
584
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
585
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
586 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
587 // Add one entry to acceptance filter RAM
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
588 // If upper ID is > lower ID then we have to add a group filter - else we
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
589 // have to add a single message filter here
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
590 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
591 static bool lpc2xxx_can_accfilt_add(lpc2xxx_can_info_t *info,
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
592 cyg_uint32 lower_id,
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
593 cyg_uint32 upper_id,
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
594 cyg_can_id_type ext)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
595 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
596 cyg_uint32 accfilt_bck; // acceptance filter backup
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
597 cyg_uint32 end_of_table;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
598 cyg_uint32 table;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
599 lpc2xxx_accfilt_entry_t entry;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
600 lpc2xxx_accfilt_entry_t new_entry;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
601
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
602
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
603 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
604 // first step: disable acceptance filter and prepare it for modification
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
605 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
606 HAL_READ_UINT32(CAN_ACCFILT_AFMR, accfilt_bck);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
607 HAL_WRITE_UINT32(CAN_ACCFILT_AFMR, AFMR_OFF | AFMR_BYPASS);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
608
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
609 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
610 // Check if table is full
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
611 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
612 HAL_READ_UINT32(CAN_ACCFILT_ENDOFTABLE, end_of_table);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
613 if (end_of_table >= ACCFILT_RAM_SIZE)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
614 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
615 return false;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
616 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
617
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
618 new_entry.id = lower_id;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
619 new_entry.lower_id_bound = lower_id;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
620 new_entry.upper_id_bound = upper_id;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
621
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
622 //
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
623 // Here we rely on the ISR vector ordering for calculation of channel number
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
624 // Maybe this is not the right way for newer LPC parts
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
625 //
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
626 new_entry.channel_no = CAN_CHAN_NO_LUT(info);
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
627
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
628 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
629 // If lower_id == upper_id then we know that we have to setup a single message filter
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
630 // here. If it is not equal the it is group of identifiers to receive
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
631 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
632 if ((lower_id == upper_id) || (lower_id > upper_id))
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
633 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
634 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
635 // setup single message filter (standard or extended) here
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
636 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
637 #ifdef CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
638 if (ext)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
639 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
640 table = CAN_ACCFILT_EFF_SA;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
641 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
642 else
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
643 #endif // #ifdef CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
644 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
645 #ifdef CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
646 table = CAN_ACCFILT_SFF_SA;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
647 #endif // CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
648 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
649 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
650 else
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
651 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
652 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
653 // setup single message filter (standard or extended) here
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
654 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
655 #ifdef CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
656 if (ext)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
657 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
658 table = CAN_ACCFILT_EFF_GRP_SA;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
659 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
660 else
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
661 #endif // #ifdef CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
662 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
663 #ifdef CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
664 table = CAN_ACCFILT_SFF_GRP_SA;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
665 #endif // #ifdef CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
666 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
667 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
668
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
669 cyg_uint16 entries = lpc2xxx_can_accfilt_get_table_entries(table);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
670 cyg_uint16 i;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
671
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
672
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
673 for (i = 0; i < entries; ++i)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
674 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
675 lpc2xxx_can_accfilt_get_entry(table, i, &entry);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
676
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
677 if (entry.channel_no > new_entry.channel_no)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
678 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
679 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
680 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
681
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
682 if ((entry.channel_no == new_entry.channel_no)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
683 && (entry.id > new_entry.id))
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
684 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
685 break;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
686 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
687 } // for (i = 0; i < entries; ++i)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
688
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
689 lpc2xxx_can_accfilt_ram_insert_entry(table, i);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
690 lpc2xxx_can_accfilt_set_entry(table, i, &new_entry);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
691
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
692 //
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
693 // finally restore the previous state of the acceptance filter
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
694 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
695 HAL_WRITE_UINT32(CAN_ACCFILT_AFMR, accfilt_bck);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
696 return true;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
697 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
698
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
699
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
700 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
701 // Remove all entries from a certain controller
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
702 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
703 void lpc2xxx_can_accfilt_remove_all_ctrl_entries(lpc2xxx_can_info_t *info)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
704 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
705 cyg_uint32 accfilt_bck; // acceptance filter backup
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
706 cyg_uint16 i;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
707 cyg_uint16 entries;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
708 cyg_uint32 TableStartAddress = CAN_ACCFILT_SFF_SA;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
709 lpc2xxx_accfilt_entry_t Entry;
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
710 cyg_uint8 channel_no = CAN_CHAN_NO_LUT(info);
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
711 cyg_uint16 entry_idx;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
712
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
713 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
714 // first step: disable acceptance filter and prepare it for modification
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
715 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
716 HAL_READ_UINT32(CAN_ACCFILT_AFMR, accfilt_bck);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
717 HAL_WRITE_UINT32(CAN_ACCFILT_AFMR, AFMR_OFF | AFMR_BYPASS);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
718
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
719 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
720 // now remove all entries for a certain controller
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
721 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
722 for (TableStartAddress = CAN_ACCFILT_SFF_SA; TableStartAddress < CAN_ACCFILT_ENDOFTABLE; TableStartAddress += 4)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
723 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
724 entries = lpc2xxx_can_accfilt_get_table_entries(TableStartAddress);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
725 entry_idx = 0;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
726 for (i = 0; i < entries; ++i)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
727 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
728 lpc2xxx_can_accfilt_get_entry(TableStartAddress, entry_idx, &Entry);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
729 if (Entry.channel_no == channel_no)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
730 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
731 lpc2xxx_can_accfilt_ram_remove_entry(TableStartAddress, entry_idx);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
732 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
733 else
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
734 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
735 entry_idx++;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
736 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
737 } // for (i = 0; i < entries; ++i)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
738 } // for (TableStartAddress = CAN_ACCFILT_SFF_SA ...
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
739
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
740 //
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
741 // finally restore the previous state of the acceptance filter
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
742 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
743 HAL_WRITE_UINT32(CAN_ACCFILT_AFMR, accfilt_bck);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
744 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
745 #endif // CYGOPT_IO_CAN_RUNTIME_MBOX_CFG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
746
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
747
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
748 #ifndef CYGOPT_IO_CAN_RUNTIME_MBOX_CFG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
749 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
750 // Setup reception of all CAN identifiers
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
751 // If runtime acceptance filter configuration is not required then we simply
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
752 // setup the acceptance filter here to receive all CAN identifiers
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
753 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
754 static void lpc2xxx_can_accfilt_simple_rx_all(void)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
755 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
756 cyg_uint32 regval;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
757
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
758 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
759 // First check if it is really necessary to setup filters. If end of table is
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
760 // != 0 then the acceptance filter is already setup properly
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
761 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
762 HAL_READ_UINT32(CAN_ACCFILT_ENDOFTABLE, regval);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
763 if (regval)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
764 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
765 return;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
766 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
767
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
768 cyg_uint32 accfilt_bck; // acceptance filter backup
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
769 cyg_uint8 i = 0; // loop counter
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
770 lsc_buf_t accfilt_entry; // std group entry
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
771 #ifdef CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
772 cyg_uint8 std_address = 0; // std group entry address
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
773 #ifdef CYGOPT_IO_CAN_EXT_CAN_ID
3345
b06697684f0a * src/can_accfilt_lpc2xxx.c, src/can_lpc2xxx.c: Fix a compile issue of
sergeig
parents: 2729
diff changeset
774 cyg_uint8 ext_address = LPC2XXX_INIT_CNT << 2;
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
775 #endif
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
776 #else
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
777 cyg_uint8 ext_address = 0;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
778 #endif
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
779
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
780 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
781 // first step: disable acceptance filter and prepare it for modification
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
782 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
783 HAL_READ_UINT32(CAN_ACCFILT_AFMR, accfilt_bck);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
784 HAL_WRITE_UINT32(CAN_ACCFILT_AFMR, AFMR_OFF | AFMR_BYPASS);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
785
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
786 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
787 // Write table start adresses - we use only standard group and extended filter
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
788 // group
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
789 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
790 HAL_WRITE_UINT32(CAN_ACCFILT_SFF_SA, 0);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
791 HAL_WRITE_UINT32(CAN_ACCFILT_SFF_GRP_SA, 0);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
792 HAL_WRITE_UINT32(CAN_ACCFILT_EFF_SA, ext_address);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
793 HAL_WRITE_UINT32(CAN_ACCFILT_EFF_GRP_SA, ext_address);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
794
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
795 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
796 // Now loop through all active CAN channels and setup the acceptance filter for
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
797 // each channel to receive all standard and extended CAN identifiers
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
798 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
799 while (lpc2xxx_global_can_info.active_channels[i])
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
800 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
801 lpc2xxx_can_info_t *info = (lpc2xxx_can_info_t *)lpc2xxx_global_can_info.active_channels[i++]->dev_priv;
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
802 cyg_uint8 channel_no = CAN_CHAN_NO_LUT(info);
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
803
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
804 #ifdef CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
805 accfilt_entry.column.lower = (channel_no << 13) | (0x000 & ACCFILT_STD_ID_MASK);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
806 accfilt_entry.column.upper = (channel_no << 13) | (0x7FF & ACCFILT_STD_ID_MASK);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
807 HAL_WRITE_UINT32(CAN_ACCFILT_RAM_BASE + std_address, accfilt_entry.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
808 std_address += sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
809 #endif // CYGOPT_IO_CAN_STD_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
810
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
811 #ifdef CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
812 accfilt_entry.dword = (channel_no << 29) | (0x00000000 & ACCFILT_EXT_ID_MASK);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
813 HAL_WRITE_UINT32(CAN_ACCFILT_RAM_BASE + ext_address, accfilt_entry.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
814 ext_address += sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
815 accfilt_entry.dword = (channel_no << 29) | (0x1FFFFFFF & ACCFILT_EXT_ID_MASK);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
816 HAL_WRITE_UINT32(CAN_ACCFILT_RAM_BASE + ext_address, accfilt_entry.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
817 ext_address += sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
818 #endif // CYGOPT_IO_CAN_EXT_CAN_ID
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
819 } // while (lpc2xxx_global_can_info.active_channels[i])
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
820
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
821 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
822 // finally store end of table value and restore the previous state of the
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
823 // acceptance filter
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
824 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
825 HAL_WRITE_UINT32(CAN_ACCFILT_ENDOFTABLE, ext_address);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
826 HAL_WRITE_UINT32(CAN_ACCFILT_AFMR, accfilt_bck);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
827 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
828 #endif // CYGOPT_IO_CAN_RUNTIME_MBOX_CFG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
829
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
830
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
831 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
832 // Reset acceptance filter to poweron defaults
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
833 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
834 void lpc2xxx_can_accfilt_reset(void)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
835 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
836 cyg_uint32 accfilt_bck; // acceptance filter backup
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
837 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
838 // first step: disable acceptance filter and prepare it for modification
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
839 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
840 HAL_READ_UINT32(CAN_ACCFILT_AFMR, accfilt_bck);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
841 HAL_WRITE_UINT32(CAN_ACCFILT_AFMR, AFMR_OFF | AFMR_BYPASS);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
842
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
843 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
844 // Now write zero to all addresses of acceptance filter table
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
845 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
846 HAL_WRITE_UINT32(CAN_ACCFILT_SFF_SA, 0);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
847 HAL_WRITE_UINT32(CAN_ACCFILT_SFF_GRP_SA, 0);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
848 HAL_WRITE_UINT32(CAN_ACCFILT_EFF_SA, 0);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
849 HAL_WRITE_UINT32(CAN_ACCFILT_EFF_GRP_SA, 0);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
850 HAL_WRITE_UINT32(CAN_ACCFILT_ENDOFTABLE, 0);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
851
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
852 //
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2409
diff changeset
853 // finally restore the previous state of the acceptance filter
2409
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
854 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
855 HAL_WRITE_UINT32(CAN_ACCFILT_AFMR, accfilt_bck);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
856 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
857
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
858
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
859 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
860 // Dump content of acceptance filter lookup table
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
861 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
862 #ifdef CYGDBG_DEVS_CAN_LPC2XXX_DEBUG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
863 void lpc2xxx_can_accfilt_dbg_dump(void)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
864 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
865 cyg_uint32 sff_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
866 cyg_uint32 sff_grp_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
867 cyg_uint32 eff_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
868 cyg_uint32 eff_grp_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
869 cyg_uint32 end_of_table;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
870 cyg_uint32 entry_address;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
871 lsc_buf_t data;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
872
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
873
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
874 HAL_READ_UINT32(CAN_ACCFILT_SFF_SA, sff_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
875 HAL_READ_UINT32(CAN_ACCFILT_SFF_GRP_SA, sff_grp_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
876 HAL_READ_UINT32(CAN_ACCFILT_EFF_SA, eff_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
877 HAL_READ_UINT32(CAN_ACCFILT_EFF_GRP_SA, eff_grp_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
878 HAL_READ_UINT32(CAN_ACCFILT_ENDOFTABLE, end_of_table);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
879
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
880 entry_address = sff_sa;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
881
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
882 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
883 // Print lookup table registers
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
884 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
885 diag_printf("\n\nDUMP CAN ACCEPTANCE FILTER REGISTERS\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
886 diag_printf("----------------------------------------\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
887 diag_printf("SFF_sa:\t\t0x%08x\n", sff_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
888 diag_printf("SFF_GRP_sa:\t0x%08x\n", sff_grp_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
889 diag_printf("EFF_sa:\t\t0x%08x\n", eff_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
890 diag_printf("EFF_GRP_sa:\t0x%08x\n", eff_grp_sa);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
891 diag_printf("EOT:\t\t0x%08x\n", end_of_table);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
892
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
893 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
894 // Print table of standard identifiers
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
895 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
896 diag_printf("\n\nDUMP CAN LOOKUP TABLE RAM");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
897 diag_printf("\nSFF_sa\t\tcolumn_lower\tcolumn_upper\traw_data\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
898 diag_printf("----------------------------------------------------------\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
899 while (entry_address < sff_grp_sa)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
900 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
901 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + entry_address, data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
902 diag_printf("0x%04x:\t\t0x%x\t\t0x%x\t\t0x%x\n", entry_address, data.column.lower, data.column.upper, data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
903 entry_address += sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
904 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
905
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
906 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
907 // Print table of standard identifier groups
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
908 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
909 diag_printf("\nSFF_GRP_sa\tcolumn_lower\tcolumn_upper\traw_data\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
910 diag_printf("----------------------------------------------------------\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
911 while (entry_address < eff_sa)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
912 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
913 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + entry_address, data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
914 diag_printf("0x%04x:\t\t0x%x\t\t0x%x\t\t0x%x\n", entry_address, data.column.lower, data.column.upper, data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
915 entry_address += sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
916 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
917
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
918 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
919 // Print table of extended identifiers
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
920 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
921 diag_printf("\nEFF_sa\t\t-\t\t-\t\traw_data\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
922 diag_printf("----------------------------------------------------------\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
923 while (entry_address < eff_grp_sa)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
924 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
925 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + entry_address, data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
926 diag_printf("0x%04x:\t\t\t\t\t\t0x%x\n", entry_address, data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
927 entry_address += sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
928 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
929
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
930 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
931 // Print table of extended identifier groups
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
932 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
933 diag_printf("\nEFF_GRP_sa\t-\t\t-\t\traw_data\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
934 diag_printf("----------------------------------------------------------\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
935 while (entry_address < end_of_table)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
936 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
937 HAL_READ_UINT32(CAN_ACCFILT_RAM_BASE + entry_address, data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
938 diag_printf("0x%04x:\t\t\t\t\t\t0x%x\n", entry_address, data.dword);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
939 entry_address += sizeof(cyg_uint32);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
940 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
941 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
942 #endif // CYGDBG_DEVS_CAN_LPC2XXX_DEBUG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
943
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
944 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
945 // Dump content of acceptance filter lookup table
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
946 //===========================================================================
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
947 #ifdef CYGDBG_DEVS_CAN_LPC2XXX_DEBUG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
948 void lpc2xxx_can_reg_dump(struct cyg_devtab_entry* devtab_entry)
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
949 {
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
950 can_channel *chan = (can_channel*)devtab_entry->priv;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
951 cyg_uint32 reg_val;
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
952 CAN_DECLARE_INFO(chan);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
953
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
954 chan = chan; // avoid compiler warnings for unused variables
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
955 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
956 // Print table of extended identifier groups
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
957 //
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
958 diag_printf("\n\nCAN REGISTER DUMP\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
959 diag_printf("\nRegister\tValue\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
960 diag_printf("----------------------------------------------------------\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
961 HAL_READ_UINT32(CAN_CTRL_MOD(info), reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
962 diag_printf("CANMOD\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
963 HAL_READ_UINT32(CAN_CTRL_CMR(info), reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
964 diag_printf("CANCMR\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
965 HAL_READ_UINT32(CAN_CTRL_GSR(info), reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
966 diag_printf("CANGSR\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
967 HAL_READ_UINT32(CAN_CTRL_ICR(info), reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
968 diag_printf("CANICR\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
969 HAL_READ_UINT32(CAN_CTRL_IER(info), reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
970 diag_printf("CANIER\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
971 HAL_READ_UINT32(CAN_CTRL_BTR(info), reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
972 diag_printf("CANBTR\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
973 HAL_READ_UINT32(CAN_CTRL_EWL(info), reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
974 diag_printf("CANEWL\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
975 HAL_READ_UINT32(CAN_CTRL_SR(info), reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
976 diag_printf("CANSR\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
977 HAL_READ_UINT32(CAN_CTRL_RFS(info), reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
978 diag_printf("CANRFS\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
979 HAL_READ_UINT32(CAN_CTRL_RID(info), reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
980 diag_printf("CANRID\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
981 HAL_READ_UINT32(CAN_CTRL_RDA(info), reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
982 diag_printf("CANRDA\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
983 HAL_READ_UINT32(CAN_CTRL_RDB(info), reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
984 diag_printf("CANRDB\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
985
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
986 diag_printf("\n\nCAN CENTRAL REGISTER DUMP\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
987 diag_printf("\nRegister\tValue\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
988 diag_printf("----------------------------------------------------------\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
989 HAL_READ_UINT32(CAN_CENTRAL_TXSR, reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
990 diag_printf("CANTxSR\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
991 HAL_READ_UINT32(CAN_CENTRAL_RXSR, reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
992 diag_printf("CANRxSR\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
993 HAL_READ_UINT32(CAN_CENTRAL_MSR, reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
994 diag_printf("CANMSR\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
995
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
996 diag_printf("\n\nCAN ACCEPTANCE FILTER REGISTER DUMP\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
997 diag_printf("\nRegister\tValue\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
998 diag_printf("----------------------------------------------------------\n");
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
999 HAL_READ_UINT32(CAN_ACCFILT_AFMR, reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
1000 diag_printf("AFMR\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
1001 HAL_READ_UINT32(CAN_ACCFILT_LUT_ERR, reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
1002 diag_printf("LUTERR\t\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
1003 HAL_READ_UINT32(CAN_ACCFILT_LUT_ERR_ADDR, reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
1004 diag_printf("LUTERRADDR\t0x%08x\n", reg_val);
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
1005 }
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
1006 #endif // #ifdef CYGDBG_DEVS_CAN_LPC2XXX_DEBUG
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
1007
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
1008 //---------------------------------------------------------------------------
e8eaf852a606 2007-07-07 Alexey Shusharin <mrfinch@mail.ru>
asl
parents: 2406
diff changeset
1009 // EOF can_accfilt_lpc2xxx.c