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