brintos

brintos / linux-shallow public Read only

0
0
Text · 2.1 KiB · 85e6547 Raw
48 lines · plain
1.. SPDX-License-Identifier: GPL-2.0+2 3HTE Kernel provider driver4==========================5 6Description7-----------8The Nvidia tegra HTE provider also known as GTE (Generic Timestamping Engine)9driver implements two GTE instances: 1) GPIO GTE and 2) LIC10(Legacy Interrupt Controller) IRQ GTE. Both GTE instances get the timestamp11from the system counter TSC which has 31.25MHz clock rate, and the driver12converts clock tick rate to nanoseconds before storing it as timestamp value.13 14GPIO GTE15--------16 17This GTE instance timestamps GPIO in real time. For that to happen GPIO18needs to be configured as input. Only the always on (AON) GPIO controller19instance supports timestamping GPIOs in real time as it is tightly coupled with20the GPIO GTE. To support this, GPIOLIB adds two optional APIs as mentioned21below. The GPIO GTE code supports both kernel and userspace consumers. The22kernel space consumers can directly talk to HTE subsystem while userspace23consumers timestamp requests go through GPIOLIB CDEV framework to HTE24subsystem. The hte devicetree binding described at25``Documentation/devicetree/bindings/timestamp`` provides an example of how a26consumer can request an GPIO line.27 28See gpiod_enable_hw_timestamp_ns() and gpiod_disable_hw_timestamp_ns().29 30For userspace consumers, GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE flag must be31specified during IOCTL calls. Refer to ``tools/gpio/gpio-event-mon.c``, which32returns the timestamp in nanoseconds.33 34LIC (Legacy Interrupt Controller) IRQ GTE35-----------------------------------------36 37This GTE instance timestamps LIC IRQ lines in real time. The hte devicetree38binding described at ``Documentation/devicetree/bindings/timestamp``39provides an example of how a consumer can request an IRQ line. Since it is a40one-to-one mapping with IRQ GTE provider, consumers can simply specify the IRQ41number that they are interested in. There is no userspace consumer support for42this GTE instance in the HTE framework.43 44The provider source code of both IRQ and GPIO GTE instances is located at45``drivers/hte/hte-tegra194.c``. The test driver46``drivers/hte/hte-tegra194-test.c`` demonstrates HTE API usage for both IRQ47and GPIO GTE.48