3
3
* CAN driver for esd electronics gmbh CAN-USB/2 and CAN-USB/Micro
4
4
*
5
5
* Copyright (C) 2010-2012 esd electronic system design gmbh, Matthias Fuchs <[email protected] >
6
- * Copyright (C) 2022 esd electronics gmbh, Frank Jungclaus <[email protected] >
6
+ * Copyright (C) 2022-2023 esd electronics gmbh, Frank Jungclaus <[email protected] >
7
7
*/
8
- #include <linux/ethtool.h>
9
- #include <linux/signal.h>
10
- #include <linux/slab.h>
11
- #include <linux/module.h>
12
- #include <linux/netdevice.h>
13
- #include <linux/usb.h>
14
8
15
9
#include <linux/can.h>
16
10
#include <linux/can/dev.h>
17
11
#include <linux/can/error.h>
12
+ #include <linux/ethtool.h>
13
+ #include <linux/module.h>
14
+ #include <linux/netdevice.h>
15
+ #include <linux/signal.h>
16
+ #include <linux/slab.h>
17
+ #include <linux/units.h>
18
+ #include <linux/usb.h>
18
19
19
20
MODULE_AUTHOR (
"Matthias Fuchs <[email protected] >" );
20
21
MODULE_AUTHOR (
"Frank Jungclaus <[email protected] >" );
@@ -27,8 +28,8 @@ MODULE_LICENSE("GPL v2");
27
28
#define USB_CANUSBM_PRODUCT_ID 0x0011
28
29
29
30
/* CAN controller clock frequencies */
30
- #define ESD_USB2_CAN_CLOCK 60000000
31
- #define ESD_USBM_CAN_CLOCK 36000000
31
+ #define ESD_USB2_CAN_CLOCK (60 * MEGA) /* Hz */
32
+ #define ESD_USBM_CAN_CLOCK (36 * MEGA) /* Hz */
32
33
33
34
/* Maximum number of CAN nets */
34
35
#define ESD_USB_MAX_NETS 2
@@ -42,20 +43,21 @@ MODULE_LICENSE("GPL v2");
42
43
#define CMD_IDADD 6 /* also used for IDADD_REPLY */
43
44
44
45
/* esd CAN message flags - dlc field */
45
- #define ESD_RTR 0x10
46
+ #define ESD_RTR BIT(4)
47
+
46
48
47
49
/* esd CAN message flags - id field */
48
- #define ESD_EXTID 0x20000000
49
- #define ESD_EVENT 0x40000000
50
- #define ESD_IDMASK 0x1fffffff
50
+ #define ESD_EXTID BIT(29)
51
+ #define ESD_EVENT BIT(30)
52
+ #define ESD_IDMASK GENMASK(28, 0)
51
53
52
54
/* esd CAN event ids */
53
55
#define ESD_EV_CAN_ERROR_EXT 2 /* CAN controller specific diagnostic data */
54
56
55
57
/* baudrate message flags */
56
- #define ESD_USB_UBR 0x80000000
57
- #define ESD_USB_LOM 0x40000000
58
- #define ESD_USB_NO_BAUDRATE 0x7fffffff
58
+ #define ESD_USB_LOM BIT(30) /* Listen Only Mode */
59
+ #define ESD_USB_UBR BIT(31) /* User Bit Rate (controller BTR) in bits 0..27 */
60
+ #define ESD_USB_NO_BAUDRATE GENMASK(30, 0) /* bit rate unconfigured */
59
61
60
62
/* bit timing CAN-USB/2 */
61
63
#define ESD_USB2_TSEG1_MIN 1
@@ -70,7 +72,7 @@ MODULE_LICENSE("GPL v2");
70
72
#define ESD_USB2_BRP_MIN 1
71
73
#define ESD_USB2_BRP_MAX 1024
72
74
#define ESD_USB2_BRP_INC 1
73
- #define ESD_USB2_3_SAMPLES 0x00800000
75
+ #define ESD_USB2_3_SAMPLES BIT(23)
74
76
75
77
/* esd IDADD message */
76
78
#define ESD_ID_ENABLE 0x80
@@ -128,7 +130,7 @@ struct rx_msg {
128
130
__le32 ts ;
129
131
__le32 id ; /* upper 3 bits contain flags */
130
132
union {
131
- u8 data [8 ];
133
+ u8 data [CAN_MAX_DLEN ];
132
134
struct {
133
135
u8 status ; /* CAN Controller Status */
134
136
u8 ecc ; /* Error Capture Register */
@@ -145,7 +147,7 @@ struct tx_msg {
145
147
u8 dlc ;
146
148
u32 hnd ; /* opaque handle, not used by device */
147
149
__le32 id ; /* upper 3 bits contain flags */
148
- u8 data [8 ];
150
+ u8 data [CAN_MAX_DLEN ];
149
151
};
150
152
151
153
struct tx_done_msg {
0 commit comments