xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/can.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _UAPI_CAN_H
8*8d67ca89SAndroid Build Coastguard Worker #define _UAPI_CAN_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #include <linux/socket.h>
11*8d67ca89SAndroid Build Coastguard Worker #include <linux/stddef.h>
12*8d67ca89SAndroid Build Coastguard Worker #define CAN_EFF_FLAG 0x80000000U
13*8d67ca89SAndroid Build Coastguard Worker #define CAN_RTR_FLAG 0x40000000U
14*8d67ca89SAndroid Build Coastguard Worker #define CAN_ERR_FLAG 0x20000000U
15*8d67ca89SAndroid Build Coastguard Worker #define CAN_SFF_MASK 0x000007FFU
16*8d67ca89SAndroid Build Coastguard Worker #define CAN_EFF_MASK 0x1FFFFFFFU
17*8d67ca89SAndroid Build Coastguard Worker #define CAN_ERR_MASK 0x1FFFFFFFU
18*8d67ca89SAndroid Build Coastguard Worker #define CANXL_PRIO_MASK CAN_SFF_MASK
19*8d67ca89SAndroid Build Coastguard Worker typedef __u32 canid_t;
20*8d67ca89SAndroid Build Coastguard Worker #define CAN_SFF_ID_BITS 11
21*8d67ca89SAndroid Build Coastguard Worker #define CAN_EFF_ID_BITS 29
22*8d67ca89SAndroid Build Coastguard Worker #define CANXL_PRIO_BITS CAN_SFF_ID_BITS
23*8d67ca89SAndroid Build Coastguard Worker typedef __u32 can_err_mask_t;
24*8d67ca89SAndroid Build Coastguard Worker #define CAN_MAX_DLC 8
25*8d67ca89SAndroid Build Coastguard Worker #define CAN_MAX_RAW_DLC 15
26*8d67ca89SAndroid Build Coastguard Worker #define CAN_MAX_DLEN 8
27*8d67ca89SAndroid Build Coastguard Worker #define CANFD_MAX_DLC 15
28*8d67ca89SAndroid Build Coastguard Worker #define CANFD_MAX_DLEN 64
29*8d67ca89SAndroid Build Coastguard Worker #define CANXL_MIN_DLC 0
30*8d67ca89SAndroid Build Coastguard Worker #define CANXL_MAX_DLC 2047
31*8d67ca89SAndroid Build Coastguard Worker #define CANXL_MAX_DLC_MASK 0x07FF
32*8d67ca89SAndroid Build Coastguard Worker #define CANXL_MIN_DLEN 1
33*8d67ca89SAndroid Build Coastguard Worker #define CANXL_MAX_DLEN 2048
34*8d67ca89SAndroid Build Coastguard Worker struct can_frame {
35*8d67ca89SAndroid Build Coastguard Worker   canid_t can_id;
36*8d67ca89SAndroid Build Coastguard Worker   union {
37*8d67ca89SAndroid Build Coastguard Worker     __u8 len;
38*8d67ca89SAndroid Build Coastguard Worker     __u8 can_dlc;
39*8d67ca89SAndroid Build Coastguard Worker   } __attribute__((packed));
40*8d67ca89SAndroid Build Coastguard Worker   __u8 __pad;
41*8d67ca89SAndroid Build Coastguard Worker   __u8 __res0;
42*8d67ca89SAndroid Build Coastguard Worker   __u8 len8_dlc;
43*8d67ca89SAndroid Build Coastguard Worker   __u8 data[CAN_MAX_DLEN] __attribute__((aligned(8)));
44*8d67ca89SAndroid Build Coastguard Worker };
45*8d67ca89SAndroid Build Coastguard Worker #define CANFD_BRS 0x01
46*8d67ca89SAndroid Build Coastguard Worker #define CANFD_ESI 0x02
47*8d67ca89SAndroid Build Coastguard Worker #define CANFD_FDF 0x04
48*8d67ca89SAndroid Build Coastguard Worker struct canfd_frame {
49*8d67ca89SAndroid Build Coastguard Worker   canid_t can_id;
50*8d67ca89SAndroid Build Coastguard Worker   __u8 len;
51*8d67ca89SAndroid Build Coastguard Worker   __u8 flags;
52*8d67ca89SAndroid Build Coastguard Worker   __u8 __res0;
53*8d67ca89SAndroid Build Coastguard Worker   __u8 __res1;
54*8d67ca89SAndroid Build Coastguard Worker   __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
55*8d67ca89SAndroid Build Coastguard Worker };
56*8d67ca89SAndroid Build Coastguard Worker #define CANXL_XLF 0x80
57*8d67ca89SAndroid Build Coastguard Worker #define CANXL_SEC 0x01
58*8d67ca89SAndroid Build Coastguard Worker #define CANXL_VCID_OFFSET 16
59*8d67ca89SAndroid Build Coastguard Worker #define CANXL_VCID_VAL_MASK 0xFFUL
60*8d67ca89SAndroid Build Coastguard Worker #define CANXL_VCID_MASK (CANXL_VCID_VAL_MASK << CANXL_VCID_OFFSET)
61*8d67ca89SAndroid Build Coastguard Worker struct canxl_frame {
62*8d67ca89SAndroid Build Coastguard Worker   canid_t prio;
63*8d67ca89SAndroid Build Coastguard Worker   __u8 flags;
64*8d67ca89SAndroid Build Coastguard Worker   __u8 sdt;
65*8d67ca89SAndroid Build Coastguard Worker   __u16 len;
66*8d67ca89SAndroid Build Coastguard Worker   __u32 af;
67*8d67ca89SAndroid Build Coastguard Worker   __u8 data[CANXL_MAX_DLEN];
68*8d67ca89SAndroid Build Coastguard Worker };
69*8d67ca89SAndroid Build Coastguard Worker #define CAN_MTU (sizeof(struct can_frame))
70*8d67ca89SAndroid Build Coastguard Worker #define CANFD_MTU (sizeof(struct canfd_frame))
71*8d67ca89SAndroid Build Coastguard Worker #define CANXL_MTU (sizeof(struct canxl_frame))
72*8d67ca89SAndroid Build Coastguard Worker #define CANXL_HDR_SIZE (offsetof(struct canxl_frame, data))
73*8d67ca89SAndroid Build Coastguard Worker #define CANXL_MIN_MTU (CANXL_HDR_SIZE + 64)
74*8d67ca89SAndroid Build Coastguard Worker #define CANXL_MAX_MTU CANXL_MTU
75*8d67ca89SAndroid Build Coastguard Worker #define CAN_RAW 1
76*8d67ca89SAndroid Build Coastguard Worker #define CAN_BCM 2
77*8d67ca89SAndroid Build Coastguard Worker #define CAN_TP16 3
78*8d67ca89SAndroid Build Coastguard Worker #define CAN_TP20 4
79*8d67ca89SAndroid Build Coastguard Worker #define CAN_MCNET 5
80*8d67ca89SAndroid Build Coastguard Worker #define CAN_ISOTP 6
81*8d67ca89SAndroid Build Coastguard Worker #define CAN_J1939 7
82*8d67ca89SAndroid Build Coastguard Worker #define CAN_NPROTO 8
83*8d67ca89SAndroid Build Coastguard Worker #define SOL_CAN_BASE 100
84*8d67ca89SAndroid Build Coastguard Worker struct sockaddr_can {
85*8d67ca89SAndroid Build Coastguard Worker   __kernel_sa_family_t can_family;
86*8d67ca89SAndroid Build Coastguard Worker   int can_ifindex;
87*8d67ca89SAndroid Build Coastguard Worker   union {
88*8d67ca89SAndroid Build Coastguard Worker     struct {
89*8d67ca89SAndroid Build Coastguard Worker       canid_t rx_id, tx_id;
90*8d67ca89SAndroid Build Coastguard Worker     } tp;
91*8d67ca89SAndroid Build Coastguard Worker     struct {
92*8d67ca89SAndroid Build Coastguard Worker       __u64 name;
93*8d67ca89SAndroid Build Coastguard Worker       __u32 pgn;
94*8d67ca89SAndroid Build Coastguard Worker       __u8 addr;
95*8d67ca89SAndroid Build Coastguard Worker     } j1939;
96*8d67ca89SAndroid Build Coastguard Worker   } can_addr;
97*8d67ca89SAndroid Build Coastguard Worker };
98*8d67ca89SAndroid Build Coastguard Worker struct can_filter {
99*8d67ca89SAndroid Build Coastguard Worker   canid_t can_id;
100*8d67ca89SAndroid Build Coastguard Worker   canid_t can_mask;
101*8d67ca89SAndroid Build Coastguard Worker };
102*8d67ca89SAndroid Build Coastguard Worker #define CAN_INV_FILTER 0x20000000U
103*8d67ca89SAndroid Build Coastguard Worker #endif
104