There are two bugs in the CAN driver for the LPC2xxx.
One is in include/can_lpc2xxx_baudrates.h: numbers shouldn't be prefixed
with 0 if they aren't intended to be interpreted as octal. I fixed this
only where it actually breaks, but the rest should be changed, too.
The other is in src/can_lpc2xxx.c, the definition of "info" is missing
when only one CAN channel is configured.
--
%SYSTEM-F-ANARCHISM, The operating system has been overthrown
Index: can_lpc2xxx.c
===================================================================
RCS file:
/cvs/ecos/ecos/packages/devs/can/arm/lpc2xxx/current/src/can_lpc2xxx.c,v
retrieving revision 1.3
diff -u -r1.3 can_lpc2xxx.c
--- can_lpc2xxx.c 2 Aug 2007 08:48:00 -0000 1.3
+++ can_lpc2xxx.c 16 Aug 2007 16:20:29 -0000
@@ -928,7 +928,7 @@
static Cyg_ErrNo lpc2xxx_can_lookup(struct cyg_devtab_entry** tab, struct
cyg_devtab_entry* sub_tab, const char* name)
{
can_channel* chan = (can_channel*) (*tab)->priv;
- CAN_DECLARE_INFO(chan);
+ lpc2xxx_can_info_t *info = (lpc2xxx_can_info_t *)chan->dev_priv;
cyg_uint32 regval;
chan->callbacks->can_init(chan);
Index: can_lpc2xxx_baudrates.h
===================================================================
RCS file:
/cvs/ecos/ecos/packages/devs/can/arm/lpc2xxx/current/include/can_lpc2xxx_baudrates.h,v
retrieving revision 1.2
diff -u -r1.2 can_lpc2xxx_baudrates.h
--- can_lpc2xxx_baudrates.h 31 Jul 2007 07:53:36 -0000 1.2
+++ can_lpc2xxx_baudrates.h 16 Aug 2007 16:30:55 -0000
@@ -118,7 +118,7 @@
CAN_BR_TBL_ENTRY(59, 15, 07, 0, 1), // 10 kbaud
CAN_BR_TBL_ENTRY(49, 11, 01, 0, 1), // 20 kbaud
CAN_BR_TBL_ENTRY(19, 11, 01, 0, 1), // 50 kbaud
- CAN_BR_TBL_ENTRY(09, 11, 01, 0, 1), // 100 kbaud
+ CAN_BR_TBL_ENTRY( 9, 11, 01, 0, 1), // 100 kbaud
CAN_BR_TBL_ENTRY(07, 11, 01, 0, 1), // 125 kbaud
CAN_BR_TBL_ENTRY(03, 11, 01, 0, 1), // 250 kbaud
CAN_BR_TBL_ENTRY(01, 11, 01, 0, 0), // 500 kbaud