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