Commit | Line | Data |
---|---|---|
39549eef WG |
1 | /* |
2 | * linux/can/netlink.h | |
3 | * | |
4 | * Definitions for the CAN netlink interface | |
5 | * | |
6 | * Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com> | |
7 | * | |
1c2da13c UKK |
8 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the version 2 of the GNU General Public License | |
10 | * as published by the Free Software Foundation | |
11 | * | |
12 | * This program is distributed in the hope that it will be useful, | |
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | * GNU General Public License for more details. | |
39549eef WG |
16 | */ |
17 | ||
18 | #ifndef CAN_NETLINK_H | |
19 | #define CAN_NETLINK_H | |
20 | ||
21 | #include <linux/types.h> | |
22 | ||
23 | /* | |
24 | * CAN bit-timing parameters | |
25 | * | |
25985edc | 26 | * For further information, please read chapter "8 BIT TIMING |
39549eef WG |
27 | * REQUIREMENTS" of the "Bosch CAN Specification version 2.0" |
28 | * at http://www.semiconductors.bosch.de/pdf/can2spec.pdf. | |
29 | */ | |
30 | struct can_bittiming { | |
31 | __u32 bitrate; /* Bit-rate in bits/second */ | |
32 | __u32 sample_point; /* Sample point in one-tenth of a percent */ | |
33 | __u32 tq; /* Time quanta (TQ) in nanoseconds */ | |
34 | __u32 prop_seg; /* Propagation segment in TQs */ | |
35 | __u32 phase_seg1; /* Phase buffer segment 1 in TQs */ | |
36 | __u32 phase_seg2; /* Phase buffer segment 2 in TQs */ | |
37 | __u32 sjw; /* Synchronisation jump width in TQs */ | |
38 | __u32 brp; /* Bit-rate prescaler */ | |
39 | }; | |
40 | ||
41 | /* | |
42 | * CAN harware-dependent bit-timing constant | |
43 | * | |
44 | * Used for calculating and checking bit-timing parameters | |
45 | */ | |
46 | struct can_bittiming_const { | |
47 | char name[16]; /* Name of the CAN controller hardware */ | |
48 | __u32 tseg1_min; /* Time segement 1 = prop_seg + phase_seg1 */ | |
49 | __u32 tseg1_max; | |
50 | __u32 tseg2_min; /* Time segement 2 = phase_seg2 */ | |
51 | __u32 tseg2_max; | |
52 | __u32 sjw_max; /* Synchronisation jump width */ | |
53 | __u32 brp_min; /* Bit-rate prescaler */ | |
54 | __u32 brp_max; | |
55 | __u32 brp_inc; | |
56 | }; | |
57 | ||
58 | /* | |
59 | * CAN clock parameters | |
60 | */ | |
61 | struct can_clock { | |
62 | __u32 freq; /* CAN system clock frequency in Hz */ | |
63 | }; | |
64 | ||
65 | /* | |
66 | * CAN operational and error states | |
67 | */ | |
68 | enum can_state { | |
69 | CAN_STATE_ERROR_ACTIVE = 0, /* RX/TX error count < 96 */ | |
70 | CAN_STATE_ERROR_WARNING, /* RX/TX error count < 128 */ | |
71 | CAN_STATE_ERROR_PASSIVE, /* RX/TX error count < 256 */ | |
72 | CAN_STATE_BUS_OFF, /* RX/TX error count >= 256 */ | |
73 | CAN_STATE_STOPPED, /* Device is stopped */ | |
74 | CAN_STATE_SLEEPING, /* Device is sleeping */ | |
75 | CAN_STATE_MAX | |
76 | }; | |
77 | ||
52c793f2 WG |
78 | /* |
79 | * CAN bus error counters | |
80 | */ | |
81 | struct can_berr_counter { | |
82 | __u16 txerr; | |
83 | __u16 rxerr; | |
84 | }; | |
85 | ||
39549eef WG |
86 | /* |
87 | * CAN controller mode | |
88 | */ | |
89 | struct can_ctrlmode { | |
90 | __u32 mask; | |
91 | __u32 flags; | |
92 | }; | |
93 | ||
52c793f2 WG |
94 | #define CAN_CTRLMODE_LOOPBACK 0x01 /* Loopback mode */ |
95 | #define CAN_CTRLMODE_LISTENONLY 0x02 /* Listen-only mode */ | |
96 | #define CAN_CTRLMODE_3_SAMPLES 0x04 /* Triple sampling mode */ | |
97 | #define CAN_CTRLMODE_ONE_SHOT 0x08 /* One-Shot mode */ | |
98 | #define CAN_CTRLMODE_BERR_REPORTING 0x10 /* Bus-error reporting */ | |
bc05a894 | 99 | #define CAN_CTRLMODE_FD 0x20 /* CAN FD mode */ |
39549eef WG |
100 | |
101 | /* | |
102 | * CAN device statistics | |
103 | */ | |
104 | struct can_device_stats { | |
105 | __u32 bus_error; /* Bus errors */ | |
106 | __u32 error_warning; /* Changes to error warning state */ | |
107 | __u32 error_passive; /* Changes to error passive state */ | |
108 | __u32 bus_off; /* Changes to bus off state */ | |
109 | __u32 arbitration_lost; /* Arbitration lost errors */ | |
110 | __u32 restarts; /* CAN controller re-starts */ | |
111 | }; | |
112 | ||
113 | /* | |
114 | * CAN netlink interface | |
115 | */ | |
116 | enum { | |
117 | IFLA_CAN_UNSPEC, | |
118 | IFLA_CAN_BITTIMING, | |
119 | IFLA_CAN_BITTIMING_CONST, | |
120 | IFLA_CAN_CLOCK, | |
121 | IFLA_CAN_STATE, | |
122 | IFLA_CAN_CTRLMODE, | |
123 | IFLA_CAN_RESTART_MS, | |
124 | IFLA_CAN_RESTART, | |
52c793f2 | 125 | IFLA_CAN_BERR_COUNTER, |
9859ccd2 OH |
126 | IFLA_CAN_DATA_BITTIMING, |
127 | IFLA_CAN_DATA_BITTIMING_CONST, | |
39549eef WG |
128 | __IFLA_CAN_MAX |
129 | }; | |
130 | ||
131 | #define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1) | |
132 | ||
133 | #endif /* CAN_NETLINK_H */ |