xref: /linux-6.15/include/uapi/linux/counter.h (revision e65c26f4)
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 /*
3  * Userspace ABI for Counter character devices
4  * Copyright (C) 2020 William Breathitt Gray
5  */
6 #ifndef _UAPI_COUNTER_H_
7 #define _UAPI_COUNTER_H_
8 
9 /* Component scope definitions */
10 enum counter_scope {
11 	COUNTER_SCOPE_DEVICE,
12 	COUNTER_SCOPE_SIGNAL,
13 	COUNTER_SCOPE_COUNT,
14 };
15 
16 /* Count direction values */
17 enum counter_count_direction {
18 	COUNTER_COUNT_DIRECTION_FORWARD,
19 	COUNTER_COUNT_DIRECTION_BACKWARD,
20 };
21 
22 /* Count mode values */
23 enum counter_count_mode {
24 	COUNTER_COUNT_MODE_NORMAL,
25 	COUNTER_COUNT_MODE_RANGE_LIMIT,
26 	COUNTER_COUNT_MODE_NON_RECYCLE,
27 	COUNTER_COUNT_MODE_MODULO_N,
28 };
29 
30 /* Count function values */
31 enum counter_function {
32 	COUNTER_FUNCTION_INCREASE,
33 	COUNTER_FUNCTION_DECREASE,
34 	COUNTER_FUNCTION_PULSE_DIRECTION,
35 	COUNTER_FUNCTION_QUADRATURE_X1_A,
36 	COUNTER_FUNCTION_QUADRATURE_X1_B,
37 	COUNTER_FUNCTION_QUADRATURE_X2_A,
38 	COUNTER_FUNCTION_QUADRATURE_X2_B,
39 	COUNTER_FUNCTION_QUADRATURE_X4,
40 };
41 
42 /* Signal values */
43 enum counter_signal_level {
44 	COUNTER_SIGNAL_LEVEL_LOW,
45 	COUNTER_SIGNAL_LEVEL_HIGH,
46 };
47 
48 /* Action mode values */
49 enum counter_synapse_action {
50 	COUNTER_SYNAPSE_ACTION_NONE,
51 	COUNTER_SYNAPSE_ACTION_RISING_EDGE,
52 	COUNTER_SYNAPSE_ACTION_FALLING_EDGE,
53 	COUNTER_SYNAPSE_ACTION_BOTH_EDGES,
54 };
55 
56 #endif /* _UAPI_COUNTER_H_ */
57