| Wolfgang Grandegger | 39549ee | 2009-05-15 23:39:29 +0000 | [diff] [blame] | 1 | /* | 
|  | 2 | * linux/can/dev.h | 
|  | 3 | * | 
|  | 4 | * Definitions for the CAN network device driver interface | 
|  | 5 | * | 
|  | 6 | * Copyright (C) 2006 Andrey Volkov <avolkov@varma-el.com> | 
|  | 7 | *               Varma Electronics Oy | 
|  | 8 | * | 
|  | 9 | * Copyright (C) 2008 Wolfgang Grandegger <wg@grandegger.com> | 
|  | 10 | * | 
|  | 11 | * Send feedback to <socketcan-users@lists.berlios.de> | 
|  | 12 | */ | 
|  | 13 |  | 
|  | 14 | #ifndef CAN_DEV_H | 
|  | 15 | #define CAN_DEV_H | 
|  | 16 |  | 
|  | 17 | #include <linux/can/netlink.h> | 
|  | 18 | #include <linux/can/error.h> | 
|  | 19 |  | 
|  | 20 | /* | 
|  | 21 | * CAN mode | 
|  | 22 | */ | 
|  | 23 | enum can_mode { | 
|  | 24 | CAN_MODE_STOP = 0, | 
|  | 25 | CAN_MODE_START, | 
|  | 26 | CAN_MODE_SLEEP | 
|  | 27 | }; | 
|  | 28 |  | 
|  | 29 | /* | 
|  | 30 | * CAN common private data | 
|  | 31 | */ | 
| Wolfgang Grandegger | 39549ee | 2009-05-15 23:39:29 +0000 | [diff] [blame] | 32 | struct can_priv { | 
|  | 33 | struct can_device_stats can_stats; | 
|  | 34 |  | 
|  | 35 | struct can_bittiming bittiming; | 
|  | 36 | struct can_bittiming_const *bittiming_const; | 
|  | 37 | struct can_clock clock; | 
|  | 38 |  | 
|  | 39 | enum can_state state; | 
|  | 40 | u32 ctrlmode; | 
|  | 41 |  | 
|  | 42 | int restart_ms; | 
|  | 43 | struct timer_list restart_timer; | 
|  | 44 |  | 
| Wolfgang Grandegger | 39549ee | 2009-05-15 23:39:29 +0000 | [diff] [blame] | 45 | int (*do_set_bittiming)(struct net_device *dev); | 
|  | 46 | int (*do_set_mode)(struct net_device *dev, enum can_mode mode); | 
|  | 47 | int (*do_get_state)(const struct net_device *dev, | 
|  | 48 | enum can_state *state); | 
| Wolfgang Grandegger | a6e4bc5 | 2009-10-08 22:17:11 +0000 | [diff] [blame] | 49 |  | 
|  | 50 | unsigned int echo_skb_max; | 
|  | 51 | struct sk_buff **echo_skb; | 
| Wolfgang Grandegger | 39549ee | 2009-05-15 23:39:29 +0000 | [diff] [blame] | 52 | }; | 
|  | 53 |  | 
| Wolfgang Grandegger | a6e4bc5 | 2009-10-08 22:17:11 +0000 | [diff] [blame] | 54 | struct net_device *alloc_candev(int sizeof_priv, unsigned int echo_skb_max); | 
| Wolfgang Grandegger | 39549ee | 2009-05-15 23:39:29 +0000 | [diff] [blame] | 55 | void free_candev(struct net_device *dev); | 
|  | 56 |  | 
|  | 57 | int open_candev(struct net_device *dev); | 
|  | 58 | void close_candev(struct net_device *dev); | 
|  | 59 |  | 
|  | 60 | int register_candev(struct net_device *dev); | 
|  | 61 | void unregister_candev(struct net_device *dev); | 
|  | 62 |  | 
|  | 63 | int can_restart_now(struct net_device *dev); | 
|  | 64 | void can_bus_off(struct net_device *dev); | 
|  | 65 |  | 
| Wolfgang Grandegger | a6e4bc5 | 2009-10-08 22:17:11 +0000 | [diff] [blame] | 66 | void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev, | 
|  | 67 | unsigned int idx); | 
|  | 68 | void can_get_echo_skb(struct net_device *dev, unsigned int idx); | 
|  | 69 | void can_free_echo_skb(struct net_device *dev, unsigned int idx); | 
| Wolfgang Grandegger | 39549ee | 2009-05-15 23:39:29 +0000 | [diff] [blame] | 70 |  | 
| Wolfgang Grandegger | 7b6856a | 2009-10-20 00:08:01 -0700 | [diff] [blame^] | 71 | struct sk_buff *alloc_can_skb(struct net_device *dev, struct can_frame **cf); | 
|  | 72 | struct sk_buff *alloc_can_err_skb(struct net_device *dev, | 
|  | 73 | struct can_frame **cf); | 
|  | 74 |  | 
| Wolfgang Grandegger | 39549ee | 2009-05-15 23:39:29 +0000 | [diff] [blame] | 75 | #endif /* CAN_DEV_H */ |