Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

hte: Re-phrase tegra API document

Make Tegra194 API document generic to make it applicable for
current and future tegra hte providers.

Signed-off-by: Dipen Patel <dipenp@nvidia.com>
Reviewed-by: Bagas Sanjaya <bagasdotme@gmail.com>

+48 -49
+1 -1
Documentation/driver-api/hte/index.rst
··· 18 18 .. toctree:: 19 19 :maxdepth: 1 20 20 21 - tegra194-hte 21 + tegra-hte 22 22
+47
Documentation/driver-api/hte/tegra-hte.rst
··· 1 + .. SPDX-License-Identifier: GPL-2.0+ 2 + 3 + HTE Kernel provider driver 4 + ========================== 5 + 6 + Description 7 + ----------- 8 + The Nvidia tegra HTE provider also known as GTE (Generic Timestamping Engine) 9 + driver implements two GTE instances: 1) GPIO GTE and 2) LIC 10 + (Legacy Interrupt Controller) IRQ GTE. Both GTE instances get the timestamp 11 + from the system counter TSC which has 31.25MHz clock rate, and the driver 12 + converts clock tick rate to nanoseconds before storing it as timestamp value. 13 + 14 + GPIO GTE 15 + -------- 16 + 17 + This GTE instance timestamps GPIO in real time. For that to happen GPIO 18 + needs to be configured as input. Only the always on (AON) GPIO controller 19 + instance supports timestamping GPIOs in real time as it is tightly coupled with 20 + the GPIO GTE. To support this, GPIOLIB adds two optional APIs as mentioned 21 + below. The GPIO GTE code supports both kernel and userspace consumers. The 22 + kernel space consumers can directly talk to HTE subsystem while userspace 23 + consumers timestamp requests go through GPIOLIB CDEV framework to HTE 24 + subsystem. The hte devicetree binding described at 25 + ``Documentation/devicetree/bindings/timestamp`` provides an example of how a 26 + consumer can request an GPIO line. 27 + 28 + See gpiod_enable_hw_timestamp_ns() and gpiod_disable_hw_timestamp_ns(). 29 + 30 + For userspace consumers, GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE flag must be 31 + specified during IOCTL calls. Refer to ``tools/gpio/gpio-event-mon.c``, which 32 + returns the timestamp in nanoseconds. 33 + 34 + LIC (Legacy Interrupt Controller) IRQ GTE 35 + ----------------------------------------- 36 + 37 + This GTE instance timestamps LIC IRQ lines in real time. The hte devicetree 38 + binding described at ``Documentation/devicetree/bindings/timestamp`` 39 + provides an example of how a consumer can request an IRQ line. Since it is a 40 + one-to-one mapping with IRQ GTE provider, consumers can simply specify the IRQ 41 + number that they are interested in. There is no userspace consumer support for 42 + this GTE instance in the HTE framework. 43 + 44 + The provider source code of both IRQ and GPIO GTE instances is located at 45 + ``drivers/hte/hte-tegra194.c``. The test driver 46 + ``drivers/hte/hte-tegra194-test.c`` demonstrates HTE API usage for both IRQ 47 + and GPIO GTE.
-48
Documentation/driver-api/hte/tegra194-hte.rst
··· 1 - .. SPDX-License-Identifier: GPL-2.0+ 2 - 3 - HTE Kernel provider driver 4 - ========================== 5 - 6 - Description 7 - ----------- 8 - The Nvidia tegra194 HTE provider driver implements two GTE 9 - (Generic Timestamping Engine) instances: 1) GPIO GTE and 2) LIC 10 - (Legacy Interrupt Controller) IRQ GTE. Both GTE instances get the 11 - timestamp from the system counter TSC which has 31.25MHz clock rate, and the 12 - driver converts clock tick rate to nanoseconds before storing it as timestamp 13 - value. 14 - 15 - GPIO GTE 16 - -------- 17 - 18 - This GTE instance timestamps GPIO in real time. For that to happen GPIO 19 - needs to be configured as input. The always on (AON) GPIO controller instance 20 - supports timestamping GPIOs in real time and it has 39 GPIO lines. The GPIO GTE 21 - and AON GPIO controller are tightly coupled as it requires very specific bits 22 - to be set in GPIO config register before GPIO GTE can be used, for that GPIOLIB 23 - adds two optional APIs as below. The GPIO GTE code supports both kernel 24 - and userspace consumers. The kernel space consumers can directly talk to HTE 25 - subsystem while userspace consumers timestamp requests go through GPIOLIB CDEV 26 - framework to HTE subsystem. 27 - 28 - See gpiod_enable_hw_timestamp_ns() and gpiod_disable_hw_timestamp_ns(). 29 - 30 - For userspace consumers, GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE flag must be 31 - specified during IOCTL calls. Refer to ``tools/gpio/gpio-event-mon.c``, which 32 - returns the timestamp in nanoseconds. 33 - 34 - LIC (Legacy Interrupt Controller) IRQ GTE 35 - ----------------------------------------- 36 - 37 - This GTE instance timestamps LIC IRQ lines in real time. There are 352 IRQ 38 - lines which this instance can add timestamps to in real time. The hte 39 - devicetree binding described at ``Documentation/devicetree/bindings/timestamp`` 40 - provides an example of how a consumer can request an IRQ line. Since it is a 41 - one-to-one mapping with IRQ GTE provider, consumers can simply specify the IRQ 42 - number that they are interested in. There is no userspace consumer support for 43 - this GTE instance in the HTE framework. 44 - 45 - The provider source code of both IRQ and GPIO GTE instances is located at 46 - ``drivers/hte/hte-tegra194.c``. The test driver 47 - ``drivers/hte/hte-tegra194-test.c`` demonstrates HTE API usage for both IRQ 48 - and GPIO GTE.