2 * CAN bus driver for Bosch C_CAN controller
4 * Copyright (C) 2010 ST Microelectronics
5 * Bhupesh Sharma <bhupesh.sharma@st.com>
7 * Borrowed heavily from the C_CAN driver originally written by:
9 * - Sascha Hauer, Marc Kleine-Budde, Pengutronix <s.hauer@pengutronix.de>
10 * - Simon Kallweit, intefo AG <simon.kallweit@intefo.ch>
12 * Bosch C_CAN controller is compliant to CAN protocol version 2.0 part A and B.
13 * Bosch C_CAN user manual can be obtained from:
14 * http://www.semiconductors.bosch.de/media/en/pdf/ipmodules_1/c_can/
15 * users_manual_c_can.pdf
17 * This file is licensed under the terms of the GNU General Public
18 * License version 2. This program is licensed "as is" without any
19 * warranty of any kind, whether express or implied.
25 /* c_can IF registers */
26 struct c_can_if_regs
{
38 /* c_can hardware registers */
48 struct c_can_if_regs ifregs
[2]; /* [0] = IF1 and [1] = IF2 */
64 /* c_can private data structure */
66 struct can_priv can
; /* must be the first member */
67 struct napi_struct napi
;
68 struct net_device
*dev
;
72 u16 (*read_reg
) (struct c_can_priv
*priv
, void *reg
);
73 void (*write_reg
) (struct c_can_priv
*priv
, void *reg
, u16 val
);
74 struct c_can_regs __iomem
*regs
;
75 unsigned long irq_flags
; /* for request_irq() */
78 void *priv
; /* for board-specific data */
81 struct net_device
*alloc_c_can_dev(void);
82 void free_c_can_dev(struct net_device
*dev
);
83 int register_c_can_dev(struct net_device
*dev
);
84 void unregister_c_can_dev(struct net_device
*dev
);