On Tue, Nov 23, 2021 at 11:30:34AM -0800, Dipen Patel wrote: > Some GPIO controllers can timestamp GPIO lines in real time using > hardware timestamp engine. The optional property is added to facilitate > this feature. > > The nvidia GPIO controller has hardware timestamp engine as a backend > to timestamp its GPIO lines in a real time. This change set adds > hardware-timestamp-engine property to reflect that fact. > > Signed-off-by: Dipen Patel <dipenp@xxxxxxxxxx> > --- > Documentation/devicetree/bindings/gpio/gpio.txt | 8 ++++++++ > .../devicetree/bindings/gpio/nvidia,tegra186-gpio.txt | 7 +++++++ > 2 files changed, 15 insertions(+) > > diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt > index a8895d339bfe..c6ae2eaf5762 100644 > --- a/Documentation/devicetree/bindings/gpio/gpio.txt > +++ b/Documentation/devicetree/bindings/gpio/gpio.txt > @@ -167,6 +167,13 @@ left to right from the passed array. An incomplete array (where the number > of passed named are less than ngpios) will still be used up until the last > provided valid line index. > > +Optionally, a GPIO controller may have a "hardware-timestamp-engine" property. > +This specifies the timestamp engine node. The property is only useful if the > +hardware timestamp engine (HTE) serves as a back-end to support hardware > +timestamp GPIO lines in a real time and GPIO controller has dependency on the > +engine. It will be up to GPIO controller and HTE provider drivers to figure out > +the mapping between GPIO controller and HTE namespaces of a given GPIO line. This needs to be added to schema instead (in dtschema). I find the 'hardware-' part to be redundant. What other type of timestamp engine are we going to have in the h/w description? > + > Example: > > gpio-controller@00000000 { > @@ -180,6 +187,7 @@ gpio-controller@00000000 { > "LED G", "LED B", "Col A", "Col B", "Col C", "Col D", > "Row A", "Row B", "Row C", "Row D", "NMI button", > "poweroff", "reset"; > + hardware-timestamp-engine = <&hadrware_ts_engine_node>; > } > > The GPIO chip may contain GPIO hog definitions. GPIO hogging is a mechanism > diff --git a/Documentation/devicetree/bindings/gpio/nvidia,tegra186-gpio.txt b/Documentation/devicetree/bindings/gpio/nvidia,tegra186-gpio.txt > index adff16c71d21..20f6c9e69839 100644 > --- a/Documentation/devicetree/bindings/gpio/nvidia,tegra186-gpio.txt > +++ b/Documentation/devicetree/bindings/gpio/nvidia,tegra186-gpio.txt > @@ -127,6 +127,12 @@ Required properties: > - 8: Active low level-sensitive. > Valid combinations are 1, 2, 3, 4, 8. > > +Optional properties: > +- hardware-timestamp-engine > + AON GPIO controller has timestamp engine which can hardware timestamp > + GPIO configured as input and IRQ. This property specifies hardware > + timestamp engine (HTE) device-tree node. > + > Example: > > #include <dt-bindings/interrupt-controller/irq.h> > @@ -162,4 +168,5 @@ gpio@c2f0000 { > #gpio-cells = <2>; > interrupt-controller; > #interrupt-cells = <2>; > + hardware-timestamp-engine = <&tegra_hte_aon>; > }; > -- > 2.17.1 > >