summaryrefslogblamecommitdiffstats
path: root/bsps/powerpc/gen5200/include/bsp/mscan.h
blob: aa448ca8e29dfcd8ac0a29cd358a9e4b2cfc0cb0 (plain) (tree)
1
2
3
4
5
6
7
8
9

                                           






                                                                
                                                   
  



















                                                                              

   






                   

                                              

                                              


                                  
                                  
 



                                                                                    







                                  

                                  
 






                                           

                         











                              
                  






                          

                              



                                   


































                                                                                




                        
/* SPDX-License-Identifier: BSD-2-Clause */

/*
 * RTEMS generic MPC5200 BSP
 *
 * This file has to be included by application when using mscan.
 */

/*
 * Copyright (c) 2005 embedded brains GmbH & Co. KG
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#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__ */