Documentation: Add HTE subsystem guide
Adding hte document which can help understand various APIs implemented in HTE framework for the HTE producers and the consumers. Signed-off-by: Dipen Patel <dipenp@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
parent
3123109284
commit
6406ac633d
79
Documentation/hte/hte.rst
Normal file
79
Documentation/hte/hte.rst
Normal file
@ -0,0 +1,79 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
============================================
|
||||
The Linux Hardware Timestamping Engine (HTE)
|
||||
============================================
|
||||
|
||||
:Author: Dipen Patel
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
Certain devices have built in hardware timestamping engines which can
|
||||
monitor sets of system signals, lines, buses etc... in realtime for state
|
||||
change; upon detecting the change they can automatically store the timestamp at
|
||||
the moment of occurrence. Such functionality may help achieve better accuracy
|
||||
in obtaining timestamps than using software counterparts i.e. ktime and
|
||||
friends.
|
||||
|
||||
This document describes the API that can be used by hardware timestamping
|
||||
engine provider and consumer drivers that want to use the hardware timestamping
|
||||
engine (HTE) framework. Both consumers and providers must include
|
||||
``#include <linux/hte.h>``.
|
||||
|
||||
The HTE framework APIs for the providers
|
||||
----------------------------------------
|
||||
|
||||
.. kernel-doc:: drivers/hte/hte.c
|
||||
:functions: devm_hte_register_chip hte_push_ts_ns
|
||||
|
||||
The HTE framework APIs for the consumers
|
||||
----------------------------------------
|
||||
|
||||
.. kernel-doc:: drivers/hte/hte.c
|
||||
:functions: hte_init_line_attr hte_ts_get hte_ts_put devm_hte_request_ts_ns hte_request_ts_ns hte_enable_ts hte_disable_ts of_hte_req_count hte_get_clk_src_info
|
||||
|
||||
The HTE framework public structures
|
||||
-----------------------------------
|
||||
.. kernel-doc:: include/linux/hte.h
|
||||
|
||||
More on the HTE timestamp data
|
||||
------------------------------
|
||||
The ``struct hte_ts_data`` is used to pass timestamp details between the
|
||||
consumers and the providers. It expresses timestamp data in nanoseconds in
|
||||
u64. An example of the typical timestamp data life cycle, for the GPIO line is
|
||||
as follows::
|
||||
|
||||
- Monitors GPIO line change.
|
||||
- Detects the state change on GPIO line.
|
||||
- Converts timestamps in nanoseconds.
|
||||
- Stores GPIO raw level in raw_level variable if the provider has that
|
||||
hardware capability.
|
||||
- Pushes this hte_ts_data object to HTE subsystem.
|
||||
- HTE subsystem increments seq counter and invokes consumer provided callback.
|
||||
Based on callback return value, the HTE core invokes secondary callback in
|
||||
the thread context.
|
||||
|
||||
HTE subsystem debugfs attributes
|
||||
--------------------------------
|
||||
HTE subsystem creates debugfs attributes at ``/sys/kernel/debug/hte/``.
|
||||
It also creates line/signal-related debugfs attributes at
|
||||
``/sys/kernel/debug/hte/<provider>/<label or line id>/``. Note that these
|
||||
attributes are read-only.
|
||||
|
||||
`ts_requested`
|
||||
The total number of entities requested from the given provider,
|
||||
where entity is specified by the provider and could represent
|
||||
lines, GPIO, chip signals, buses etc...
|
||||
The attribute will be available at
|
||||
``/sys/kernel/debug/hte/<provider>/``.
|
||||
|
||||
`total_ts`
|
||||
The total number of entities supported by the provider.
|
||||
The attribute will be available at
|
||||
``/sys/kernel/debug/hte/<provider>/``.
|
||||
|
||||
`dropped_timestamps`
|
||||
The dropped timestamps for a given line.
|
||||
The attribute will be available at
|
||||
``/sys/kernel/debug/hte/<provider>/<label or line id>/``.
|
Loading…
Reference in New Issue
Block a user