]> Git Repo - J-linux.git/blob - drivers/net/can/usb/peak_usb/pcan_usb_pro.h
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / drivers / net / can / usb / peak_usb / pcan_usb_pro.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * CAN driver for PEAK System PCAN-USB Pro adapter
4  * Derived from the PCAN project file driver/src/pcan_usbpro_fw.h
5  *
6  * Copyright (C) 2003-2011 PEAK System-Technik GmbH
7  * Copyright (C) 2011-2012 Stephane Grosjean <[email protected]>
8  */
9 #ifndef PCAN_USB_PRO_H
10 #define PCAN_USB_PRO_H
11
12 /*
13  * USB Vendor request data types
14  */
15 #define PCAN_USBPRO_REQ_INFO            0
16 #define PCAN_USBPRO_REQ_FCT             2
17
18 /* Vendor Request value for XXX_INFO */
19 #define PCAN_USBPRO_INFO_BL             0
20 #define PCAN_USBPRO_INFO_FW             1
21
22 /* PCAN-USB Pro (FD) Endpoints */
23 #define PCAN_USBPRO_EP_CMDOUT           1
24 #define PCAN_USBPRO_EP_CMDIN            (PCAN_USBPRO_EP_CMDOUT | USB_DIR_IN)
25 #define PCAN_USBPRO_EP_MSGOUT_0         2
26 #define PCAN_USBPRO_EP_MSGIN            (PCAN_USBPRO_EP_MSGOUT_0 | USB_DIR_IN)
27 #define PCAN_USBPRO_EP_MSGOUT_1         3
28 #define PCAN_USBPRO_EP_UNUSED           (PCAN_USBPRO_EP_MSGOUT_1 | USB_DIR_IN)
29
30 /* Vendor Request value for XXX_FCT */
31 #define PCAN_USBPRO_FCT_DRVLD           5 /* tell device driver is loaded */
32 #define PCAN_USBPRO_FCT_DRVLD_REQ_LEN   16
33
34 /* PCAN_USBPRO_INFO_BL vendor request record type */
35 struct __packed pcan_usb_pro_blinfo {
36         __le32 ctrl_type;
37         u8 version[4];
38         u8 day;
39         u8 month;
40         u8 year;
41         u8 dummy;
42         __le32 serial_num_hi;
43         __le32 serial_num_lo;
44         __le32 hw_type;
45         __le32 hw_rev;
46 };
47
48 /* PCAN_USBPRO_INFO_FW vendor request record type */
49 struct __packed pcan_usb_pro_fwinfo {
50         __le32 ctrl_type;
51         u8 version[4];
52         u8 day;
53         u8 month;
54         u8 year;
55         u8 dummy;
56         __le32 fw_type;
57 };
58
59 /*
60  * USB Command record types
61  */
62 #define PCAN_USBPRO_SETBTR      0x02
63 #define PCAN_USBPRO_SETBUSACT   0x04
64 #define PCAN_USBPRO_SETSILENT   0x05
65 #define PCAN_USBPRO_SETDEVID    0x06
66 #define PCAN_USBPRO_SETFILTR    0x0a
67 #define PCAN_USBPRO_SETTS       0x10
68 #define PCAN_USBPRO_GETDEVID    0x12
69 #define PCAN_USBPRO_SETLED      0x1C
70 #define PCAN_USBPRO_RXMSG8      0x80
71 #define PCAN_USBPRO_RXMSG4      0x81
72 #define PCAN_USBPRO_RXMSG0      0x82
73 #define PCAN_USBPRO_RXRTR       0x83
74 #define PCAN_USBPRO_RXSTATUS    0x84
75 #define PCAN_USBPRO_RXTS        0x85
76 #define PCAN_USBPRO_TXMSG8      0x41
77 #define PCAN_USBPRO_TXMSG4      0x42
78 #define PCAN_USBPRO_TXMSG0      0x43
79
80 /* record structures */
81 struct __packed pcan_usb_pro_btr {
82         u8 data_type;
83         u8 channel;
84         __le16 dummy;
85         __le32 CCBT;
86 };
87
88 struct __packed pcan_usb_pro_busact {
89         u8 data_type;
90         u8 channel;
91         __le16 onoff;
92 };
93
94 struct __packed pcan_usb_pro_silent {
95         u8 data_type;
96         u8 channel;
97         __le16 onoff;
98 };
99
100 struct __packed pcan_usb_pro_filter {
101         u8 data_type;
102         u8 dummy;
103         __le16 filter_mode;
104 };
105
106 struct __packed pcan_usb_pro_setts {
107         u8 data_type;
108         u8 dummy;
109         __le16 mode;
110 };
111
112 struct __packed pcan_usb_pro_devid {
113         u8 data_type;
114         u8 channel;
115         __le16 dummy;
116         __le32 dev_num;
117 };
118
119 #define PCAN_USBPRO_LED_DEVICE          0x00
120 #define PCAN_USBPRO_LED_BLINK_FAST      0x01
121 #define PCAN_USBPRO_LED_BLINK_SLOW      0x02
122 #define PCAN_USBPRO_LED_ON              0x03
123 #define PCAN_USBPRO_LED_OFF             0x04
124
125 struct __packed pcan_usb_pro_setled {
126         u8 data_type;
127         u8 channel;
128         __le16 mode;
129         __le32 timeout;
130 };
131
132 struct __packed pcan_usb_pro_rxmsg {
133         u8 data_type;
134         u8 client;
135         u8 flags;
136         u8 len;
137         __le32 ts32;
138         __le32 id;
139
140         u8 data[8];
141 };
142
143 #define PCAN_USBPRO_STATUS_ERROR        0x0001
144 #define PCAN_USBPRO_STATUS_BUS          0x0002
145 #define PCAN_USBPRO_STATUS_OVERRUN      0x0004
146 #define PCAN_USBPRO_STATUS_QOVERRUN     0x0008
147
148 struct __packed pcan_usb_pro_rxstatus {
149         u8 data_type;
150         u8 channel;
151         __le16 status;
152         __le32 ts32;
153         __le32 err_frm;
154 };
155
156 struct __packed pcan_usb_pro_rxts {
157         u8 data_type;
158         u8 dummy[3];
159         __le32 ts64[2];
160 };
161
162 struct __packed pcan_usb_pro_txmsg {
163         u8 data_type;
164         u8 client;
165         u8 flags;
166         u8 len;
167         __le32 id;
168         u8 data[8];
169 };
170
171 union pcan_usb_pro_rec {
172         u8                              data_type;
173         struct pcan_usb_pro_btr         btr;
174         struct pcan_usb_pro_busact      bus_act;
175         struct pcan_usb_pro_silent      silent_mode;
176         struct pcan_usb_pro_filter      filter_mode;
177         struct pcan_usb_pro_setts       ts;
178         struct pcan_usb_pro_devid       dev_id;
179         struct pcan_usb_pro_setled      set_led;
180         struct pcan_usb_pro_rxmsg       rx_msg;
181         struct pcan_usb_pro_rxstatus    rx_status;
182         struct pcan_usb_pro_rxts        rx_ts;
183         struct pcan_usb_pro_txmsg       tx_msg;
184 };
185
186 int pcan_usb_pro_probe(struct usb_interface *intf);
187 int pcan_usb_pro_send_req(struct peak_usb_device *dev, int req_id,
188                           int req_value, void *req_addr, int req_size);
189 void pcan_usb_pro_restart_complete(struct urb *urb);
190
191 #endif
This page took 0.038641 seconds and 4 git commands to generate.