* drivers/can/ctucanfd.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __DRIVERS_CAN_CTUCANFD_H
#define __DRIVERS_CAN_CTUCANFD_H
* Pre-processor Definitions
****************************************************************************/
#define CTUCANFD_CTRL (0x000)
#define CTUCANFD_TXT1 (0x100)
#define CTUCANFD_TXT2 (0x200)
#define CTUCANFD_TXT3 (0x300)
#define CTUCANFD_TXT4 (0x400)
#define CTUCANFD_TXT5 (0x500)
#define CTUCANFD_TXT6 (0x600)
#define CTUCANFD_TXT7 (0x700)
#define CTUCANFD_TXT8 (0x800)
#define CTUCANFD_TXT_SIZE (0x100)
#define CTUCANFD_VERID (0x00)
#define CTUCANFD_SET_MODE (0x04)
#define CTUCANFD_STATUS (0x08)
#define CTUCANFD_CMD (0x0c)
#define CTUCANFD_INTSTAT (0x10)
#define CTUCANFD_INTENSET (0x14)
#define CTUCANFD_INTENCLR (0x18)
#define CTUCANFD_INTMASKSET (0x1c)
#define CTUCANFD_INTMASKCLR (0x20)
#define CTUCANFD_BTR (0x24)
#define CTUCANFD_BTRFD (0x28)
#define CTUCANFD_FAULT (0x2c)
#define CTUCANFD_ERRCNT (0x30)
#define CTUCANFD_ERR (0x34)
#define CTUCANFD_CTRPRES (0x38)
#define CTUCANFD_FLTR_A_MSK (0x3c)
#define CTUCANFD_FLTR_A_VAL (0x40)
#define CTUCANFD_FLTR_B_MSK (0x44)
#define CTUCANFD_FLTR_B_VAL (0x48)
#define CTUCANFD_FLTR_C_MSK (0x4c)
#define CTUCANFD_FLTR_C_VAL (0x50)
#define CTUCANFD_FLTR_RAN_L (0x54)
#define CTUCANFD_FLTR_RAN_H (0x58)
#define CTUCANFD_FLTR (0x5c)
#define CTUCANFD_RXMEMINFO (0x60)
#define CTUCANFD_RXPOINTERS (0x64)
#define CTUCANFD_RXSETSTAT (0x68)
#define CTUCANFD_RXDATA (0x6c)
#define CTUCANFD_TXSTAT (0x70)
#define CTUCANFD_TXINFOCMD (0x74)
#define CTUCANFD_TXPRIO (0x78)
#define CTUCANFD_MISC (0x7c)
#define CTUCANFD_SSP (0x80)
#define CTUCANFD_RXFRCTR (0x84)
#define CTUCANFD_TXFRCTR (0x88)
#define CTUCANFD_DEBUG (0x8c)
#define CTUCANFD_YOLO (0x90)
#define CTUCANFD_TS_L (0x94)
#define CTUCANFD_TS_H (0x98)
#define CTUCANFD_MODE_RST (1 << 0)
#define CTUCANFD_MODE_BMM (1 << 1)
#define CTUCANFD_MODE_STM (1 << 2)
#define CTUCANFD_MODE_AFM (1 << 3)
#define CTUCANFD_MODE_FDE (1 << 4)
#define CTUCANFD_MODE_TTTM (1 << 5)
#define CTUCANFD_MODE_ROM (1 << 6)
#define CTUCANFD_MODE_ACF (1 << 7)
#define CTUCANFD_MODE_TSTM (1 << 8)
#define CTUCANFD_MODE_RXBAM (1 << 9)
#define CTUCANFD_MODE_TXBBM (1 << 10)
#define CTUCANFD_MODE_SAM (1 << 11)
#define CTUCANFD_MODE_ERFM (1 << 12)
#define CTUCANFD_SET_SHFIT (16)
#define CTUCANFD_SET_RTRLE (1 << 0)
#define CTUCANFD_SET_RTRTH_SHIFT (1)
#define CTUCANFD_SET_ILBP (1 << 5)
#define CTUCANFD_SET_ENA (1 << 6)
#define CTUCANFD_SET_NISOFD (1 << 7)
#define CTUCANFD_SET_PEX (1 << 8)
#define CTUCANFD_SET_TBFBO (1 << 9)
#define CTUCANFD_SET_FDRF (1 << 10)
#define CTUCANFD_SET_PCHKE (1 << 11)
#define CTUCANFD_CMD_RXRPMV (1 << 1)
#define CTUCANFD_CMD_RRB (1 << 2)
#define CTUCANFD_CMD_CDO (1 << 3)
#define CTUCANFD_CMD_ERCRST (1 << 4)
#define CTUCANFD_CMD_RXFCRST (1 << 5)
#define CTUCANFD_CMD_TXFCRST (1 << 6)
#define CTUCANFD_CMD_CPEXS (1 << 7)
#define CTUCANFD_CMD_CRXPE (1 << 8)
#define CTUCANFD_CMD_CTXPE (1 << 9)
#define CTUCANFD_CMD_CTXDPE (1 << 10)
#define CTUCANFD_INT_RXI (1 << 0)
#define CTUCANFD_INT_TXI (1 << 1)
#define CTUCANFD_INT_EWLI (1 << 2)
#define CTUCANFD_INT_DOI (1 << 3)
#define CTUCANFD_INT_FCSI (1 << 4)
#define CTUCANFD_INT_ALI (1 << 5)
#define CTUCANFD_INT_BEI (1 << 6)
#define CTUCANFD_INT_OFI (1 << 7)
#define CTUCANFD_INT_RXFI (1 << 8)
#define CTUCANFD_INT_BSI (1 << 9)
#define CTUCANFD_INT_RBNEI (1 << 10)
#define CTUCANFD_INT_TXBHCI (1 << 11)
#define CTUCANFD_RXSTAT_RXE (1 << 0)
#define CTUCANFD_RXSTAT_RXF (1 << 1)
#define CTUCANFD_RXSTAT_RXMOF (1 << 2)
#define CTUCANFD_RXSTAT_RXFRC_SHIFT (4)
#define CTUCANFD_RXSTAT_RXFRC_MASK (0x7ff << CTUCANFD_RXSTAT_RXFRC_SHIFT)
#define CTUCANFD_TXSTAT_SHIFT (4)
#define CTUCANFD_TXSTAT_MASK (0xf)
#define CTUCANFD_TXSTAT_GET(val, i) (((val) >> (CTUCANFD_TXSTAT_SHIFT * (i))) & \
CTUCANFD_TXSTAT_MASK)
#define CTUCANFD_TXSTAT_NOTEXIST (0)
#define CTUCANFD_TXSTAT_RDY (1)
#define CTUCANFD_TXSTAT_TRAN (2)
#define CTUCANFD_TXSTAT_ABTP (3)
#define CTUCANFD_TXSTAT_TOK (4)
#define CTUCANFD_TXSTAT_ERR (6)
#define CTUCANFD_TXSTAT_ABT (7)
#define CTUCANFD_TXSTAT_ETY (8)
#define CTUCANFD_TXSTAT_PER (9)
#define CTUCANFD_TXCMD_TXCE (1 << 0)
#define CTUCANFD_TXCMD_TXCR (1 << 1)
#define CTUCANFD_TXCMD_TXCA (1 << 2)
#define CTUCANFD_TXCMD_TXB_SHIFT (8)
#define CTUCANFD_TXCMD_TXB1 (1 << 8)
#define CTUCANFD_TXCMD_TXB2 (1 << 9)
#define CTUCANFD_TXCMD_TXB3 (1 << 10)
#define CTUCANFD_TXCMD_TXB4 (1 << 11)
#define CTUCANFD_TXCMD_TXB5 (1 << 12)
#define CTUCANFD_TXCMD_TXB6 (1 << 13)
#define CTUCANFD_TXCMD_TXB7 (1 << 14)
#define CTUCANFD_TXCMD_TXB8 (1 << 15)
#define CTUCANFD_TXPRIO_SHIFT (4)
#define CTUCANFD_TXBUF_FMT (0x00)
#define CTUCANFD_TXBUF_ID (0x04)
#define CTUCANFD_TXBUF_TSL (0x08)
#define CTUCANFD_TXBUF_TSU (0x0c)
#define CTUCANFD_TXBUF_DATA (0x10)
#define CTUCANFD_TXBUF_TEST (0x05)
* Public Types
****************************************************************************/
begin_packed_struct struct ctucanfd_frame_fmt_s
{
uint32_t dlc:4;
uint32_t erf:1;
uint32_t rtr:1;
uint32_t ide:1;
uint32_t fdf:1;
uint32_t lbpf:1;
uint32_t brs:1;
uint32_t esi_rsv:1;
uint32_t rwcnt:5;
uint32_t erf_pos:4;
uint32_t erf_erp:1;
uint32_t erf_type:3;
uint32_t ivld:1;
uint32_t lbtbi:3;
uint32_t _reserved:4;
} end_packed_struct;
union ctucanfd_frame_fmt_u
{
struct ctucanfd_frame_fmt_s s;
uint32_t u32;
};
begin_packed_struct struct ctucanfd_frame_id_s
{
uint32_t id_ext:18;
uint32_t id:11;
uint32_t _res:3;
} end_packed_struct;
union ctucanfd_frame_id_u
{
struct ctucanfd_frame_id_s s;
uint32_t u32;
};
begin_packed_struct struct ctucanfd_frame_tst_s
{
uint32_t fstc:1;
uint32_t fcrc:1;
uint32_t sdlc:1;
uint32_t _res1:4;
uint32_t tprm:4;
uint32_t _res2:3;
} end_packed_struct;
begin_packed_struct struct ctucanfd_frame_s
{
struct ctucanfd_frame_fmt_s fmt;
struct ctucanfd_frame_id_s id;
uint64_t timestamp;
uint8_t data[64];
uint32_t test;
} end_packed_struct;
#endif