summaryrefslogtreecommitdiff
path: root/include/bsp/mscan.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/bsp/mscan.h')
-rw-r--r--include/bsp/mscan.h127
1 files changed, 127 insertions, 0 deletions
diff --git a/include/bsp/mscan.h b/include/bsp/mscan.h
new file mode 100644
index 0000000000..9cb7fd44e7
--- /dev/null
+++ b/include/bsp/mscan.h
@@ -0,0 +1,127 @@
+/*===============================================================*\
+| Project: RTEMS generic MPC5200 BSP |
++-----------------------------------------------------------------+
+| Partially based on the code references which are named below. |
+| Adaptions, modifications, enhancements and any recent parts of |
+| the code are: |
+| Copyright (c) 2005 |
+| Embedded Brains GmbH |
+| Obere Lagerstr. 30 |
+| D-82178 Puchheim |
+| Germany |
+| rtems@embedded-brains.de |
++-----------------------------------------------------------------+
+| The license and distribution terms for this file may be |
+| found in the file LICENSE in this distribution or at |
+| |
+| http://www.rtems.org/license/LICENSE. |
+| |
++-----------------------------------------------------------------+
+| this file has to be included by application when using mscan |
+\*===============================================================*/
+#ifndef __MSCAN_H__
+#define __MSCAN_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MSCAN_A_DEV_NAME "/dev/mscana"
+#define MSCAN_B_DEV_NAME "/dev/mscanb"
+#define MSCAN_0_DEV_NAME "/dev/mscan0"
+#define MSCAN_1_DEV_NAME "/dev/mscan1"
+#define MSCAN_A 0
+#define MSCAN_B 1
+
+#define MSCAN_MAX_DATA_BYTES 8
+
+#define MSCAN_MESS_ID_RTR (1 << 15)
+#define MSCAN_MESS_ID_RTR_MASK (1 << 15)
+#define MSCAN_MESS_ID_ID_MASK ((1 << 11)-1)
+#define MSCAN_MESS_ID_HAS_RTR(id) (((id)&MSCAN_MESS_ID_RTR_MASK)==MSCAN_MESS_ID_RTR)
+
+#define MSCAN_SET_RX_ID 1
+#define MSCAN_GET_RX_ID 2
+#define MSCAN_SET_RX_ID_MASK 3
+#define MSCAN_GET_RX_ID_MASK 4
+#define MSCAN_SET_TX_ID 5
+#define MSCAN_GET_TX_ID 6
+#define TOUCAN_MSCAN_INIT 7
+#define MSCAN_SET_BAUDRATE 8
+#define SET_TX_BUF_NO 9
+
+struct can_message
+ {
+ /* uint16_t mess_len; */
+ uint16_t mess_id;
+ uint16_t mess_time_stamp;
+ uint8_t mess_data[MSCAN_MAX_DATA_BYTES];
+ uint8_t mess_len;
+ uint8_t mess_rtr;
+ uint32_t toucan_tx_idx;
+ };
+
+struct mscan_rx_parms
+ {
+ struct can_message *rx_mess;
+ uint32_t rx_timeout;
+ uint8_t rx_flags;
+ };
+
+struct mscan_tx_parms
+ {
+ struct can_message *tx_mess;
+ uint32_t tx_idx;
+ };
+
+struct mscan_ctrl_parms
+ {
+ uint32_t ctrl_id;
+ uint32_t ctrl_id_mask;
+ uint8_t ctrl_reg_no;
+ uint8_t ctrl_tx_buf_no;
+ uint32_t ctrl_can_bitrate;
+ void (*toucan_cb_fnc)(int16_t);
+ };
+
+
+rtems_device_driver mscan_initialize( rtems_device_major_number,
+ rtems_device_minor_number,
+ void *
+ );
+
+rtems_device_driver mscan_open( rtems_device_major_number,
+ rtems_device_minor_number,
+ void *
+ );
+
+rtems_device_driver mscan_close( rtems_device_major_number,
+ rtems_device_minor_number,
+ void *
+ );
+
+rtems_device_driver mscan_read( rtems_device_major_number,
+ rtems_device_minor_number,
+ void *
+ );
+
+rtems_device_driver mscan_write( rtems_device_major_number,
+ rtems_device_minor_number,
+ void *
+ );
+
+rtems_device_driver mscan_control( rtems_device_major_number,
+ rtems_device_minor_number,
+ void *
+ );
+
+
+#define MSCAN_DRIVER_TABLE_ENTRY \
+ { mscan_initialize, mscan_open, mscan_close, \
+ mscan_read, mscan_write, mscan_control }
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MSCAN_H__ */