Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions
flexcan.c File Reference
#include <linux/netdevice.h>
#include <linux/can.h>
#include <linux/can/dev.h>
#include <linux/can/error.h>
#include <linux/can/platform/flexcan.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/if_arp.h>
#include <linux/if_ether.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/platform_device.h>
#include <linux/pinctrl/consumer.h>

Go to the source code of this file.

Data Structures

struct  flexcan_mb
 
struct  flexcan_regs
 
struct  flexcan_devtype_data
 
struct  flexcan_priv
 

Macros

#define DRV_NAME   "flexcan"
 
#define FLEXCAN_NAPI_WEIGHT   (8 + 2)
 
#define FLEXCAN_MCR_MDIS   BIT(31)
 
#define FLEXCAN_MCR_FRZ   BIT(30)
 
#define FLEXCAN_MCR_FEN   BIT(29)
 
#define FLEXCAN_MCR_HALT   BIT(28)
 
#define FLEXCAN_MCR_NOT_RDY   BIT(27)
 
#define FLEXCAN_MCR_WAK_MSK   BIT(26)
 
#define FLEXCAN_MCR_SOFTRST   BIT(25)
 
#define FLEXCAN_MCR_FRZ_ACK   BIT(24)
 
#define FLEXCAN_MCR_SUPV   BIT(23)
 
#define FLEXCAN_MCR_SLF_WAK   BIT(22)
 
#define FLEXCAN_MCR_WRN_EN   BIT(21)
 
#define FLEXCAN_MCR_LPM_ACK   BIT(20)
 
#define FLEXCAN_MCR_WAK_SRC   BIT(19)
 
#define FLEXCAN_MCR_DOZE   BIT(18)
 
#define FLEXCAN_MCR_SRX_DIS   BIT(17)
 
#define FLEXCAN_MCR_BCC   BIT(16)
 
#define FLEXCAN_MCR_LPRIO_EN   BIT(13)
 
#define FLEXCAN_MCR_AEN   BIT(12)
 
#define FLEXCAN_MCR_MAXMB(x)   ((x) & 0xf)
 
#define FLEXCAN_MCR_IDAM_A   (0 << 8)
 
#define FLEXCAN_MCR_IDAM_B   (1 << 8)
 
#define FLEXCAN_MCR_IDAM_C   (2 << 8)
 
#define FLEXCAN_MCR_IDAM_D   (3 << 8)
 
#define FLEXCAN_CTRL_PRESDIV(x)   (((x) & 0xff) << 24)
 
#define FLEXCAN_CTRL_RJW(x)   (((x) & 0x03) << 22)
 
#define FLEXCAN_CTRL_PSEG1(x)   (((x) & 0x07) << 19)
 
#define FLEXCAN_CTRL_PSEG2(x)   (((x) & 0x07) << 16)
 
#define FLEXCAN_CTRL_BOFF_MSK   BIT(15)
 
#define FLEXCAN_CTRL_ERR_MSK   BIT(14)
 
#define FLEXCAN_CTRL_CLK_SRC   BIT(13)
 
#define FLEXCAN_CTRL_LPB   BIT(12)
 
#define FLEXCAN_CTRL_TWRN_MSK   BIT(11)
 
#define FLEXCAN_CTRL_RWRN_MSK   BIT(10)
 
#define FLEXCAN_CTRL_SMP   BIT(7)
 
#define FLEXCAN_CTRL_BOFF_REC   BIT(6)
 
#define FLEXCAN_CTRL_TSYN   BIT(5)
 
#define FLEXCAN_CTRL_LBUF   BIT(4)
 
#define FLEXCAN_CTRL_LOM   BIT(3)
 
#define FLEXCAN_CTRL_PROPSEG(x)   ((x) & 0x07)
 
#define FLEXCAN_CTRL_ERR_BUS   (FLEXCAN_CTRL_ERR_MSK)
 
#define FLEXCAN_CTRL_ERR_STATE
 
#define FLEXCAN_CTRL_ERR_ALL   (FLEXCAN_CTRL_ERR_BUS | FLEXCAN_CTRL_ERR_STATE)
 
#define FLEXCAN_ESR_TWRN_INT   BIT(17)
 
#define FLEXCAN_ESR_RWRN_INT   BIT(16)
 
#define FLEXCAN_ESR_BIT1_ERR   BIT(15)
 
#define FLEXCAN_ESR_BIT0_ERR   BIT(14)
 
#define FLEXCAN_ESR_ACK_ERR   BIT(13)
 
#define FLEXCAN_ESR_CRC_ERR   BIT(12)
 
#define FLEXCAN_ESR_FRM_ERR   BIT(11)
 
#define FLEXCAN_ESR_STF_ERR   BIT(10)
 
#define FLEXCAN_ESR_TX_WRN   BIT(9)
 
#define FLEXCAN_ESR_RX_WRN   BIT(8)
 
#define FLEXCAN_ESR_IDLE   BIT(7)
 
#define FLEXCAN_ESR_TXRX   BIT(6)
 
#define FLEXCAN_EST_FLT_CONF_SHIFT   (4)
 
#define FLEXCAN_ESR_FLT_CONF_MASK   (0x3 << FLEXCAN_EST_FLT_CONF_SHIFT)
 
#define FLEXCAN_ESR_FLT_CONF_ACTIVE   (0x0 << FLEXCAN_EST_FLT_CONF_SHIFT)
 
#define FLEXCAN_ESR_FLT_CONF_PASSIVE   (0x1 << FLEXCAN_EST_FLT_CONF_SHIFT)
 
#define FLEXCAN_ESR_BOFF_INT   BIT(2)
 
#define FLEXCAN_ESR_ERR_INT   BIT(1)
 
#define FLEXCAN_ESR_WAK_INT   BIT(0)
 
#define FLEXCAN_ESR_ERR_BUS
 
#define FLEXCAN_ESR_ERR_STATE   (FLEXCAN_ESR_TWRN_INT | FLEXCAN_ESR_RWRN_INT | FLEXCAN_ESR_BOFF_INT)
 
#define FLEXCAN_ESR_ERR_ALL   (FLEXCAN_ESR_ERR_BUS | FLEXCAN_ESR_ERR_STATE)
 
#define FLEXCAN_ESR_ALL_INT
 
#define FLEXCAN_TX_BUF_ID   8
 
#define FLEXCAN_IFLAG_BUF(x)   BIT(x)
 
#define FLEXCAN_IFLAG_RX_FIFO_OVERFLOW   BIT(7)
 
#define FLEXCAN_IFLAG_RX_FIFO_WARN   BIT(6)
 
#define FLEXCAN_IFLAG_RX_FIFO_AVAILABLE   BIT(5)
 
#define FLEXCAN_IFLAG_DEFAULT
 
#define FLEXCAN_MB_CNT_CODE(x)   (((x) & 0xf) << 24)
 
#define FLEXCAN_MB_CNT_SRR   BIT(22)
 
#define FLEXCAN_MB_CNT_IDE   BIT(21)
 
#define FLEXCAN_MB_CNT_RTR   BIT(20)
 
#define FLEXCAN_MB_CNT_LENGTH(x)   (((x) & 0xf) << 16)
 
#define FLEXCAN_MB_CNT_TIMESTAMP(x)   ((x) & 0xffff)
 
#define FLEXCAN_MB_CODE_MASK   (0xf0ffffff)
 
#define FLEXCAN_HAS_V10_FEATURES   BIT(1) /* For core version >= 10 */
 
#define FLEXCAN_HAS_BROKEN_ERR_STATE   BIT(2) /* [TR]WRN_INT not connected */
 
#define flexcan_suspend   NULL
 
#define flexcan_resume   NULL
 

Functions

 module_platform_driver (flexcan_driver)
 
 MODULE_AUTHOR ("Sascha Hauer <[email protected]>, ""Marc Kleine-Budde <[email protected]>")
 
 MODULE_LICENSE ("GPL v2")
 
 MODULE_DESCRIPTION ("CAN port driver for flexcan based chip")
 

Macro Definition Documentation

#define DRV_NAME   "flexcan"

Definition at line 41 of file flexcan.c.

#define FLEXCAN_CTRL_BOFF_MSK   BIT(15)

Definition at line 76 of file flexcan.c.

#define FLEXCAN_CTRL_BOFF_REC   BIT(6)

Definition at line 83 of file flexcan.c.

#define FLEXCAN_CTRL_CLK_SRC   BIT(13)

Definition at line 78 of file flexcan.c.

#define FLEXCAN_CTRL_ERR_ALL   (FLEXCAN_CTRL_ERR_BUS | FLEXCAN_CTRL_ERR_STATE)

Definition at line 92 of file flexcan.c.

#define FLEXCAN_CTRL_ERR_BUS   (FLEXCAN_CTRL_ERR_MSK)

Definition at line 88 of file flexcan.c.

#define FLEXCAN_CTRL_ERR_MSK   BIT(14)

Definition at line 77 of file flexcan.c.

#define FLEXCAN_CTRL_ERR_STATE
Value:
FLEXCAN_CTRL_BOFF_MSK)

Definition at line 89 of file flexcan.c.

#define FLEXCAN_CTRL_LBUF   BIT(4)

Definition at line 85 of file flexcan.c.

#define FLEXCAN_CTRL_LOM   BIT(3)

Definition at line 86 of file flexcan.c.

#define FLEXCAN_CTRL_LPB   BIT(12)

Definition at line 79 of file flexcan.c.

#define FLEXCAN_CTRL_PRESDIV (   x)    (((x) & 0xff) << 24)

Definition at line 72 of file flexcan.c.

#define FLEXCAN_CTRL_PROPSEG (   x)    ((x) & 0x07)

Definition at line 87 of file flexcan.c.

#define FLEXCAN_CTRL_PSEG1 (   x)    (((x) & 0x07) << 19)

Definition at line 74 of file flexcan.c.

#define FLEXCAN_CTRL_PSEG2 (   x)    (((x) & 0x07) << 16)

Definition at line 75 of file flexcan.c.

#define FLEXCAN_CTRL_RJW (   x)    (((x) & 0x03) << 22)

Definition at line 73 of file flexcan.c.

#define FLEXCAN_CTRL_RWRN_MSK   BIT(10)

Definition at line 81 of file flexcan.c.

#define FLEXCAN_CTRL_SMP   BIT(7)

Definition at line 82 of file flexcan.c.

#define FLEXCAN_CTRL_TSYN   BIT(5)

Definition at line 84 of file flexcan.c.

#define FLEXCAN_CTRL_TWRN_MSK   BIT(11)

Definition at line 80 of file flexcan.c.

#define FLEXCAN_ESR_ACK_ERR   BIT(13)

Definition at line 100 of file flexcan.c.

#define FLEXCAN_ESR_ALL_INT
Value:

Definition at line 123 of file flexcan.c.

#define FLEXCAN_ESR_BIT0_ERR   BIT(14)

Definition at line 99 of file flexcan.c.

#define FLEXCAN_ESR_BIT1_ERR   BIT(15)

Definition at line 98 of file flexcan.c.

#define FLEXCAN_ESR_BOFF_INT   BIT(2)

Definition at line 112 of file flexcan.c.

#define FLEXCAN_ESR_CRC_ERR   BIT(12)

Definition at line 101 of file flexcan.c.

#define FLEXCAN_ESR_ERR_ALL   (FLEXCAN_ESR_ERR_BUS | FLEXCAN_ESR_ERR_STATE)

Definition at line 121 of file flexcan.c.

#define FLEXCAN_ESR_ERR_BUS
Value:
FLEXCAN_ESR_ACK_ERR | FLEXCAN_ESR_CRC_ERR | \
FLEXCAN_ESR_FRM_ERR | FLEXCAN_ESR_STF_ERR)

Definition at line 115 of file flexcan.c.

#define FLEXCAN_ESR_ERR_INT   BIT(1)

Definition at line 113 of file flexcan.c.

#define FLEXCAN_ESR_ERR_STATE   (FLEXCAN_ESR_TWRN_INT | FLEXCAN_ESR_RWRN_INT | FLEXCAN_ESR_BOFF_INT)

Definition at line 119 of file flexcan.c.

#define FLEXCAN_ESR_FLT_CONF_ACTIVE   (0x0 << FLEXCAN_EST_FLT_CONF_SHIFT)

Definition at line 110 of file flexcan.c.

#define FLEXCAN_ESR_FLT_CONF_MASK   (0x3 << FLEXCAN_EST_FLT_CONF_SHIFT)

Definition at line 109 of file flexcan.c.

#define FLEXCAN_ESR_FLT_CONF_PASSIVE   (0x1 << FLEXCAN_EST_FLT_CONF_SHIFT)

Definition at line 111 of file flexcan.c.

#define FLEXCAN_ESR_FRM_ERR   BIT(11)

Definition at line 102 of file flexcan.c.

#define FLEXCAN_ESR_IDLE   BIT(7)

Definition at line 106 of file flexcan.c.

#define FLEXCAN_ESR_RWRN_INT   BIT(16)

Definition at line 97 of file flexcan.c.

#define FLEXCAN_ESR_RX_WRN   BIT(8)

Definition at line 105 of file flexcan.c.

#define FLEXCAN_ESR_STF_ERR   BIT(10)

Definition at line 103 of file flexcan.c.

#define FLEXCAN_ESR_TWRN_INT   BIT(17)

Definition at line 96 of file flexcan.c.

#define FLEXCAN_ESR_TX_WRN   BIT(9)

Definition at line 104 of file flexcan.c.

#define FLEXCAN_ESR_TXRX   BIT(6)

Definition at line 107 of file flexcan.c.

#define FLEXCAN_ESR_WAK_INT   BIT(0)

Definition at line 114 of file flexcan.c.

#define FLEXCAN_EST_FLT_CONF_SHIFT   (4)

Definition at line 108 of file flexcan.c.

#define FLEXCAN_HAS_BROKEN_ERR_STATE   BIT(2) /* [TR]WRN_INT not connected */

Definition at line 162 of file flexcan.c.

#define FLEXCAN_HAS_V10_FEATURES   BIT(1) /* For core version >= 10 */

Definition at line 161 of file flexcan.c.

#define FLEXCAN_IFLAG_BUF (   x)    BIT(x)

Definition at line 129 of file flexcan.c.

#define FLEXCAN_IFLAG_DEFAULT
Value:

Definition at line 133 of file flexcan.c.

#define FLEXCAN_IFLAG_RX_FIFO_AVAILABLE   BIT(5)

Definition at line 132 of file flexcan.c.

#define FLEXCAN_IFLAG_RX_FIFO_OVERFLOW   BIT(7)

Definition at line 130 of file flexcan.c.

#define FLEXCAN_IFLAG_RX_FIFO_WARN   BIT(6)

Definition at line 131 of file flexcan.c.

#define FLEXCAN_MB_CNT_CODE (   x)    (((x) & 0xf) << 24)

Definition at line 138 of file flexcan.c.

#define FLEXCAN_MB_CNT_IDE   BIT(21)

Definition at line 140 of file flexcan.c.

#define FLEXCAN_MB_CNT_LENGTH (   x)    (((x) & 0xf) << 16)

Definition at line 142 of file flexcan.c.

#define FLEXCAN_MB_CNT_RTR   BIT(20)

Definition at line 141 of file flexcan.c.

#define FLEXCAN_MB_CNT_SRR   BIT(22)

Definition at line 139 of file flexcan.c.

#define FLEXCAN_MB_CNT_TIMESTAMP (   x)    ((x) & 0xffff)

Definition at line 143 of file flexcan.c.

#define FLEXCAN_MB_CODE_MASK   (0xf0ffffff)

Definition at line 145 of file flexcan.c.

#define FLEXCAN_MCR_AEN   BIT(12)

Definition at line 64 of file flexcan.c.

#define FLEXCAN_MCR_BCC   BIT(16)

Definition at line 62 of file flexcan.c.

#define FLEXCAN_MCR_DOZE   BIT(18)

Definition at line 60 of file flexcan.c.

#define FLEXCAN_MCR_FEN   BIT(29)

Definition at line 49 of file flexcan.c.

#define FLEXCAN_MCR_FRZ   BIT(30)

Definition at line 48 of file flexcan.c.

#define FLEXCAN_MCR_FRZ_ACK   BIT(24)

Definition at line 54 of file flexcan.c.

#define FLEXCAN_MCR_HALT   BIT(28)

Definition at line 50 of file flexcan.c.

#define FLEXCAN_MCR_IDAM_A   (0 << 8)

Definition at line 66 of file flexcan.c.

#define FLEXCAN_MCR_IDAM_B   (1 << 8)

Definition at line 67 of file flexcan.c.

#define FLEXCAN_MCR_IDAM_C   (2 << 8)

Definition at line 68 of file flexcan.c.

#define FLEXCAN_MCR_IDAM_D   (3 << 8)

Definition at line 69 of file flexcan.c.

#define FLEXCAN_MCR_LPM_ACK   BIT(20)

Definition at line 58 of file flexcan.c.

#define FLEXCAN_MCR_LPRIO_EN   BIT(13)

Definition at line 63 of file flexcan.c.

#define FLEXCAN_MCR_MAXMB (   x)    ((x) & 0xf)

Definition at line 65 of file flexcan.c.

#define FLEXCAN_MCR_MDIS   BIT(31)

Definition at line 47 of file flexcan.c.

#define FLEXCAN_MCR_NOT_RDY   BIT(27)

Definition at line 51 of file flexcan.c.

#define FLEXCAN_MCR_SLF_WAK   BIT(22)

Definition at line 56 of file flexcan.c.

#define FLEXCAN_MCR_SOFTRST   BIT(25)

Definition at line 53 of file flexcan.c.

#define FLEXCAN_MCR_SRX_DIS   BIT(17)

Definition at line 61 of file flexcan.c.

#define FLEXCAN_MCR_SUPV   BIT(23)

Definition at line 55 of file flexcan.c.

#define FLEXCAN_MCR_WAK_MSK   BIT(26)

Definition at line 52 of file flexcan.c.

#define FLEXCAN_MCR_WAK_SRC   BIT(19)

Definition at line 59 of file flexcan.c.

#define FLEXCAN_MCR_WRN_EN   BIT(21)

Definition at line 57 of file flexcan.c.

#define FLEXCAN_NAPI_WEIGHT   (8 + 2)

Definition at line 44 of file flexcan.c.

#define flexcan_resume   NULL

Definition at line 1161 of file flexcan.c.

#define flexcan_suspend   NULL

Definition at line 1160 of file flexcan.c.

#define FLEXCAN_TX_BUF_ID   8

Definition at line 128 of file flexcan.c.

Function Documentation

MODULE_AUTHOR ( "Sascha Hauer <[email protected] ,
""Marc Kleine-Budde< kernel @pengutronix.de >"   
)
MODULE_DESCRIPTION ( "CAN port driver for flexcan based chip )
MODULE_LICENSE ( "GPL v2 )
module_platform_driver ( flexcan_driver  )