counter: Introduce the Count capture component
authorWilliam Breathitt Gray <william.gray@linaro.org>
Tue, 27 Sep 2022 22:53:40 +0000 (18:53 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 30 Sep 2022 12:32:35 +0000 (14:32 +0200)
Some devices provide a latch function to save historic Count values.
This patch standardizes exposure of such functionality as Count capture
components. A COUNTER_COMP_CAPTURE macro is provided for driver authors
to define a capture component. A new event COUNTER_EVENT_CAPTURE is
introduced to represent Count value capture events.

Cc: Julien Panis <jpanis@baylibre.com>
Link: https://lore.kernel.org/r/c239572ab4208d0d6728136e82a88ad464369a7a.1664204990.git.william.gray@linaro.org/
Signed-off-by: William Breathitt Gray <william.gray@linaro.org>
Link: https://lore.kernel.org/r/3cebaa0b807a225eb277d771504fe6dba7269ffd.1664318353.git.william.gray@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Documentation/ABI/testing/sysfs-bus-counter
include/linux/counter.h
include/uapi/linux/counter.h

index 2a996de..3eb6b06 100644 (file)
@@ -4,6 +4,12 @@ Contact:       linux-iio@vger.kernel.org
 Description:
                Count data of Count Y represented as a string.
 
+What:          /sys/bus/counter/devices/counterX/countY/capture
+KernelVersion: 6.1
+Contact:       linux-iio@vger.kernel.org
+Description:
+               Historical capture of the Count Y count data.
+
 What:          /sys/bus/counter/devices/counterX/countY/ceiling
 KernelVersion: 5.2
 Contact:       linux-iio@vger.kernel.org
@@ -203,6 +209,7 @@ Description:
                both edges:
                        Any state transition.
 
+What:          /sys/bus/counter/devices/counterX/countY/capture_component_id
 What:          /sys/bus/counter/devices/counterX/countY/ceiling_component_id
 What:          /sys/bus/counter/devices/counterX/countY/floor_component_id
 What:          /sys/bus/counter/devices/counterX/countY/count_mode_component_id
index b3fb6b6..e160197 100644 (file)
@@ -453,6 +453,9 @@ struct counter_available {
        .priv = &(_available), \
 }
 
+#define COUNTER_COMP_CAPTURE(_read, _write) \
+       COUNTER_COMP_COUNT_U64("capture", _read, _write)
+
 #define COUNTER_COMP_CEILING(_read, _write) \
        COUNTER_COMP_COUNT_U64("ceiling", _read, _write)
 
index e9610e1..8ab12d7 100644 (file)
@@ -63,6 +63,8 @@ enum counter_event_type {
        COUNTER_EVENT_INDEX,
        /* State of counter is changed */
        COUNTER_EVENT_CHANGE_OF_STATE,
+       /* Count value captured */
+       COUNTER_EVENT_CAPTURE,
 };
 
 /**