[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220810140724.182389-1-jpanis@baylibre.com>
Date: Wed, 10 Aug 2022 16:07:21 +0200
From: Julien Panis <jpanis@...libre.com>
To: vilhelm.gray@...il.com, robh+dt@...nel.org,
krzysztof.kozlowski+dt@...aro.org
Cc: linux-iio@...r.kernel.org, linux-kernel@...r.kernel.org,
devicetree@...r.kernel.org, mranostay@...com,
Julien Panis <jpanis@...libre.com>
Subject: [PATCH v4 0/3] ECAP support on TI AM62x SoC
The Enhanced Capture (ECAP) module can be used to timestamp events
detected on signal input pin. It can be used for time measurements
of pulse train signals.
ECAP module includes 4 timestamp capture registers. For all 4 sequenced
timestamp capture events (1->2->3->4->1->...), edge polarity (falling/rising
edge) can be selected.
This driver leverages counter subsystem to :
- select edge polarity for all 4 capture events (event mode)
- log timestamps for each capture event
Event polarity, and CAP1/2/3/4 timestamps give all the information
about the input pulse train. Further information can easily be computed :
period and/or duty cycle if frequency is constant, elapsed time between
pulses, etc...
Modifications since v3:
- Migrate driver from IIO to Counter subsystem
- Minor modification in yaml ($id) to match Counter subsystem
- Add ABI documentation
Userspace commands :
### SIGNAL ###
cd /sys/bus/counter/devices/counter0/signal0
# Get available polarities for each capture event
cat polarity1_available
cat polarity2_available
cat polarity3_available
cat polarity4_available
# Get polarity for each capture event
cat polarity1
cat polarity2
cat polarity3
cat polarity4
# Set polarity for each capture event
echo rising > polarity1
echo falling > polarity2
echo rising > polarity3
echo falling > polarity4
### COUNT ###
cd /sys/bus/counter/devices/counter0/count0
# Run ECAP
echo 1 > enable
# Get current timebase counter value
cat count
# Get captured timestamps
cat capture1
cat capture2
cat capture3
cat capture4
# Note that counter watches can also be used to get
# data from userspace application
# -> see tools/counter/counter_example.c
# Stop ECAP
echo 0 > enable
Julien Panis (3):
dt-binding: counter: add ti,am62-ecap-capture.yaml
Documentation: ABI: add sysfs-bus-counter-ecap
counter: capture-tiecap: capture driver support for ECAP
.../ABI/testing/sysfs-bus-counter-ecap | 64 ++
.../counter/ti,am62-ecap-capture.yaml | 61 ++
drivers/counter/Kconfig | 14 +
drivers/counter/Makefile | 1 +
drivers/counter/capture-tiecap.c | 634 ++++++++++++++++++
include/uapi/linux/counter.h | 2 +
6 files changed, 776 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-bus-counter-ecap
create mode 100644 Documentation/devicetree/bindings/counter/ti,am62-ecap-capture.yaml
create mode 100644 drivers/counter/capture-tiecap.c
--
2.25.1
Powered by blists - more mailing lists