#include "can/can.h"
#include "can/canmsg.h"
+#include "can/can_bittiming.h"
#ifdef __cplusplus
extern "C"
{
#endif
-
+// CAN1, CAN2 and CAN Acceptance filter base addresses
#define CAN1_REGS_BASE 0x40044000UL
#define CAN2_REGS_BASE 0x40048000UL
#define CANAF_REGS_BASE 0x4003C000UL
+// offset of CAN registers
#define CAN_MOD_o 0x0000
#define CAN_CMR_o 0x0004
#define CAN_GSR_o 0x0008
#define CAN_TDA3_o 0x0058
#define CAN_TDB3_o 0x005C
-
+// offset of CAN Acceptance filter registers
#define CANAF_AFMR_o 0x0000
#define CANAF_SFF_sa_o 0x0004
#define CANAF_SFF_GRP_sa_o 0x0008
//CAN Status Register bits
#define CAN_SR_RBS (1<<0)
#define CAN_SR_DOS (1<<1)
-#define CAN_SR_TBS1 (1<<2)
+#define CAN_SR_TBS1 (1<<2)
+#define CAN_SR_TCS1 (1<<3)
//CAN Command Register bits
#define CAN_CMR_TR (1<<0)
// CAN1_RX_BIT a CAN1_TX_BIT jiz definovany v system_def.h
+//----------------------------------
+
+#define MAX_TRANSMIT_WAIT_LOOPS 10000
void CAN_init(struct canchip_t *chip);
void CAN_send(struct canchip_t *chip, canmsg_t* msg);
void CAN_recv(struct canchip_t *chip, canmsg_t* msg);
-void CAN_IRQHandler(void);
-
-//----------------------------------
struct can_lmc1_chip_data
{
int flags;
};
+
// board can-lmc1 specific functions:
int can_lmc1_register(struct hwspecops_t *hwspecops);
int can_lmc1_init_hw_data(struct candevice_t *candev);
unsigned can_lmc1_read_register(unsigned long address);
int can_lmc1_request_io(struct candevice_t *candev);
int can_lmc1_reset(struct candevice_t *candev);
+int can_lmc1_program_irq(struct candevice_t *candev);
// lpc17xx can chip specific functions:
int lpc17xx_chip_config(struct canchip_t *chip);