f861c2b80c
The BerliOS project, which currently hosts our mailinglist, will close with the end of the year. Now take the chance and remove all occurrences of the mailinglist address from the source files. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: David S. Miller <davem@davemloft.net>
122 lines
3 KiB
C
122 lines
3 KiB
C
/*
|
|
* linux/can/netlink.h
|
|
*
|
|
* Definitions for the CAN netlink interface
|
|
*
|
|
* Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com>
|
|
*
|
|
*/
|
|
|
|
#ifndef CAN_NETLINK_H
|
|
#define CAN_NETLINK_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
/*
|
|
* CAN bit-timing parameters
|
|
*
|
|
* For further information, please read chapter "8 BIT TIMING
|
|
* REQUIREMENTS" of the "Bosch CAN Specification version 2.0"
|
|
* at http://www.semiconductors.bosch.de/pdf/can2spec.pdf.
|
|
*/
|
|
struct can_bittiming {
|
|
__u32 bitrate; /* Bit-rate in bits/second */
|
|
__u32 sample_point; /* Sample point in one-tenth of a percent */
|
|
__u32 tq; /* Time quanta (TQ) in nanoseconds */
|
|
__u32 prop_seg; /* Propagation segment in TQs */
|
|
__u32 phase_seg1; /* Phase buffer segment 1 in TQs */
|
|
__u32 phase_seg2; /* Phase buffer segment 2 in TQs */
|
|
__u32 sjw; /* Synchronisation jump width in TQs */
|
|
__u32 brp; /* Bit-rate prescaler */
|
|
};
|
|
|
|
/*
|
|
* CAN harware-dependent bit-timing constant
|
|
*
|
|
* Used for calculating and checking bit-timing parameters
|
|
*/
|
|
struct can_bittiming_const {
|
|
char name[16]; /* Name of the CAN controller hardware */
|
|
__u32 tseg1_min; /* Time segement 1 = prop_seg + phase_seg1 */
|
|
__u32 tseg1_max;
|
|
__u32 tseg2_min; /* Time segement 2 = phase_seg2 */
|
|
__u32 tseg2_max;
|
|
__u32 sjw_max; /* Synchronisation jump width */
|
|
__u32 brp_min; /* Bit-rate prescaler */
|
|
__u32 brp_max;
|
|
__u32 brp_inc;
|
|
};
|
|
|
|
/*
|
|
* CAN clock parameters
|
|
*/
|
|
struct can_clock {
|
|
__u32 freq; /* CAN system clock frequency in Hz */
|
|
};
|
|
|
|
/*
|
|
* CAN operational and error states
|
|
*/
|
|
enum can_state {
|
|
CAN_STATE_ERROR_ACTIVE = 0, /* RX/TX error count < 96 */
|
|
CAN_STATE_ERROR_WARNING, /* RX/TX error count < 128 */
|
|
CAN_STATE_ERROR_PASSIVE, /* RX/TX error count < 256 */
|
|
CAN_STATE_BUS_OFF, /* RX/TX error count >= 256 */
|
|
CAN_STATE_STOPPED, /* Device is stopped */
|
|
CAN_STATE_SLEEPING, /* Device is sleeping */
|
|
CAN_STATE_MAX
|
|
};
|
|
|
|
/*
|
|
* CAN bus error counters
|
|
*/
|
|
struct can_berr_counter {
|
|
__u16 txerr;
|
|
__u16 rxerr;
|
|
};
|
|
|
|
/*
|
|
* CAN controller mode
|
|
*/
|
|
struct can_ctrlmode {
|
|
__u32 mask;
|
|
__u32 flags;
|
|
};
|
|
|
|
#define CAN_CTRLMODE_LOOPBACK 0x01 /* Loopback mode */
|
|
#define CAN_CTRLMODE_LISTENONLY 0x02 /* Listen-only mode */
|
|
#define CAN_CTRLMODE_3_SAMPLES 0x04 /* Triple sampling mode */
|
|
#define CAN_CTRLMODE_ONE_SHOT 0x08 /* One-Shot mode */
|
|
#define CAN_CTRLMODE_BERR_REPORTING 0x10 /* Bus-error reporting */
|
|
|
|
/*
|
|
* CAN device statistics
|
|
*/
|
|
struct can_device_stats {
|
|
__u32 bus_error; /* Bus errors */
|
|
__u32 error_warning; /* Changes to error warning state */
|
|
__u32 error_passive; /* Changes to error passive state */
|
|
__u32 bus_off; /* Changes to bus off state */
|
|
__u32 arbitration_lost; /* Arbitration lost errors */
|
|
__u32 restarts; /* CAN controller re-starts */
|
|
};
|
|
|
|
/*
|
|
* CAN netlink interface
|
|
*/
|
|
enum {
|
|
IFLA_CAN_UNSPEC,
|
|
IFLA_CAN_BITTIMING,
|
|
IFLA_CAN_BITTIMING_CONST,
|
|
IFLA_CAN_CLOCK,
|
|
IFLA_CAN_STATE,
|
|
IFLA_CAN_CTRLMODE,
|
|
IFLA_CAN_RESTART_MS,
|
|
IFLA_CAN_RESTART,
|
|
IFLA_CAN_BERR_COUNTER,
|
|
__IFLA_CAN_MAX
|
|
};
|
|
|
|
#define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1)
|
|
|
|
#endif /* CAN_NETLINK_H */
|