€•—Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ&/translations/zh_CN/driver-api/hte/hte”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/zh_TW/driver-api/hte/hte”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/it_IT/driver-api/hte/hte”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/ja_JP/driver-api/hte/hte”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/ko_KR/driver-api/hte/hte”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/pt_BR/driver-api/hte/hte”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/sp_SP/driver-api/hte/hte”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ!SPDX-License-Identifier: GPL-2.0+”h]”hŒ!SPDX-License-Identifier: GPL-2.0+”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ@/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ,The Linux Hardware Timestamping Engine (HTE)”h]”hŒ,The Linux Hardware Timestamping Engine (HTE)”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ field_list”“”)�”}”(hhh]”hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒAuthor”h]”hŒAuthor”…”�”}”(hhéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäh³hÇh´KubhŒ field_body”“”)�”}”(hŒ Dipen Patel ”h]”hŒ paragraph”“”)�”}”(hŒ Dipen Patel”h]”hŒ Dipen Patel”…”�”}”(hhÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khhùubah}”(h]”h ]”h"]”h$]”h&]”uh1h÷hhäubeh}”(h]”h ]”h"]”h$]”h&]”uh1hâh³hÇh´Khhßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K ubhþ)�”}”(hX~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.”h]”hX~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.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K hjh²hubhþ)�”}”(hŒ÷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 ``.”h]”(hŒÜ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 ”…”�”}”(hj>h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``#include ``”h]”hŒ#include ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj>ubhŒ.”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khjh²hubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ(The HTE framework APIs for the providers”h]”hŒ(The HTE framework APIs for the providers”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjhh²hh³hÇh´KubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œhte_push_ts_ns (C function)”Œc.hte_push_ts_ns”hNt”auh1jyhjhh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒYint hte_push_ts_ns (const struct hte_chip *chip, u32 xlated_id, struct hte_ts_data *data)”h]”hŒdesc_signature_line”“”)�”}”(hŒXint hte_push_ts_ns(const struct hte_chip *chip, u32 xlated_id, struct hte_ts_data *data)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒint”h]”hŒint”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j›hj—h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´MubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j­hj—h²hh³j¬h´MubhŒ desc_name”“”)�”}”(hŒhte_push_ts_ns”h]”hŒ desc_sig_name”“”)�”}”(hŒhte_push_ts_ns”h]”hŒhte_push_ts_ns”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jÄhjÀubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1j¾hj—h²hh³j¬h´MubhŒdesc_parameterlist”“”)�”}”(hŒF(const struct hte_chip *chip, u32 xlated_id, struct hte_ts_data *data)”h]”(hŒdesc_parameter”“”)�”}”(hŒconst struct hte_chip *chip”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jéhjåubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjåubjê)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjåubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjåubh)�”}”(hhh]”jÅ)�”}”(hŒhte_chip”h]”hŒhte_chip”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”j)Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jCŒ ASTIdentifier”“”)�”}”j>jÈsbŒc.hte_push_ts_ns”†”asbuh1hhjåubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjåubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j^hjåubjÅ)�”}”(hŒchip”h]”hŒchip”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhjßubjä)�”}”(hŒ u32 xlated_id”h]”(h)�”}”(hhh]”jÅ)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”j�Œmodname”NŒ classname”NjBjE)�”}”jH]”jLŒc.hte_push_ts_ns”†”asbuh1hhj„ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj„ubjÅ)�”}”(hŒ xlated_id”h]”hŒ xlated_id”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhjßubjä)�”}”(hŒstruct hte_ts_data *data”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÌubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjÌubh)�”}”(hhh]”jÅ)�”}”(hŒ hte_ts_data”h]”hŒ hte_ts_data”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”jðŒmodname”NŒ classname”NjBjE)�”}”jH]”jLŒc.hte_push_ts_ns”†”asbuh1hhjÌubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjÌubj_)�”}”(hjbh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hjÌubjÅ)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhjßubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÝhj—h²hh³j¬h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1j•Œsphinx_line_type”Œ declarator”hj‘h²hh³j¬h´Mubah}”(h]”jˆah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j�h³j¬h´MhjŒh²hubhŒ desc_content”“”)�”}”(hhh]”hþ)�”}”(hŒ#Push timestamp data in nanoseconds.”h]”hŒ#Push timestamp data in nanoseconds.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´MhjXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjŒh²hh³j¬h´Mubeh}”(h]”h ]”(j<Œfunction”eh"]”h$]”h&]”Œdomain”j<Œobjtype”jsŒdesctype”jsŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jŠh²hhjhh³Nh´NubhŒ container”“”)�”}”(hX–**Parameters** ``const struct hte_chip *chip`` The HTE chip, used during the registration. ``u32 xlated_id`` entity id understood by both subsystem and provider, this is obtained from xlate callback during request API. ``struct hte_ts_data *data`` timestamp data. **Description** It is used by the provider to push timestamp data. **Return** 0 on success or a negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hj…h]”hŒ Parameters”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´MhjubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒL``const struct hte_chip *chip`` The HTE chip, used during the registration. ”h]”(hŒterm”“”)�”}”(hŒ``const struct hte_chip *chip``”h]”jG)�”}”(hj¬h]”hŒconst struct hte_chip *chip”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´Mhj¤ubhŒ definition”“”)�”}”(hhh]”hþ)�”}”(hŒ+The HTE chip, used during the registration.”h]”hŒ+The HTE chip, used during the registration.”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÁh´MhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jÁh´MhjŸubj£)�”}”(hŒ€``u32 xlated_id`` entity id understood by both subsystem and provider, this is obtained from xlate callback during request API. ”h]”(j©)�”}”(hŒ``u32 xlated_id``”h]”jG)�”}”(hjçh]”hŒ u32 xlated_id”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´MhjáubjÃ)�”}”(hhh]”hþ)�”}”(hŒmentity id understood by both subsystem and provider, this is obtained from xlate callback during request API.”h]”hŒmentity id understood by both subsystem and provider, this is obtained from xlate callback during request API.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´Mhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jüh´MhjŸubj£)�”}”(hŒ-``struct hte_ts_data *data`` timestamp data. ”h]”(j©)�”}”(hŒ``struct hte_ts_data *data``”h]”jG)�”}”(hj!h]”hŒstruct hte_ts_data *data”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´MhjubjÃ)�”}”(hhh]”hþ)�”}”(hŒtimestamp data.”h]”hŒtimestamp data.”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j6h´Mhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j6h´MhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhþ)�”}”(hŒ**Description**”h]”jˆ)�”}”(hj\h]”hŒ Description”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´Mhjubhþ)�”}”(hŒ2It is used by the provider to push timestamp data.”h]”hŒ2It is used by the provider to push timestamp data.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´Mhjubhþ)�”}”(hŒ **Return**”h]”jˆ)�”}”(hjƒh]”hŒReturn”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´Mhjubhþ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´Mhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hjhh²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œ#devm_hte_register_chip (C function)”Œc.devm_hte_register_chip”hNt”auh1jyhjhh²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒ2int devm_hte_register_chip (struct hte_chip *chip)”h]”j–)�”}”(hŒ1int devm_hte_register_chip(struct hte_chip *chip)”h]”(jœ)�”}”(hŒint”h]”hŒint”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjÄh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´M–ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjÄh²hh³jÖh´M–ubj¿)�”}”(hŒdevm_hte_register_chip”h]”jÅ)�”}”(hŒdevm_hte_register_chip”h]”hŒdevm_hte_register_chip”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjåubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hjÄh²hh³jÖh´M–ubjÞ)�”}”(hŒ(struct hte_chip *chip)”h]”jä)�”}”(hŒstruct hte_chip *chip”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjubh)�”}”(hhh]”jÅ)�”}”(hŒhte_chip”h]”hŒhte_chip”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”j%Œmodname”NŒ classname”NjBjE)�”}”jH]”jK)�”}”j>jësbŒc.devm_hte_register_chip”†”asbuh1hhjubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjubj_)�”}”(hjbh]”hŒ*”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hjubjÅ)�”}”(hŒchip”h]”hŒchip”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhjýubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÝhjÄh²hh³jÖh´M–ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhjÀh²hh³jÖh´M–ubah}”(h]”j»ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³jÖh´M–hj½h²hubjW)�”}”(hhh]”hþ)�”}”(hŒ*Resource managed API to register HTE chip.”h]”hŒ*Resource managed API to register HTE chip.”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´M–hj…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhj½h²hh³jÖh´M–ubeh}”(h]”h ]”(j<Œfunction”eh"]”h$]”h&]”jwj<jxj jyj jz‰j{‰j|‰uh1jŠh²hhjhh³Nh´Nubj~)�”}”(hX&**Parameters** ``struct hte_chip *chip`` the HTE chip to add to subsystem. **Description** It is used by the provider to register itself with the HTE subsystem. The unregistration is done automatically when the provider exits. **Return** 0 on success or a negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jˆ)�”}”(hjªh]”hŒ Parameters”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´Mšhj¤ubjž)�”}”(hhh]”j£)�”}”(hŒ<``struct hte_chip *chip`` the HTE chip to add to subsystem. ”h]”(j©)�”}”(hŒ``struct hte_chip *chip``”h]”jG)�”}”(hjÉh]”hŒstruct hte_chip *chip”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´M›hjÃubjÃ)�”}”(hhh]”hþ)�”}”(hŒ!the HTE chip to add to subsystem.”h]”hŒ!the HTE chip to add to subsystem.”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÞh´M›hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jÞh´M›hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤ubhþ)�”}”(hŒ**Description**”h]”jˆ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´M�hj¤ubhþ)�”}”(hŒ‡It is used by the provider to register itself with the HTE subsystem. The unregistration is done automatically when the provider exits.”h]”hŒ‡It is used by the provider to register itself with the HTE subsystem. The unregistration is done automatically when the provider exits.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´M—hj¤ubhþ)�”}”(hŒ **Return**”h]”jˆ)�”}”(hj+h]”hŒReturn”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´Mšhj¤ubhþ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:27: ./drivers/hte/hte.c”h´M�hj¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hjhh²hh³Nh´Nubeh}”(h]”Œ(the-hte-framework-apis-for-the-providers”ah ]”h"]”Œ(the hte framework apis for the providers”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ(The HTE framework APIs for the consumers”h]”hŒ(The HTE framework APIs for the consumers”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj_h²hh³hÇh´Kubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_ts_put (C function)”Œ c.hte_ts_put”hNt”auh1jyhj_h²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒ)int hte_ts_put (struct hte_ts_desc *desc)”h]”j–)�”}”(hŒ(int hte_ts_put(struct hte_ts_desc *desc)”h]”(jœ)�”}”(hŒint”h]”hŒint”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj…h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´KŽubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj…h²hh³j—h´KŽubj¿)�”}”(hŒ hte_ts_put”h]”jÅ)�”}”(hŒ hte_ts_put”h]”hŒ hte_ts_put”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj¦ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hj…h²hh³j—h´KŽubjÞ)�”}”(hŒ(struct hte_ts_desc *desc)”h]”jä)�”}”(hŒstruct hte_ts_desc *desc”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÂubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjÂubh)�”}”(hhh]”jÅ)�”}”(hŒ hte_ts_desc”h]”hŒ hte_ts_desc”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”jæŒmodname”NŒ classname”NjBjE)�”}”jH]”jK)�”}”j>j¬sbŒ c.hte_ts_put”†”asbuh1hhjÂubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjÂubj_)�”}”(hjbh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hjÂubjÅ)�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj¾ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÝhj…h²hh³j—h´KŽubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhj�h²hh³j—h´KŽubah}”(h]”j|ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³j—h´KŽhj~h²hubjW)�”}”(hhh]”hþ)�”}”(hŒ1Release and disable timestamp for the given desc.”h]”hŒ1Release and disable timestamp for the given desc.”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´KŽhjFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhj~h²hh³j—h´KŽubeh}”(h]”h ]”(j<Œfunction”eh"]”h$]”h&]”jwj<jxjajyjajz‰j{‰j|‰uh1jŠh²hhj_h³Nh´Nubj~)�”}”(hŒô**Parameters** ``struct hte_ts_desc *desc`` timestamp descriptor. **Context** debugfs_remove_recursive() function call may use sleeping locks, not suitable from atomic context. **Return** 0 on success or a negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jˆ)�”}”(hjkh]”hŒ Parameters”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´K’hjeubjž)�”}”(hhh]”j£)�”}”(hŒ3``struct hte_ts_desc *desc`` timestamp descriptor. ”h]”(j©)�”}”(hŒ``struct hte_ts_desc *desc``”h]”jG)�”}”(hjŠh]”hŒstruct hte_ts_desc *desc”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´K�hj„ubjÃ)�”}”(hhh]”hþ)�”}”(hŒtimestamp descriptor.”h]”hŒtimestamp descriptor.”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jŸh´K�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jŸh´K�hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjeubhþ)�”}”(hŒ **Context**”h]”jˆ)�”}”(hjÅh]”hŒContext”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´K’hjeubhþ)�”}”(hŒbdebugfs_remove_recursive() function call may use sleeping locks, not suitable from atomic context.”h]”hŒbdebugfs_remove_recursive() function call may use sleeping locks, not suitable from atomic context.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´K’hjeubhþ)�”}”(hŒ **Return**”h]”jˆ)�”}”(hjìh]”hŒReturn”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´K•hjeubhþ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´K”hjeubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hj_h²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_disable_ts (C function)”Œc.hte_disable_ts”hNt”auh1jyhj_h²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒ-int hte_disable_ts (struct hte_ts_desc *desc)”h]”j–)�”}”(hŒ,int hte_disable_ts(struct hte_ts_desc *desc)”h]”(jœ)�”}”(hŒint”h]”hŒint”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj-h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M4ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj-h²hh³j?h´M4ubj¿)�”}”(hŒhte_disable_ts”h]”jÅ)�”}”(hŒhte_disable_ts”h]”hŒhte_disable_ts”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjNubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hj-h²hh³j?h´M4ubjÞ)�”}”(hŒ(struct hte_ts_desc *desc)”h]”jä)�”}”(hŒstruct hte_ts_desc *desc”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjjubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjjubh)�”}”(hhh]”jÅ)�”}”(hŒ hte_ts_desc”h]”hŒ hte_ts_desc”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”jŽŒmodname”NŒ classname”NjBjE)�”}”jH]”jK)�”}”j>jTsbŒc.hte_disable_ts”†”asbuh1hhjjubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjjubj_)�”}”(hjbh]”hŒ*”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hjjubjÅ)�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhjfubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÝhj-h²hh³j?h´M4ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhj)h²hh³j?h´M4ubah}”(h]”j$ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³j?h´M4hj&h²hubjW)�”}”(hhh]”hþ)�”}”(hŒ&Disable timestamp on given descriptor.”h]”hŒ&Disable timestamp on given descriptor.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M4hjîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhj&h²hh³j?h´M4ubeh}”(h]”h ]”(j<Œfunction”eh"]”h$]”h&]”jwj<jxj jyj jz‰j{‰j|‰uh1jŠh²hhj_h³Nh´Nubj~)�”}”(hX>**Parameters** ``struct hte_ts_desc *desc`` ts descriptor, this is the same as returned by the request API. **Description** The API does not release any resources associated with desc. **Context** Holds mutex lock, not suitable from atomic context. **Return** 0 on success or a negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jˆ)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M8hj ubjž)�”}”(hhh]”j£)�”}”(hŒ]``struct hte_ts_desc *desc`` ts descriptor, this is the same as returned by the request API. ”h]”(j©)�”}”(hŒ``struct hte_ts_desc *desc``”h]”jG)�”}”(hj2 h]”hŒstruct hte_ts_desc *desc”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M8hj, ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ?ts descriptor, this is the same as returned by the request API.”h]”hŒ?ts descriptor, this is the same as returned by the request API.”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jG h´M8hjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj, ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jG h´M8hj) ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhþ)�”}”(hŒ**Description**”h]”jˆ)�”}”(hjm h]”hŒ Description”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjk ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M:hj ubhþ)�”}”(hŒŒ reftarget”j] Œmodname”NŒ classname”NjBjE)�”}”jH]”jK)�”}”j>j# sbŒc.hte_enable_ts”†”asbuh1hhj9 ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj9 ubj_)�”}”(hjbh]”hŒ*”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hj9 ubjÅ)�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj9 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj5 ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÝhjü h²hh³j h´MDubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhjø h²hh³j h´MDubah}”(h]”jó ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³j h´MDhjõ h²hubjW)�”}”(hhh]”hþ)�”}”(hŒ%Enable timestamp on given descriptor.”h]”hŒ%Enable timestamp on given descriptor.”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MDhj½ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjõ h²hh³j h´MDubeh}”(h]”h ]”(j<Œfunction”eh"]”h$]”h&]”jwj<jxjØ jyjØ jz‰j{‰j|‰uh1jŠh²hhj_h³Nh´Nubj~)�”}”(hŒï**Parameters** ``struct hte_ts_desc *desc`` ts descriptor, this is the same as returned by the request API. **Context** Holds mutex lock, not suitable from atomic context. **Return** 0 on success or a negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jˆ)�”}”(hjâ h]”hŒ Parameters”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MHhjÜ ubjž)�”}”(hhh]”j£)�”}”(hŒ]``struct hte_ts_desc *desc`` ts descriptor, this is the same as returned by the request API. ”h]”(j©)�”}”(hŒ``struct hte_ts_desc *desc``”h]”jG)�”}”(hj h]”hŒstruct hte_ts_desc *desc”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MFhjû ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ?ts descriptor, this is the same as returned by the request API.”h]”hŒ?ts descriptor, this is the same as returned by the request API.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j h´MFhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjû ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j h´MFhjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜ ubhþ)�”}”(hŒ **Context**”h]”jˆ)�”}”(hj< h]”hŒContext”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MHhjÜ ubhþ)�”}”(hŒ3Holds mutex lock, not suitable from atomic context.”h]”hŒ3Holds mutex lock, not suitable from atomic context.”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MHhjÜ ubhþ)�”}”(hŒ **Return**”h]”jˆ)�”}”(hjc h]”hŒReturn”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hja ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MJhjÜ ubhþ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MIhjÜ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hj_h²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œof_hte_req_count (C function)”Œc.of_hte_req_count”hNt”auh1jyhj_h²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒ)int of_hte_req_count (struct device *dev)”h]”j–)�”}”(hŒ(int of_hte_req_count(struct device *dev)”h]”(jœ)�”}”(hŒint”h]”hŒint”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj¤ h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MØubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj¤ h²hh³j¶ h´MØubj¿)�”}”(hŒof_hte_req_count”h]”jÅ)�”}”(hŒof_hte_req_count”h]”hŒof_hte_req_count”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjÅ ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hj¤ h²hh³j¶ h´MØubjÞ)�”}”(hŒ(struct device *dev)”h]”jä)�”}”(hŒstruct device *dev”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjá ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjá ubh)�”}”(hhh]”jÅ)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”j Œmodname”NŒ classname”NjBjE)�”}”jH]”jK)�”}”j>jË sbŒc.of_hte_req_count”†”asbuh1hhjá ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjá ubj_)�”}”(hjbh]”hŒ*”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hjá ubjÅ)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjá ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhjÝ ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÝhj¤ h²hh³j¶ h´MØubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhj  h²hh³j¶ h´MØubah}”(h]”j› ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³j¶ h´MØhj� h²hubjW)�”}”(hhh]”hþ)�”}”(hŒ+Return the number of entities to timestamp.”h]”hŒ+Return the number of entities to timestamp.”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MØhje h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhj� h²hh³j¶ h´MØubeh}”(h]”h ]”(j<Œfunction”eh"]”h$]”h&]”jwj<jxj€ jyj€ jz‰j{‰j|‰uh1jŠh²hhj_h³Nh´Nubj~)�”}”(hX **Parameters** ``struct device *dev`` The HTE consumer. **Description** The function returns the total count of the requested entities to timestamp by parsing device tree. **Return** Positive number on success, -ENOENT if no entries, -EINVAL for other errors.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jˆ)�”}”(hjŠ h]”hŒ Parameters”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjˆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÜhj„ ubjž)�”}”(hhh]”j£)�”}”(hŒ)``struct device *dev`` The HTE consumer. ”h]”(j©)�”}”(hŒ``struct device *dev``”h]”jG)�”}”(hj© h]”hŒstruct device *dev”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj§ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÝhj£ ubjÃ)�”}”(hhh]”hþ)�”}”(hŒThe HTE consumer.”h]”hŒThe HTE consumer.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¾ h´MÝhj¿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj£ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j¾ h´MÝhj  ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„ ubhþ)�”}”(hŒ**Description**”h]”jˆ)�”}”(hjä h]”hŒ Description”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´Mßhj„ ubhþ)�”}”(hŒcThe function returns the total count of the requested entities to timestamp by parsing device tree.”h]”hŒcThe function returns the total count of the requested entities to timestamp by parsing device tree.”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÙhj„ ubhþ)�”}”(hŒ **Return**”h]”jˆ)�”}”(hj h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÜhj„ ubhþ)�”}”(hŒLPositive number on success, -ENOENT if no entries, -EINVAL for other errors.”h]”hŒLPositive number on success, -ENOENT if no entries, -EINVAL for other errors.”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´Mßhj„ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hj_h²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_ts_get (C function)”Œ c.hte_ts_get”hNt”auh1jyhj_h²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒHint hte_ts_get (struct device *dev, struct hte_ts_desc *desc, int index)”h]”j–)�”}”(hŒGint hte_ts_get(struct device *dev, struct hte_ts_desc *desc, int index)”h]”(jœ)�”}”(hŒint”h]”hŒint”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjL h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M$ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjL h²hh³j^ h´M$ubj¿)�”}”(hŒ hte_ts_get”h]”jÅ)�”}”(hŒ hte_ts_get”h]”hŒ hte_ts_get”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjm ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hjL h²hh³j^ h´M$ubjÞ)�”}”(hŒ9(struct device *dev, struct hte_ts_desc *desc, int index)”h]”(jä)�”}”(hŒstruct device *dev”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj‰ ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj‰ ubh)�”}”(hhh]”jÅ)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj¨ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”j­ Œmodname”NŒ classname”NjBjE)�”}”jH]”jK)�”}”j>js sbŒ c.hte_ts_get”†”asbuh1hhj‰ ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj‰ ubj_)�”}”(hjbh]”hŒ*”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hj‰ ubjÅ)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj‰ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj… ubjä)�”}”(hŒstruct hte_ts_desc *desc”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjû ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjû ubh)�”}”(hhh]”jÅ)�”}”(hŒ hte_ts_desc”h]”hŒ hte_ts_desc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”jŒmodname”NŒ classname”NjBjE)�”}”jH]”jÇ Œ c.hte_ts_get”†”asbuh1hhjû ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjû ubj_)�”}”(hjbh]”hŒ*”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hjû ubjÅ)�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjû ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj… ubjä)�”}”(hŒ int index”h]”(jœ)�”}”(hŒint”h]”hŒint”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjkubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjkubjÅ)�”}”(hŒindex”h]”hŒindex”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj… ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÝhjL h²hh³j^ h´M$ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhjH h²hh³j^ h´M$ubah}”(h]”jC ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³j^ h´M$hjE h²hubjW)�”}”(hhh]”hþ)�”}”(hŒ/The function to initialize and obtain HTE desc.”h]”hŒ/The function to initialize and obtain HTE desc.”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M$hj²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjE h²hh³j^ h´M$ubeh}”(h]”h ]”(j<Œfunction”eh"]”h$]”h&]”jwj<jxjÍjyjÍjz‰j{‰j|‰uh1jŠh²hhj_h³Nh´Nubj~)�”}”(hXt**Parameters** ``struct device *dev`` HTE consumer/client device, used in case of parsing device tree node. ``struct hte_ts_desc *desc`` Pre-allocated timestamp descriptor. ``int index`` The index will be used as an index to parse line_id from the device tree node if node is present. **Description** The function initializes the consumer provided HTE descriptor. If consumer has device tree node, index is used to parse the line id and other details. The function needs to be called before using any request APIs. **Context** Holds mutex lock. **Return** Returns 0 on success or negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jˆ)�”}”(hj×h]”hŒ Parameters”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M(hjÑubjž)�”}”(hhh]”(j£)�”}”(hŒ]``struct device *dev`` HTE consumer/client device, used in case of parsing device tree node. ”h]”(j©)�”}”(hŒ``struct device *dev``”h]”jG)�”}”(hjöh]”hŒstruct device *dev”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M*hjðubjÃ)�”}”(hhh]”hþ)�”}”(hŒEHTE consumer/client device, used in case of parsing device tree node.”h]”hŒEHTE consumer/client device, used in case of parsing device tree node.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j h´M*hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j h´M*hjíubj£)�”}”(hŒA``struct hte_ts_desc *desc`` Pre-allocated timestamp descriptor. ”h]”(j©)�”}”(hŒ``struct hte_ts_desc *desc``”h]”jG)�”}”(hj/h]”hŒstruct hte_ts_desc *desc”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M+hj)ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ#Pre-allocated timestamp descriptor.”h]”hŒ#Pre-allocated timestamp descriptor.”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jDh´M+hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jDh´M+hjíubj£)�”}”(hŒp``int index`` The index will be used as an index to parse line_id from the device tree node if node is present. ”h]”(j©)�”}”(hŒ ``int index``”h]”jG)�”}”(hjhh]”hŒ int index”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M-hjbubjÃ)�”}”(hhh]”hþ)�”}”(hŒaThe index will be used as an index to parse line_id from the device tree node if node is present.”h]”hŒaThe index will be used as an index to parse line_id from the device tree node if node is present.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M,hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j}h´M-hjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑubhþ)�”}”(hŒ**Description**”h]”jˆ)�”}”(hj¤h]”hŒ Description”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M/hjÑubhþ)�”}”(hŒÕThe function initializes the consumer provided HTE descriptor. If consumer has device tree node, index is used to parse the line id and other details. The function needs to be called before using any request APIs.”h]”hŒÕThe function initializes the consumer provided HTE descriptor. If consumer has device tree node, index is used to parse the line id and other details. The function needs to be called before using any request APIs.”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M%hjÑubhþ)�”}”(hŒ **Context**”h]”jˆ)�”}”(hjËh]”hŒContext”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M)hjÑubhþ)�”}”(hŒHolds mutex lock.”h]”hŒHolds mutex lock.”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M/hjÑubhþ)�”}”(hŒ **Return**”h]”jˆ)�”}”(hjòh]”hŒReturn”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M1hjÑubhþ)�”}”(hŒ7Returns 0 on success or negative error code on failure.”h]”hŒ7Returns 0 on success or negative error code on failure.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M0hjÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hj_h²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_request_ts_ns (C function)”Œc.hte_request_ts_ns”hNt”auh1jyhj_h²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒaint hte_request_ts_ns (struct hte_ts_desc *desc, hte_ts_cb_t cb, hte_ts_sec_cb_t tcb, void *data)”h]”j–)�”}”(hŒ`int hte_request_ts_ns(struct hte_ts_desc *desc, hte_ts_cb_t cb, hte_ts_sec_cb_t tcb, void *data)”h]”(jœ)�”}”(hŒint”h]”hŒint”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj3h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M|ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj3h²hh³jEh´M|ubj¿)�”}”(hŒhte_request_ts_ns”h]”jÅ)�”}”(hŒhte_request_ts_ns”h]”hŒhte_request_ts_ns”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjTubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hj3h²hh³jEh´M|ubjÞ)�”}”(hŒK(struct hte_ts_desc *desc, hte_ts_cb_t cb, hte_ts_sec_cb_t tcb, void *data)”h]”(jä)�”}”(hŒstruct hte_ts_desc *desc”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjpubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjpubh)�”}”(hhh]”jÅ)�”}”(hŒ hte_ts_desc”h]”hŒ hte_ts_desc”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”j”Œmodname”NŒ classname”NjBjE)�”}”jH]”jK)�”}”j>jZsbŒc.hte_request_ts_ns”†”asbuh1hhjpubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjpubj_)�”}”(hjbh]”hŒ*”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hjpubjÅ)�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhjlubjä)�”}”(hŒhte_ts_cb_t cb”h]”(h)�”}”(hhh]”jÅ)�”}”(hŒ hte_ts_cb_t”h]”hŒ hte_ts_cb_t”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”jëŒmodname”NŒ classname”NjBjE)�”}”jH]”j®Œc.hte_request_ts_ns”†”asbuh1hhjâubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjâubjÅ)�”}”(hŒcb”h]”hŒcb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhjlubjä)�”}”(hŒhte_ts_sec_cb_t tcb”h]”(h)�”}”(hhh]”jÅ)�”}”(hŒhte_ts_sec_cb_t”h]”hŒhte_ts_sec_cb_t”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”j3Œmodname”NŒ classname”NjBjE)�”}”jH]”j®Œc.hte_request_ts_ns”†”asbuh1hhj*ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj*ubjÅ)�”}”(hŒtcb”h]”hŒtcb”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhjlubjä)�”}”(hŒ void *data”h]”(jœ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjrubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjrubj_)�”}”(hjbh]”hŒ*”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hjrubjÅ)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhjlubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÝhj3h²hh³jEh´M|ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhj/h²hh³jEh´M|ubah}”(h]”j*ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³jEh´M|hj,h²hubjW)�”}”(hhh]”hþ)�”}”(hŒ@The API to request and enable hardware timestamp in nanoseconds.”h]”hŒ@The API to request and enable hardware timestamp in nanoseconds.”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M|hjÆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhj,h²hh³jEh´M|ubeh}”(h]”h ]”(j<Œfunction”eh"]”h$]”h&]”jwj<jxjájyjájz‰j{‰j|‰uh1jŠh²hhj_h³Nh´Nubj~)�”}”(hX‚**Parameters** ``struct hte_ts_desc *desc`` Pre-allocated and initialized timestamp descriptor. ``hte_ts_cb_t cb`` Callback to push the timestamp data to consumer. ``hte_ts_sec_cb_t tcb`` Optional callback. If its provided, subsystem initializes workqueue. It is called when cb returns HTE_RUN_SECOND_CB. ``void *data`` Client data, used during cb and tcb callbacks. **Description** The entity is provider specific for example, GPIO lines, signals, buses etc...The API allocates necessary resources and enables the timestamp. **Context** Holds mutex lock. **Return** Returns 0 on success or negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jˆ)�”}”(hjëh]”hŒ Parameters”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M€hjåubjž)�”}”(hhh]”(j£)�”}”(hŒQ``struct hte_ts_desc *desc`` Pre-allocated and initialized timestamp descriptor. ”h]”(j©)�”}”(hŒ``struct hte_ts_desc *desc``”h]”jG)�”}”(hj h]”hŒstruct hte_ts_desc *desc”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M‚hjubjÃ)�”}”(hhh]”hþ)�”}”(hŒ3Pre-allocated and initialized timestamp descriptor.”h]”hŒ3Pre-allocated and initialized timestamp descriptor.”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´M‚hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jh´M‚hjubj£)�”}”(hŒD``hte_ts_cb_t cb`` Callback to push the timestamp data to consumer. ”h]”(j©)�”}”(hŒ``hte_ts_cb_t cb``”h]”jG)�”}”(hjCh]”hŒhte_ts_cb_t cb”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´Mƒhj=ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ0Callback to push the timestamp data to consumer.”h]”hŒ0Callback to push the timestamp data to consumer.”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jXh´MƒhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jXh´Mƒhjubj£)�”}”(hŒ�``hte_ts_sec_cb_t tcb`` Optional callback. If its provided, subsystem initializes workqueue. It is called when cb returns HTE_RUN_SECOND_CB. ”h]”(j©)�”}”(hŒ``hte_ts_sec_cb_t tcb``”h]”jG)�”}”(hj|h]”hŒhte_ts_sec_cb_t tcb”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M…hjvubjÃ)�”}”(hhh]”hþ)�”}”(hŒtOptional callback. If its provided, subsystem initializes workqueue. It is called when cb returns HTE_RUN_SECOND_CB.”h]”hŒtOptional callback. If its provided, subsystem initializes workqueue. It is called when cb returns HTE_RUN_SECOND_CB.”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M„hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j‘h´M…hjubj£)�”}”(hŒ>``void *data`` Client data, used during cb and tcb callbacks. ”h]”(j©)�”}”(hŒ``void *data``”h]”jG)�”}”(hj¶h]”hŒ void *data”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M†hj°ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ.Client data, used during cb and tcb callbacks.”h]”hŒ.Client data, used during cb and tcb callbacks.”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jËh´M†hjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jËh´M†hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåubhþ)�”}”(hŒ**Description**”h]”jˆ)�”}”(hjñh]”hŒ Description”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´Mˆhjåubhþ)�”}”(hŒŽThe entity is provider specific for example, GPIO lines, signals, buses etc...The API allocates necessary resources and enables the timestamp.”h]”hŒŽThe entity is provider specific for example, GPIO lines, signals, buses etc...The API allocates necessary resources and enables the timestamp.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M}hjåubhþ)�”}”(hŒ **Context**”h]”jˆ)�”}”(hjh]”hŒContext”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M€hjåubhþ)�”}”(hŒHolds mutex lock.”h]”hŒHolds mutex lock.”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´Mˆhjåubhþ)�”}”(hŒ **Return**”h]”jˆ)�”}”(hj?h]”hŒReturn”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MŠhjåubhþ)�”}”(hŒ7Returns 0 on success or negative error code on failure.”h]”hŒ7Returns 0 on success or negative error code on failure.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M‰hjåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hj_h²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œ#devm_hte_request_ts_ns (C function)”Œc.devm_hte_request_ts_ns”hNt”auh1jyhj_h²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒzint devm_hte_request_ts_ns (struct device *dev, struct hte_ts_desc *desc, hte_ts_cb_t cb, hte_ts_sec_cb_t tcb, void *data)”h]”j–)�”}”(hŒyint devm_hte_request_ts_ns(struct device *dev, struct hte_ts_desc *desc, hte_ts_cb_t cb, hte_ts_sec_cb_t tcb, void *data)”h]”(jœ)�”}”(hŒint”h]”hŒint”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj€h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M¤ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj€h²hh³j’h´M¤ubj¿)�”}”(hŒdevm_hte_request_ts_ns”h]”jÅ)�”}”(hŒdevm_hte_request_ts_ns”h]”hŒdevm_hte_request_ts_ns”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj¡ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hj€h²hh³j’h´M¤ubjÞ)�”}”(hŒ_(struct device *dev, struct hte_ts_desc *desc, hte_ts_cb_t cb, hte_ts_sec_cb_t tcb, void *data)”h]”(jä)�”}”(hŒstruct device *dev”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj½ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj½ubh)�”}”(hhh]”jÅ)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”jáŒmodname”NŒ classname”NjBjE)�”}”jH]”jK)�”}”j>j§sbŒc.devm_hte_request_ts_ns”†”asbuh1hhj½ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj½ubj_)�”}”(hjbh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hj½ubjÅ)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj¹ubjä)�”}”(hŒstruct hte_ts_desc *desc”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj/ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj/ubh)�”}”(hhh]”jÅ)�”}”(hŒ hte_ts_desc”h]”hŒ hte_ts_desc”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”jSŒmodname”NŒ classname”NjBjE)�”}”jH]”jûŒc.devm_hte_request_ts_ns”†”asbuh1hhj/ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj/ubj_)�”}”(hjbh]”hŒ*”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hj/ubjÅ)�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj¹ubjä)�”}”(hŒhte_ts_cb_t cb”h]”(h)�”}”(hhh]”jÅ)�”}”(hŒ hte_ts_cb_t”h]”hŒ hte_ts_cb_t”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”j¨Œmodname”NŒ classname”NjBjE)�”}”jH]”jûŒc.devm_hte_request_ts_ns”†”asbuh1hhjŸubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjŸubjÅ)�”}”(hŒcb”h]”hŒcb”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj¹ubjä)�”}”(hŒhte_ts_sec_cb_t tcb”h]”(h)�”}”(hhh]”jÅ)�”}”(hŒhte_ts_sec_cb_t”h]”hŒhte_ts_sec_cb_t”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”jðŒmodname”NŒ classname”NjBjE)�”}”jH]”jûŒc.devm_hte_request_ts_ns”†”asbuh1hhjçubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjçubjÅ)�”}”(hŒtcb”h]”hŒtcb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj¹ubjä)�”}”(hŒ void *data”h]”(jœ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj/ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj/ubj_)�”}”(hjbh]”hŒ*”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hj/ubjÅ)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÝhj€h²hh³j’h´M¤ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhj|h²hh³j’h´M¤ubah}”(h]”jwah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³j’h´M¤hjyh²hubjW)�”}”(hhh]”hþ)�”}”(hŒMResource managed API to request and enable hardware timestamp in nanoseconds.”h]”hŒMResource managed API to request and enable hardware timestamp in nanoseconds.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M¤hjƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjyh²hh³j’h´M¤ubeh}”(h]”h ]”(j<Œfunction”eh"]”h$]”h&]”jwj<jxjžjyjžjz‰j{‰j|‰uh1jŠh²hhj_h³Nh´Nubj~)�”}”(hXû**Parameters** ``struct device *dev`` HTE consumer/client device. ``struct hte_ts_desc *desc`` Pre-allocated and initialized timestamp descriptor. ``hte_ts_cb_t cb`` Callback to push the timestamp data to consumer. ``hte_ts_sec_cb_t tcb`` Optional callback. If its provided, subsystem initializes workqueue. It is called when cb returns HTE_RUN_SECOND_CB. ``void *data`` Client data, used during cb and tcb callbacks. **Description** The entity is provider specific for example, GPIO lines, signals, buses etc...The API allocates necessary resources and enables the timestamp. It deallocates and disables automatically when the consumer exits. **Context** Holds mutex lock. **Return** Returns 0 on success or negative error code on failure.”•Xh]”(hþ)�”}”(hŒ**Parameters**”h]”jˆ)�”}”(hj¨h]”hŒ Parameters”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M¨hj¢ubjž)�”}”(hhh]”(j£)�”}”(hŒ3``struct device *dev`` HTE consumer/client device. ”h]”(j©)�”}”(hŒ``struct device *dev``”h]”jG)�”}”(hjÇh]”hŒstruct device *dev”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M«hjÁubjÃ)�”}”(hhh]”hþ)�”}”(hŒHTE consumer/client device.”h]”hŒHTE consumer/client device.”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÜh´M«hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jÜh´M«hj¾ubj£)�”}”(hŒQ``struct hte_ts_desc *desc`` Pre-allocated and initialized timestamp descriptor. ”h]”(j©)�”}”(hŒ``struct hte_ts_desc *desc``”h]”jG)�”}”(hjh]”hŒstruct hte_ts_desc *desc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M¬hjúubjÃ)�”}”(hhh]”hþ)�”}”(hŒ3Pre-allocated and initialized timestamp descriptor.”h]”hŒ3Pre-allocated and initialized timestamp descriptor.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´M¬hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jh´M¬hj¾ubj£)�”}”(hŒD``hte_ts_cb_t cb`` Callback to push the timestamp data to consumer. ”h]”(j©)�”}”(hŒ``hte_ts_cb_t cb``”h]”jG)�”}”(hj9h]”hŒhte_ts_cb_t cb”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M­hj3ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ0Callback to push the timestamp data to consumer.”h]”hŒ0Callback to push the timestamp data to consumer.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jNh´M­hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jNh´M­hj¾ubj£)�”}”(hŒ�``hte_ts_sec_cb_t tcb`` Optional callback. If its provided, subsystem initializes workqueue. It is called when cb returns HTE_RUN_SECOND_CB. ”h]”(j©)�”}”(hŒ``hte_ts_sec_cb_t tcb``”h]”jG)�”}”(hjrh]”hŒhte_ts_sec_cb_t tcb”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M¯hjlubjÃ)�”}”(hhh]”hþ)�”}”(hŒtOptional callback. If its provided, subsystem initializes workqueue. It is called when cb returns HTE_RUN_SECOND_CB.”h]”hŒtOptional callback. If its provided, subsystem initializes workqueue. It is called when cb returns HTE_RUN_SECOND_CB.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M®hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j‡h´M¯hj¾ubj£)�”}”(hŒ>``void *data`` Client data, used during cb and tcb callbacks. ”h]”(j©)�”}”(hŒ``void *data``”h]”jG)�”}”(hj¬h]”hŒ void *data”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M°hj¦ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ.Client data, used during cb and tcb callbacks.”h]”hŒ.Client data, used during cb and tcb callbacks.”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÁh´M°hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jÁh´M°hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢ubhþ)�”}”(hŒ**Description**”h]”jˆ)�”}”(hjçh]”hŒ Description”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M²hj¢ubhþ)�”}”(hŒÑThe entity is provider specific for example, GPIO lines, signals, buses etc...The API allocates necessary resources and enables the timestamp. It deallocates and disables automatically when the consumer exits.”h]”hŒÑThe entity is provider specific for example, GPIO lines, signals, buses etc...The API allocates necessary resources and enables the timestamp. It deallocates and disables automatically when the consumer exits.”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M¥hj¢ubhþ)�”}”(hŒ **Context**”h]”jˆ)�”}”(hjh]”hŒContext”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M©hj¢ubhþ)�”}”(hŒHolds mutex lock.”h]”hŒHolds mutex lock.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M²hj¢ubhþ)�”}”(hŒ **Return**”h]”jˆ)�”}”(hj5h]”hŒReturn”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M´hj¢ubhþ)�”}”(hŒ7Returns 0 on success or negative error code on failure.”h]”hŒ7Returns 0 on success or negative error code on failure.”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M³hj¢ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hj_h²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_init_line_attr (C function)”Œc.hte_init_line_attr”hNt”auh1jyhj_h²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒvint hte_init_line_attr (struct hte_ts_desc *desc, u32 line_id, unsigned long edge_flags, const char *name, void *data)”h]”j–)�”}”(hŒuint hte_init_line_attr(struct hte_ts_desc *desc, u32 line_id, unsigned long edge_flags, const char *name, void *data)”h]”(jœ)�”}”(hŒint”h]”hŒint”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjvh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MËubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjvh²hh³jˆh´MËubj¿)�”}”(hŒhte_init_line_attr”h]”jÅ)�”}”(hŒhte_init_line_attr”h]”hŒhte_init_line_attr”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj—ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hjvh²hh³jˆh´MËubjÞ)�”}”(hŒ_(struct hte_ts_desc *desc, u32 line_id, unsigned long edge_flags, const char *name, void *data)”h]”(jä)�”}”(hŒstruct hte_ts_desc *desc”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj³ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj³ubh)�”}”(hhh]”jÅ)�”}”(hŒ hte_ts_desc”h]”hŒ hte_ts_desc”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”j׌modname”NŒ classname”NjBjE)�”}”jH]”jK)�”}”j>j�sbŒc.hte_init_line_attr”†”asbuh1hhj³ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj³ubj_)�”}”(hjbh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hj³ubjÅ)�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj¯ubjä)�”}”(hŒ u32 line_id”h]”(h)�”}”(hhh]”jÅ)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”j.Œmodname”NŒ classname”NjBjE)�”}”jH]”jñŒc.hte_init_line_attr”†”asbuh1hhj%ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj%ubjÅ)�”}”(hŒline_id”h]”hŒline_id”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj¯ubjä)�”}”(hŒunsigned long edge_flags”h]”(jœ)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjmubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjmubjœ)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjmubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjmubjÅ)�”}”(hŒ edge_flags”h]”hŒ edge_flags”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj¯ubjä)�”}”(hŒconst char *name”h]”(jê)�”}”(hjíh]”hŒconst”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj¾ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj¾ubjœ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hj¾ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj¾ubj_)�”}”(hjbh]”hŒ*”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hj¾ubjÅ)�”}”(hŒname”h]”hŒname”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj¯ubjä)�”}”(hŒ void *data”h]”(jœ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjubj_)�”}”(hjbh]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hjubjÅ)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÝhjvh²hh³jˆh´MËubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhjrh²hh³jˆh´MËubah}”(h]”jmah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³jˆh´MËhjoh²hubjW)�”}”(hhh]”hþ)�”}”(hŒInitialize line attributes.”h]”hŒInitialize line attributes.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MËhjoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjoh²hh³jˆh´MËubeh}”(h]”h ]”(j<Œfunction”eh"]”h$]”h&]”jwj<jxjŠjyjŠjz‰j{‰j|‰uh1jŠh²hhj_h³Nh´Nubj~)�”}”(hX**Parameters** ``struct hte_ts_desc *desc`` Pre-allocated timestamp descriptor. ``u32 line_id`` line id. ``unsigned long edge_flags`` edge flags related to line_id. ``const char *name`` name of the line. ``void *data`` line data related to line_id. **Description** Zeroes out line attributes and initializes with provided arguments. The function needs to be called before calling any consumer facing functions. **Context** Any. **Return** 0 on success or negative error code for the failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jˆ)�”}”(hj”h]”hŒ Parameters”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÏhjŽubjž)�”}”(hhh]”(j£)�”}”(hŒA``struct hte_ts_desc *desc`` Pre-allocated timestamp descriptor. ”h]”(j©)�”}”(hŒ``struct hte_ts_desc *desc``”h]”jG)�”}”(hj³h]”hŒstruct hte_ts_desc *desc”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÑhj­ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ#Pre-allocated timestamp descriptor.”h]”hŒ#Pre-allocated timestamp descriptor.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÈh´MÑhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jÈh´MÑhjªubj£)�”}”(hŒ``u32 line_id`` line id. ”h]”(j©)�”}”(hŒ``u32 line_id``”h]”jG)�”}”(hjìh]”hŒ u32 line_id”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÒhjæubjÃ)�”}”(hhh]”hþ)�”}”(hŒline id.”h]”hŒline id.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´MÒhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jh´MÒhjªubj£)�”}”(hŒ<``unsigned long edge_flags`` edge flags related to line_id. ”h]”(j©)�”}”(hŒ``unsigned long edge_flags``”h]”jG)�”}”(hj%h]”hŒunsigned long edge_flags”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÓhjubjÃ)�”}”(hhh]”hþ)�”}”(hŒedge flags related to line_id.”h]”hŒedge flags related to line_id.”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j:h´MÓhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j:h´MÓhjªubj£)�”}”(hŒ'``const char *name`` name of the line. ”h]”(j©)�”}”(hŒ``const char *name``”h]”jG)�”}”(hj^h]”hŒconst char *name”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÔhjXubjÃ)�”}”(hhh]”hþ)�”}”(hŒname of the line.”h]”hŒname of the line.”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jsh´MÔhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jsh´MÔhjªubj£)�”}”(hŒ-``void *data`` line data related to line_id. ”h]”(j©)�”}”(hŒ``void *data``”h]”jG)�”}”(hj—h]”hŒ void *data”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÕhj‘ubjÃ)�”}”(hhh]”hþ)�”}”(hŒline data related to line_id.”h]”hŒline data related to line_id.”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¬h´MÕhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j¬h´MÕhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽubhþ)�”}”(hŒ**Description**”h]”jˆ)�”}”(hjÒh]”hŒ Description”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M×hjŽubhþ)�”}”(hŒ‘Zeroes out line attributes and initializes with provided arguments. The function needs to be called before calling any consumer facing functions.”h]”hŒ‘Zeroes out line attributes and initializes with provided arguments. The function needs to be called before calling any consumer facing functions.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÌhjŽubhþ)�”}”(hŒ **Context**”h]”jˆ)�”}”(hjùh]”hŒContext”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÐhjŽubhþ)�”}”(hŒAny.”h]”hŒAny.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´M×hjŽubhþ)�”}”(hŒ **Return**”h]”jˆ)�”}”(hj h]”hŒReturn”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MÙhjŽubhþ)�”}”(hŒ40 on success or negative error code for the failure.”h]”hŒ40 on success or negative error code for the failure.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MØhjŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hj_h²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œ!hte_get_clk_src_info (C function)”Œc.hte_get_clk_src_info”hNt”auh1jyhj_h²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒRint hte_get_clk_src_info (const struct hte_ts_desc *desc, struct hte_clk_info *ci)”h]”j–)�”}”(hŒQint hte_get_clk_src_info(const struct hte_ts_desc *desc, struct hte_clk_info *ci)”h]”(jœ)�”}”(hŒint”h]”hŒint”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j¨ah"]”h$]”h&]”uh1j›hjah²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´Mòubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjah²hh³jsh´Mòubj¿)�”}”(hŒhte_get_clk_src_info”h]”jÅ)�”}”(hŒhte_get_clk_src_info”h]”hŒhte_get_clk_src_info”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj‚ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hjah²hh³jsh´MòubjÞ)�”}”(hŒ9(const struct hte_ts_desc *desc, struct hte_clk_info *ci)”h]”(jä)�”}”(hŒconst struct hte_ts_desc *desc”h]”(jê)�”}”(hjíh]”hŒconst”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjžubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjžubjê)�”}”(hj h]”hŒstruct”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjžubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjžubh)�”}”(hhh]”jÅ)�”}”(hŒ hte_ts_desc”h]”hŒ hte_ts_desc”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”jÝŒmodname”NŒ classname”NjBjE)�”}”jH]”jK)�”}”j>jˆsbŒc.hte_get_clk_src_info”†”asbuh1hhjžubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjžubj_)�”}”(hjbh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hjžubjÅ)�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhjšubjä)�”}”(hŒstruct hte_clk_info *ci”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj+ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj+ubh)�”}”(hhh]”jÅ)�”}”(hŒ hte_clk_info”h]”hŒ hte_clk_info”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j<Œreftype”j>Œ reftarget”jOŒmodname”NŒ classname”NjBjE)�”}”jH]”j÷Œc.hte_get_clk_src_info”†”asbuh1hhj+ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj+ubj_)�”}”(hjbh]”hŒ*”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j^hj+ubjÅ)�”}”(hŒci”h]”hŒci”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jãhjšubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÝhjah²hh³jsh´Mòubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhj]h²hh³jsh´Mòubah}”(h]”jXah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³jsh´MòhjZh²hubjW)�”}”(hhh]”hþ)�”}”(hŒ5Get the clock source information for a ts descriptor.”h]”hŒ5Get the clock source information for a ts descriptor.”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´Mòhj­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjZh²hh³jsh´Mòubeh}”(h]”h ]”(j<Œfunction”eh"]”h$]”h&]”jwj<jxjÈjyjÈjz‰j{‰j|‰uh1jŠh²hhj_h³Nh´Nubj~)�”}”(hX**Parameters** ``const struct hte_ts_desc *desc`` ts descriptor, same as returned from request API. ``struct hte_clk_info *ci`` The API fills this structure with the clock information data. **Context** Any context. **Return** 0 on success else negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jˆ)�”}”(hjÒh]”hŒ Parameters”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MöhjÌubjž)�”}”(hhh]”(j£)�”}”(hŒU``const struct hte_ts_desc *desc`` ts descriptor, same as returned from request API. ”h]”(j©)�”}”(hŒ"``const struct hte_ts_desc *desc``”h]”jG)�”}”(hjñh]”hŒconst struct hte_ts_desc *desc”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MõhjëubjÃ)�”}”(hhh]”hþ)�”}”(hŒ1ts descriptor, same as returned from request API.”h]”hŒ1ts descriptor, same as returned from request API.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´Mõhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jh´Mõhjèubj£)�”}”(hŒZ``struct hte_clk_info *ci`` The API fills this structure with the clock information data. ”h]”(j©)�”}”(hŒ``struct hte_clk_info *ci``”h]”jG)�”}”(hj*h]”hŒstruct hte_clk_info *ci”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´Möhj$ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ=The API fills this structure with the clock information data.”h]”hŒ=The API fills this structure with the clock information data.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j?h´Möhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j?h´Möhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌubhþ)�”}”(hŒ **Context**”h]”jˆ)�”}”(hjeh]”hŒContext”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MøhjÌubhþ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MøhjÌubhþ)�”}”(hŒ **Return**”h]”jˆ)�”}”(hjŒh]”hŒReturn”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MúhjÌubhþ)�”}”(hŒ10 on success else negative error code on failure.”h]”hŒ10 on success else negative error code on failure.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:33: ./drivers/hte/hte.c”h´MùhjÌubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hj_h²hh³Nh´Nubeh}”(h]”Œ(the-hte-framework-apis-for-the-consumers”ah ]”h"]”Œ(the hte framework apis for the consumers”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ#The HTE framework public structures”h]”hŒ#The HTE framework public structures”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÀh²hh³hÇh´K%ubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_edge (C enum)”Œ c.hte_edge”hNt”auh1jyhjÀh²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒhte_edge”h]”j–)�”}”(hŒ enum hte_edge”h]”(jê)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjæh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjæh²hh³jøh´Kubj¿)�”}”(hŒhte_edge”h]”jÅ)�”}”(hjäh]”hŒhte_edge”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hjæh²hh³jøh´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhjâh²hh³jøh´Kubah}”(h]”jÝah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³jøh´Khjßh²hubjW)�”}”(hhh]”hþ)�”}”(hŒHTE line edge flags.”h]”hŒHTE line edge flags.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K hj*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjßh²hh³jøh´Kubeh}”(h]”h ]”(j<Œenum”eh"]”h$]”h&]”jwj<jxjEjyjEjz‰j{‰j|‰uh1jŠh²hhjÀh³Nh´Nubj~)�”}”(hŒÔ**Constants** ``HTE_EDGE_NO_SETUP`` No edge setup. In this case consumer will setup edges, for example during request irq call. ``HTE_RISING_EDGE_TS`` Rising edge. ``HTE_FALLING_EDGE_TS`` Falling edge.”h]”(hþ)�”}”(hŒ **Constants**”h]”jˆ)�”}”(hjOh]”hŒ Constants”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KhjIubjž)�”}”(hhh]”(j£)�”}”(hŒr``HTE_EDGE_NO_SETUP`` No edge setup. In this case consumer will setup edges, for example during request irq call. ”h]”(j©)�”}”(hŒ``HTE_EDGE_NO_SETUP``”h]”jG)�”}”(hjnh]”hŒHTE_EDGE_NO_SETUP”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KhjhubjÃ)�”}”(hhh]”hþ)�”}”(hŒ[No edge setup. In this case consumer will setup edges, for example during request irq call.”h]”hŒ[No edge setup. In this case consumer will setup edges, for example during request irq call.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Khj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jƒh´Khjeubj£)�”}”(hŒ$``HTE_RISING_EDGE_TS`` Rising edge. ”h]”(j©)�”}”(hŒ``HTE_RISING_EDGE_TS``”h]”jG)�”}”(hj¨h]”hŒHTE_RISING_EDGE_TS”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Khj¢ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ Rising edge.”h]”hŒ Rising edge.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j½h´Khj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j½h´Khjeubj£)�”}”(hŒ%``HTE_FALLING_EDGE_TS`` Falling edge.”h]”(j©)�”}”(hŒ``HTE_FALLING_EDGE_TS``”h]”jG)�”}”(hjáh]”hŒHTE_FALLING_EDGE_TS”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KhjÛubjÃ)�”}”(hhh]”hþ)�”}”(hŒ Falling edge.”h]”hŒ Falling edge.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Khj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jöh´Khjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hjÀh²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_return (C enum)”Œ c.hte_return”hNt”auh1jyhjÀh²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒ hte_return”h]”j–)�”}”(hŒenum hte_return”h]”(jê)�”}”(hjìh]”hŒenum”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj7h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj7h²hh³jHh´K ubj¿)�”}”(hŒ hte_return”h]”jÅ)�”}”(hj5h]”hŒ hte_return”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjWubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hj7h²hh³jHh´K ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhj3h²hh³jHh´K ubah}”(h]”j.ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³jHh´K hj0h²hubjW)�”}”(hhh]”hþ)�”}”(hŒ1HTE subsystem return values used during callback.”h]”hŒ1HTE subsystem return values used during callback.”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Khjzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhj0h²hh³jHh´K ubeh}”(h]”h ]”(j<Œenum”eh"]”h$]”h&]”jwj<jxj•jyj•jz‰j{‰j|‰uh1jŠh²hhjÀh³Nh´Nubj~)�”}”(hŒñ**Constants** ``HTE_CB_HANDLED`` The consumer handled the data. ``HTE_RUN_SECOND_CB`` The consumer needs further processing, in that case HTE subsystem calls secondary callback provided by the consumer where it is allowed to sleep.”h]”(hþ)�”}”(hŒ **Constants**”h]”jˆ)�”}”(hjŸh]”hŒ Constants”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K hj™ubjž)�”}”(hhh]”(j£)�”}”(hŒ2``HTE_CB_HANDLED`` The consumer handled the data. ”h]”(j©)�”}”(hŒ``HTE_CB_HANDLED``”h]”jG)�”}”(hj¾h]”hŒHTE_CB_HANDLED”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K#hj¸ubjÃ)�”}”(hhh]”hþ)�”}”(hŒThe consumer handled the data.”h]”hŒThe consumer handled the data.”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÓh´K#hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jÓh´K#hjµubj£)�”}”(hŒ§``HTE_RUN_SECOND_CB`` The consumer needs further processing, in that case HTE subsystem calls secondary callback provided by the consumer where it is allowed to sleep.”h]”(j©)�”}”(hŒ``HTE_RUN_SECOND_CB``”h]”jG)�”}”(hj÷h]”hŒHTE_RUN_SECOND_CB”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K'hjñubjÃ)�”}”(hhh]”hþ)�”}”(hŒ‘The consumer needs further processing, in that case HTE subsystem calls secondary callback provided by the consumer where it is allowed to sleep.”h]”hŒ‘The consumer needs further processing, in that case HTE subsystem calls secondary callback provided by the consumer where it is allowed to sleep.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K&hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j h´K'hjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hj™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hjÀh²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_ts_data (C struct)”Œ c.hte_ts_data”hNt”auh1jyhjÀh²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒ hte_ts_data”h]”j–)�”}”(hŒstruct hte_ts_data”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjM h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K-ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjM h²hh³j^ h´K-ubj¿)�”}”(hŒ hte_ts_data”h]”jÅ)�”}”(hjK h]”hŒ hte_ts_data”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjm ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hjM h²hh³j^ h´K-ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhjI h²hh³j^ h´K-ubah}”(h]”jD ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³j^ h´K-hjF h²hubjW)�”}”(hhh]”hþ)�”}”(hŒHTE timestamp data.”h]”hŒHTE timestamp data.”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K)hj� h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjF h²hh³j^ h´K-ubeh}”(h]”h ]”(j<Œstruct”eh"]”h$]”h&]”jwj<jxj« jyj« jz‰j{‰j|‰uh1jŠh²hhjÀh³Nh´Nubj~)�”}”(hX**Definition**:: struct hte_ts_data { u64 tsc; u64 seq; int raw_level; }; **Members** ``tsc`` Timestamp value. ``seq`` Sequence counter of the timestamps. ``raw_level`` Level of the line at the timestamp if provider supports it, -1 otherwise.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jˆ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj³ ubhŒ:”…”�”}”(hj³ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K-hj¯ ubhŒ literal_block”“”)�”}”(hŒDstruct hte_ts_data { u64 tsc; u64 seq; int raw_level; };”h]”hŒDstruct hte_ts_data { u64 tsc; u64 seq; int raw_level; };”…”�”}”hjÒ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÐ h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K/hj¯ ubhþ)�”}”(hŒ **Members**”h]”jˆ)�”}”(hjã h]”hŒMembers”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjá ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K5hj¯ ubjž)�”}”(hhh]”(j£)�”}”(hŒ``tsc`` Timestamp value. ”h]”(j©)�”}”(hŒ``tsc``”h]”jG)�”}”(hj!h]”hŒtsc”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K,hjü ubjÃ)�”}”(hhh]”hþ)�”}”(hŒTimestamp value.”h]”hŒTimestamp value.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j!h´K,hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjü ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j!h´K,hjù ubj£)�”}”(hŒ,``seq`` Sequence counter of the timestamps. ”h]”(j©)�”}”(hŒ``seq``”h]”jG)�”}”(hj;!h]”hŒseq”…”�”}”(hj=!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj9!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K-hj5!ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ#Sequence counter of the timestamps.”h]”hŒ#Sequence counter of the timestamps.”…”�”}”(hjT!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jP!h´K-hjQ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj5!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jP!h´K-hjù ubj£)�”}”(hŒW``raw_level`` Level of the line at the timestamp if provider supports it, -1 otherwise.”h]”(j©)�”}”(hŒ ``raw_level``”h]”jG)�”}”(hjt!h]”hŒ raw_level”…”�”}”(hjv!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjr!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K.hjn!ubjÃ)�”}”(hhh]”hþ)�”}”(hŒILevel of the line at the timestamp if provider supports it, -1 otherwise.”h]”hŒILevel of the line at the timestamp if provider supports it, -1 otherwise.”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j‰!h´K.hjŠ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjn!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j‰!h´K.hjù ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¯ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hjÀh²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_clk_info (C struct)”Œc.hte_clk_info”hNt”auh1jyhjÀh²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒ hte_clk_info”h]”j–)�”}”(hŒstruct hte_clk_info”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjÍ!h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÉ!h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K5ubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ!h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjÉ!h²hh³jÚ!h´K5ubj¿)�”}”(hŒ hte_clk_info”h]”jÅ)�”}”(hjÇ!h]”hŒ hte_clk_info”…”�”}”(hjí!h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjé!ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hjÉ!h²hh³jÚ!h´K5ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhjÅ!h²hh³jÚ!h´K5ubah}”(h]”jÀ!ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³jÚ!h´K5hjÂ!h²hubjW)�”}”(hhh]”hþ)�”}”(hŒ6Clock source info that HTE provider uses to timestamp.”h]”hŒ6Clock source info that HTE provider uses to timestamp.”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K7hj "h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjÂ!h²hh³jÚ!h´K5ubeh}”(h]”h ]”(j<Œstruct”eh"]”h$]”h&]”jwj<jxj'"jyj'"jz‰j{‰j|‰uh1jŠh²hhjÀh³Nh´Nubj~)�”}”(hŒÆ**Definition**:: struct hte_clk_info { u64 hz; clockid_t type; }; **Members** ``hz`` Supported clock rate in HZ, for example 1KHz clock = 1000. ``type`` Supported clock type.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jˆ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj3"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj/"ubhŒ:”…”�”}”(hj/"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K;hj+"ubjÑ )�”}”(hŒ8struct hte_clk_info { u64 hz; clockid_t type; };”h]”hŒ8struct hte_clk_info { u64 hz; clockid_t type; };”…”�”}”hjL"sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÐ h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K=hj+"ubhþ)�”}”(hŒ **Members**”h]”jˆ)�”}”(hj]"h]”hŒMembers”…”�”}”(hj_"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj["ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KBhj+"ubjž)�”}”(hhh]”(j£)�”}”(hŒB``hz`` Supported clock rate in HZ, for example 1KHz clock = 1000. ”h]”(j©)�”}”(hŒ``hz``”h]”jG)�”}”(hj|"h]”hŒhz”…”�”}”(hj~"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjz"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K:hjv"ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ:Supported clock rate in HZ, for example 1KHz clock = 1000.”h]”hŒ:Supported clock rate in HZ, for example 1KHz clock = 1000.”…”�”}”(hj•"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j‘"h´K:hj’"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjv"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j‘"h´K:hjs"ubj£)�”}”(hŒ``type`` Supported clock type.”h]”(j©)�”}”(hŒ``type``”h]”jG)�”}”(hjµ"h]”hŒtype”…”�”}”(hj·"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj³"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K:hj¯"ubjÃ)�”}”(hhh]”hþ)�”}”(hŒSupported clock type.”h]”hŒSupported clock type.”…”�”}”(hjÎ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K;hjË"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¯"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jÊ"h´K:hjs"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hj+"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hjÀh²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_ts_cb_t (C macro)”Œ c.hte_ts_cb_t”hNt”auh1jyhjÀh²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒ hte_ts_cb_t”h]”j–)�”}”(hŒ hte_ts_cb_t”h]”j¿)�”}”(hŒ hte_ts_cb_t”h]”jÅ)�”}”(hj #h]”hŒ hte_ts_cb_t”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj#ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hj #h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KBubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhj#h²hh³j&#h´KBubah}”(h]”j#ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³j&#h´KBhj#h²hubjW)�”}”(hhh]”hþ)�”}”(hŒ<**Typedef**: HTE timestamp data processing primary callback.”h]”(jˆ)�”}”(hŒ **Typedef**”h]”hŒTypedef”…”�”}”(hj:#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj6#ubhŒ1: HTE timestamp data processing primary callback.”…”�”}”(hj6#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KDhj3#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhj#h²hh³j&#h´KBubeh}”(h]”h ]”(j<Œmacro”eh"]”h$]”h&]”jwj<jxj\#jyj\#jz‰j{‰j|‰uh1jŠh²hhjÀh³Nh´Nubhþ)�”}”(hŒ **Syntax**”h]”jˆ)�”}”(hjb#h]”hŒSyntax”…”�”}”(hjd#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj`#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KGhjÀh²hubhŒ block_quote”“”)�”}”(hŒE``enum hte_return hte_ts_cb_t (struct hte_ts_data *ts, void *data)`` ”h]”hþ)�”}”(hŒD``enum hte_return hte_ts_cb_t (struct hte_ts_data *ts, void *data)``”h]”jG)�”}”(hj€#h]”hŒ@enum hte_return hte_ts_cb_t (struct hte_ts_data *ts, void *data)”…”�”}”(hj‚#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj~#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KIhjz#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jx#h³j•#h´KIhjÀh²hubj~)�”}”(hŒÓ**Parameters** ``struct hte_ts_data *ts`` HW timestamp data. ``void *data`` Client supplied data. **Description** The callback is used to push timestamp data to the client and it is not allowed to sleep.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jˆ)�”}”(hj¢#h]”hŒ Parameters”…”�”}”(hj¤#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj #ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KMhjœ#ubjž)�”}”(hhh]”(j£)�”}”(hŒ.``struct hte_ts_data *ts`` HW timestamp data. ”h]”(j©)�”}”(hŒ``struct hte_ts_data *ts``”h]”jG)�”}”(hjÁ#h]”hŒstruct hte_ts_data *ts”…”�”}”(hjÃ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj¿#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KGhj»#ubjÃ)�”}”(hhh]”hþ)�”}”(hŒHW timestamp data.”h]”hŒHW timestamp data.”…”�”}”(hjÚ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÖ#h´KGhj×#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj»#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jÖ#h´KGhj¸#ubj£)�”}”(hŒ%``void *data`` Client supplied data. ”h]”(j©)�”}”(hŒ``void *data``”h]”jG)�”}”(hjú#h]”hŒ void *data”…”�”}”(hjü#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjø#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KHhjô#ubjÃ)�”}”(hhh]”hþ)�”}”(hŒClient supplied data.”h]”hŒClient supplied data.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j$h´KHhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjô#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j$h´KHhj¸#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœ#ubhþ)�”}”(hŒ**Description**”h]”jˆ)�”}”(hj5$h]”hŒ Description”…”�”}”(hj7$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj3$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KJhjœ#ubhþ)�”}”(hŒYThe callback is used to push timestamp data to the client and it is not allowed to sleep.”h]”hŒYThe callback is used to push timestamp data to the client and it is not allowed to sleep.”…”�”}”(hjK$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KChjœ#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hjÀh²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_ts_sec_cb_t (C macro)”Œc.hte_ts_sec_cb_t”hNt”auh1jyhjÀh²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒhte_ts_sec_cb_t”h]”j–)�”}”(hŒhte_ts_sec_cb_t”h]”j¿)�”}”(hŒhte_ts_sec_cb_t”h]”jÅ)�”}”(hjt$h]”hŒhte_ts_sec_cb_t”…”�”}”(hj~$h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjz$ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hjv$h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KMubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhjr$h²hh³j‘$h´KMubah}”(h]”jm$ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³j‘$h´KMhjo$h²hubjW)�”}”(hhh]”hþ)�”}”(hŒ>**Typedef**: HTE timestamp data processing secondary callback.”h]”(jˆ)�”}”(hŒ **Typedef**”h]”hŒTypedef”…”�”}”(hj¥$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj¡$ubhŒ3: HTE timestamp data processing secondary callback.”…”�”}”(hj¡$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KOhjž$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjo$h²hh³j‘$h´KMubeh}”(h]”h ]”(j<Œmacro”eh"]”h$]”h&]”jwj<jxjÇ$jyjÇ$jz‰j{‰j|‰uh1jŠh²hhjÀh³Nh´Nubhþ)�”}”(hŒ **Syntax**”h]”jˆ)�”}”(hjÍ$h]”hŒSyntax”…”�”}”(hjÏ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjË$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KRhjÀh²hubjy#)�”}”(hŒ1``enum hte_return hte_ts_sec_cb_t (void *data)`` ”h]”hþ)�”}”(hŒ0``enum hte_return hte_ts_sec_cb_t (void *data)``”h]”jG)�”}”(hjé$h]”hŒ,enum hte_return hte_ts_sec_cb_t (void *data)”…”�”}”(hjë$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjç$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KThjã$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jx#h³jþ$h´KThjÀh²hubj~)�”}”(hŒœ**Parameters** ``void *data`` Client supplied data. **Description** This is used when the client needs further processing where it is allowed to sleep.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jˆ)�”}”(hj %h]”hŒ Parameters”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj %ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KXhj%ubjž)�”}”(hhh]”j£)�”}”(hŒ%``void *data`` Client supplied data. ”h]”(j©)�”}”(hŒ``void *data``”h]”jG)�”}”(hj*%h]”hŒ void *data”…”�”}”(hj,%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj(%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KRhj$%ubjÃ)�”}”(hhh]”hþ)�”}”(hŒClient supplied data.”h]”hŒClient supplied data.”…”�”}”(hjC%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j?%h´KRhj@%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj$%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j?%h´KRhj!%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ubhþ)�”}”(hŒ**Description**”h]”jˆ)�”}”(hje%h]”hŒ Description”…”�”}”(hjg%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjc%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KThj%ubhþ)�”}”(hŒSThis is used when the client needs further processing where it is allowed to sleep.”h]”hŒSThis is used when the client needs further processing where it is allowed to sleep.”…”�”}”(hj{%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KNhj%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hjÀh²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_line_attr (C struct)”Œc.hte_line_attr”hNt”auh1jyhjÀh²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒ hte_line_attr”h]”j–)�”}”(hŒstruct hte_line_attr”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjª%h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj¦%h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KTubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸%h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hj¦%h²hh³j·%h´KTubj¿)�”}”(hŒ hte_line_attr”h]”jÅ)�”}”(hj¤%h]”hŒ hte_line_attr”…”�”}”(hjÊ%h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjÆ%ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hj¦%h²hh³j·%h´KTubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhj¢%h²hh³j·%h´KTubah}”(h]”j�%ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³j·%h´KThjŸ%h²hubjW)�”}”(hhh]”hþ)�”}”(hŒLine attributes.”h]”hŒLine attributes.”…”�”}”(hjì%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KXhjé%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjŸ%h²hh³j·%h´KTubeh}”(h]”h ]”(j<Œstruct”eh"]”h$]”h&]”jwj<jxj&jyj&jz‰j{‰j|‰uh1jŠh²hhjÀh³Nh´Nubj~)�”}”(hXÉ**Definition**:: struct hte_line_attr { u32 line_id; void *line_data; unsigned long edge_flags; const char *name; }; **Members** ``line_id`` The logical ID understood by the consumers and providers. ``line_data`` Line data related to line_id. ``edge_flags`` Edge setup flags. ``name`` Descriptive name of the entity that is being monitored for the hardware timestamping. If null, HTE core will construct the name.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jˆ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj &ubhŒ:”…”�”}”(hj &h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K\hj&ubjÑ )�”}”(hŒsstruct hte_line_attr { u32 line_id; void *line_data; unsigned long edge_flags; const char *name; };”h]”hŒsstruct hte_line_attr { u32 line_id; void *line_data; unsigned long edge_flags; const char *name; };”…”�”}”hj)&sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÐ h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K^hj&ubhþ)�”}”(hŒ **Members**”h]”jˆ)�”}”(hj:&h]”hŒMembers”…”�”}”(hj<&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj8&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kehj&ubjž)�”}”(hhh]”(j£)�”}”(hŒF``line_id`` The logical ID understood by the consumers and providers. ”h]”(j©)�”}”(hŒ ``line_id``”h]”jG)�”}”(hjY&h]”hŒline_id”…”�”}”(hj[&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjW&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K[hjS&ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ9The logical ID understood by the consumers and providers.”h]”hŒ9The logical ID understood by the consumers and providers.”…”�”}”(hjr&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jn&h´K[hjo&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjS&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jn&h´K[hjP&ubj£)�”}”(hŒ,``line_data`` Line data related to line_id. ”h]”(j©)�”}”(hŒ ``line_data``”h]”jG)�”}”(hj’&h]”hŒ line_data”…”�”}”(hj”&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj�&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K\hjŒ&ubjÃ)�”}”(hhh]”hþ)�”}”(hŒLine data related to line_id.”h]”hŒLine data related to line_id.”…”�”}”(hj«&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j§&h´K\hj¨&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjŒ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j§&h´K\hjP&ubj£)�”}”(hŒ!``edge_flags`` Edge setup flags. ”h]”(j©)�”}”(hŒ``edge_flags``”h]”jG)�”}”(hjË&h]”hŒ edge_flags”…”�”}”(hjÍ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÉ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K]hjÅ&ubjÃ)�”}”(hhh]”hþ)�”}”(hŒEdge setup flags.”h]”hŒEdge setup flags.”…”�”}”(hjä&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jà&h´K]hjá&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÅ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jà&h´K]hjP&ubj£)�”}”(hŒ‰``name`` Descriptive name of the entity that is being monitored for the hardware timestamping. If null, HTE core will construct the name.”h]”(j©)�”}”(hŒ``name``”h]”jG)�”}”(hj'h]”hŒname”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K^hjþ&ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ€Descriptive name of the entity that is being monitored for the hardware timestamping. If null, HTE core will construct the name.”h]”hŒ€Descriptive name of the entity that is being monitored for the hardware timestamping. If null, HTE core will construct the name.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j'h´K^hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjþ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j'h´K^hjP&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hjÀh²hh³Nh´Nubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_ts_desc (C struct)”Œ c.hte_ts_desc”hNt”auh1jyhjÀh²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒ hte_ts_desc”h]”j–)�”}”(hŒstruct hte_ts_desc”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hj]'h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjY'h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Keubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk'h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjY'h²hh³jj'h´Keubj¿)�”}”(hŒ hte_ts_desc”h]”jÅ)�”}”(hjW'h]”hŒ hte_ts_desc”…”�”}”(hj}'h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjy'ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hjY'h²hh³jj'h´Keubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhjU'h²hh³jj'h´Keubah}”(h]”jP'ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³jj'h´KehjR'h²hubjW)�”}”(hhh]”hþ)�”}”(hŒHTE timestamp descriptor.”h]”hŒHTE timestamp descriptor.”…”�”}”(hjŸ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kihjœ'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjR'h²hh³jj'h´Keubeh}”(h]”h ]”(j<Œstruct”eh"]”h$]”h&]”jwj<jxj·'jyj·'jz‰j{‰j|‰uh1jŠh²hhjÀh³Nh´Nubj~)�”}”(hŒÒ**Definition**:: struct hte_ts_desc { struct hte_line_attr attr; void *hte_data; }; **Members** ``attr`` The line attributes. ``hte_data`` Subsystem's private data, set by HTE subsystem.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jˆ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÃ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj¿'ubhŒ:”…”�”}”(hj¿'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kmhj»'ubjÑ )�”}”(hŒJstruct hte_ts_desc { struct hte_line_attr attr; void *hte_data; };”h]”hŒJstruct hte_ts_desc { struct hte_line_attr attr; void *hte_data; };”…”�”}”hjÜ'sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÐ h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kohj»'ubhþ)�”}”(hŒ **Members**”h]”jˆ)�”}”(hjí'h]”hŒMembers”…”�”}”(hjï'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjë'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kthj»'ubjž)�”}”(hhh]”(j£)�”}”(hŒ``attr`` The line attributes. ”h]”(j©)�”}”(hŒ``attr``”h]”jG)�”}”(hj (h]”hŒattr”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj (ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kohj(ubjÃ)�”}”(hhh]”hþ)�”}”(hŒThe line attributes.”h]”hŒThe line attributes.”…”�”}”(hj%(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j!(h´Kohj"(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j!(h´Kohj(ubj£)�”}”(hŒ<``hte_data`` Subsystem's private data, set by HTE subsystem.”h]”(j©)�”}”(hŒ ``hte_data``”h]”jG)�”}”(hjE(h]”hŒhte_data”…”�”}”(hjG(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjC(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kohj?(ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ/Subsystem's private data, set by HTE subsystem.”h]”hŒ1Subsystem’s private data, set by HTE subsystem.”…”�”}”(hj^(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kphj[(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj?(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jZ(h´Kohj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hjÀh²hh³Nh´Nubhþ)�”}”(hŒ**Description**”h]”jˆ)�”}”(hjˆ(h]”hŒ Description”…”�”}”(hjŠ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj†(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KshjÀh²hubhþ)�”}”(hŒbThis structure is a communication token between consumers to subsystem and subsystem to providers.”h]”hŒbThis structure is a communication token between consumers to subsystem and subsystem to providers.”…”�”}”(hjž(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KjhjÀh²hubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_ops (C struct)”Œ c.hte_ops”hNt”auh1jyhjÀh²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒhte_ops”h]”j–)�”}”(hŒstruct hte_ops”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjÆ(h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÂ(h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kpubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ(h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjÂ(h²hh³jÓ(h´Kpubj¿)�”}”(hŒhte_ops”h]”jÅ)�”}”(hjÀ(h]”hŒhte_ops”…”�”}”(hjæ(h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjâ(ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hjÂ(h²hh³jÓ(h´Kpubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhj¾(h²hh³jÓ(h´Kpubah}”(h]”j¹(ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³jÓ(h´Kphj»(h²hubjW)�”}”(hhh]”hþ)�”}”(hŒ HTE operations set by providers.”h]”hŒ HTE operations set by providers.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kwhj)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhj»(h²hh³jÓ(h´Kpubeh}”(h]”h ]”(j<Œstruct”eh"]”h$]”h&]”jwj<jxj )jyj )jz‰j{‰j|‰uh1jŠh²hhjÀh³Nh´Nubj~)�”}”(hX**Definition**:: struct hte_ops { int (*request)(struct hte_chip *chip, struct hte_ts_desc *desc, u32 xlated_id); int (*release)(struct hte_chip *chip, struct hte_ts_desc *desc, u32 xlated_id); int (*enable)(struct hte_chip *chip, u32 xlated_id); int (*disable)(struct hte_chip *chip, u32 xlated_id); int (*get_clk_src_info)(struct hte_chip *chip, struct hte_clk_info *ci); }; **Members** ``request`` Hook for requesting a HTE timestamp. Returns 0 on success, non-zero for failures. ``release`` Hook for releasing a HTE timestamp. Returns 0 on success, non-zero for failures. ``enable`` Hook to enable the specified timestamp. Returns 0 on success, non-zero for failures. ``disable`` Hook to disable specified timestamp. Returns 0 on success, non-zero for failures. ``get_clk_src_info`` Hook to get the clock information the provider uses to timestamp. Returns 0 for success and negative error code for failure. On success HTE subsystem fills up provided struct hte_clk_info.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jˆ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj,)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj()ubhŒ:”…”�”}”(hj()h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K{hj$)ubjÑ )�”}”(hX{struct hte_ops { int (*request)(struct hte_chip *chip, struct hte_ts_desc *desc, u32 xlated_id); int (*release)(struct hte_chip *chip, struct hte_ts_desc *desc, u32 xlated_id); int (*enable)(struct hte_chip *chip, u32 xlated_id); int (*disable)(struct hte_chip *chip, u32 xlated_id); int (*get_clk_src_info)(struct hte_chip *chip, struct hte_clk_info *ci); };”h]”hX{struct hte_ops { int (*request)(struct hte_chip *chip, struct hte_ts_desc *desc, u32 xlated_id); int (*release)(struct hte_chip *chip, struct hte_ts_desc *desc, u32 xlated_id); int (*enable)(struct hte_chip *chip, u32 xlated_id); int (*disable)(struct hte_chip *chip, u32 xlated_id); int (*get_clk_src_info)(struct hte_chip *chip, struct hte_clk_info *ci); };”…”�”}”hjE)sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÐ h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K}hj$)ubhþ)�”}”(hŒ **Members**”h]”jˆ)�”}”(hjV)h]”hŒMembers”…”�”}”(hjX)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjT)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K…hj$)ubjž)�”}”(hhh]”(j£)�”}”(hŒ^``request`` Hook for requesting a HTE timestamp. Returns 0 on success, non-zero for failures. ”h]”(j©)�”}”(hŒ ``request``”h]”jG)�”}”(hju)h]”hŒrequest”…”�”}”(hjw)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjs)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K{hjo)ubjÃ)�”}”(hhh]”hþ)�”}”(hŒQHook for requesting a HTE timestamp. Returns 0 on success, non-zero for failures.”h]”hŒQHook for requesting a HTE timestamp. Returns 0 on success, non-zero for failures.”…”�”}”(hjŽ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kzhj‹)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjo)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jŠ)h´K{hjl)ubj£)�”}”(hŒ]``release`` Hook for releasing a HTE timestamp. Returns 0 on success, non-zero for failures. ”h]”(j©)�”}”(hŒ ``release``”h]”jG)�”}”(hj¯)h]”hŒrelease”…”�”}”(hj±)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj­)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K}hj©)ubjÃ)�”}”(hhh]”hþ)�”}”(hŒPHook for releasing a HTE timestamp. Returns 0 on success, non-zero for failures.”h]”hŒPHook for releasing a HTE timestamp. Returns 0 on success, non-zero for failures.”…”�”}”(hjÈ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K|hjÅ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj©)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jÄ)h´K}hjl)ubj£)�”}”(hŒ```enable`` Hook to enable the specified timestamp. Returns 0 on success, non-zero for failures. ”•ž_h]”(j©)�”}”(hŒ ``enable``”h]”jG)�”}”(hjé)h]”hŒenable”…”�”}”(hjë)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjç)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Khjã)ubjÃ)�”}”(hhh]”hþ)�”}”(hŒTHook to enable the specified timestamp. Returns 0 on success, non-zero for failures.”h]”hŒTHook to enable the specified timestamp. Returns 0 on success, non-zero for failures.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K~hjÿ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjã)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jþ)h´Khjl)ubj£)�”}”(hŒ^``disable`` Hook to disable specified timestamp. Returns 0 on success, non-zero for failures. ”h]”(j©)�”}”(hŒ ``disable``”h]”jG)�”}”(hj#*h]”hŒdisable”…”�”}”(hj%*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj!*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K�hj*ubjÃ)�”}”(hhh]”hþ)�”}”(hŒQHook to disable specified timestamp. Returns 0 on success, non-zero for failures.”h]”hŒQHook to disable specified timestamp. Returns 0 on success, non-zero for failures.”…”�”}”(hj<*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K€hj9*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j8*h´K�hjl)ubj£)�”}”(hŒÑ``get_clk_src_info`` Hook to get the clock information the provider uses to timestamp. Returns 0 for success and negative error code for failure. On success HTE subsystem fills up provided struct hte_clk_info.”h]”(j©)�”}”(hŒ``get_clk_src_info``”h]”jG)�”}”(hj]*h]”hŒget_clk_src_info”…”�”}”(hj_*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj[*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KƒhjW*ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ¼Hook to get the clock information the provider uses to timestamp. Returns 0 for success and negative error code for failure. On success HTE subsystem fills up provided struct hte_clk_info.”h]”hŒ¼Hook to get the clock information the provider uses to timestamp. Returns 0 for success and negative error code for failure. On success HTE subsystem fills up provided struct hte_clk_info.”…”�”}”(hjv*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K‚hjs*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjW*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jr*h´Kƒhjl)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hjÀh²hh³Nh´Nubhþ)�”}”(hŒ**Description**”h]”jˆ)�”}”(hj *h]”hŒ Description”…”�”}”(hj¢*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjž*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K‡hjÀh²hubhþ)�”}”(hŒuxlated_id parameter is used to communicate between HTE subsystem and the providers and is translated by the provider.”h]”hŒuxlated_id parameter is used to communicate between HTE subsystem and the providers and is translated by the provider.”…”�”}”(hj¶*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K„hjÀh²hubjz)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j†Œhte_chip (C struct)”Œ c.hte_chip”hNt”auh1jyhjÀh²hh³Nh´Nubj‹)�”}”(hhh]”(j�)�”}”(hŒhte_chip”h]”j–)�”}”(hŒstruct hte_chip”h]”(jê)�”}”(hj h]”hŒstruct”…”�”}”(hjÞ*h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÚ*h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KŠubj®)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì*h²hh³Nh´Nubah}”(h]”h ]”jºah"]”h$]”h&]”uh1j­hjÚ*h²hh³jë*h´KŠubj¿)�”}”(hŒhte_chip”h]”jÅ)�”}”(hjØ*h]”hŒhte_chip”…”�”}”(hjþ*h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjú*ubah}”(h]”h ]”(jØjÙeh"]”h$]”h&]”hÅhÆuh1j¾hjÚ*h²hh³jë*h´KŠubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjHˆuh1j•jIjJhjÖ*h²hh³jë*h´KŠubah}”(h]”jÑ*ah ]”(jNjOeh"]”h$]”h&]”jSˆjT)jUhuh1j�h³jë*h´KŠhjÓ*h²hubjW)�”}”(hhh]”hþ)�”}”(hŒAbstract HTE chip.”h]”hŒAbstract HTE chip.”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K”hj+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjÓ*h²hh³jë*h´KŠubeh}”(h]”h ]”(j<Œstruct”eh"]”h$]”h&]”jwj<jxj8+jyj8+jz‰j{‰j|‰uh1jŠh²hhjÀh³Nh´Nubj~)�”}”(hXñ**Definition**:: struct hte_chip { const char *name; struct device *dev; const struct hte_ops *ops; u32 nlines; int (*xlate_of)(struct hte_chip *gc, const struct of_phandle_args *args, struct hte_ts_desc *desc, u32 *xlated_id); int (*xlate_plat)(struct hte_chip *gc, struct hte_ts_desc *desc, u32 *xlated_id); bool (*match_from_linedata)(const struct hte_chip *chip, const struct hte_ts_desc *hdesc); u8 of_hte_n_cells; struct hte_device *gdev; void *data; }; **Members** ``name`` functional name of the HTE IP block. ``dev`` device providing the HTE. ``ops`` callbacks for this HTE. ``nlines`` number of lines/signals supported by this chip. ``xlate_of`` Callback which translates consumer supplied logical ids to physical ids, return 0 for the success and negative for the failures. It stores (between 0 to **nlines**) in xlated_id parameter for the success. ``xlate_plat`` Same as above but for the consumers with no DT node. ``match_from_linedata`` Match HTE device using the line_data. ``of_hte_n_cells`` Number of cells used to form the HTE specifier. ``gdev`` HTE subsystem abstract device, internal to the HTE subsystem. ``data`` chip specific private data.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jˆ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjD+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj@+ubhŒ:”…”�”}”(hj@+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K˜hj<+ubjÑ )�”}”(hXâstruct hte_chip { const char *name; struct device *dev; const struct hte_ops *ops; u32 nlines; int (*xlate_of)(struct hte_chip *gc, const struct of_phandle_args *args, struct hte_ts_desc *desc, u32 *xlated_id); int (*xlate_plat)(struct hte_chip *gc, struct hte_ts_desc *desc, u32 *xlated_id); bool (*match_from_linedata)(const struct hte_chip *chip, const struct hte_ts_desc *hdesc); u8 of_hte_n_cells; struct hte_device *gdev; void *data; };”h]”hXâstruct hte_chip { const char *name; struct device *dev; const struct hte_ops *ops; u32 nlines; int (*xlate_of)(struct hte_chip *gc, const struct of_phandle_args *args, struct hte_ts_desc *desc, u32 *xlated_id); int (*xlate_plat)(struct hte_chip *gc, struct hte_ts_desc *desc, u32 *xlated_id); bool (*match_from_linedata)(const struct hte_chip *chip, const struct hte_ts_desc *hdesc); u8 of_hte_n_cells; struct hte_device *gdev; void *data; };”…”�”}”hj]+sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÐ h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kšhj<+ubhþ)�”}”(hŒ **Members**”h]”jˆ)�”}”(hjn+h]”hŒMembers”…”�”}”(hjp+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjl+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K§hj<+ubjž)�”}”(hhh]”(j£)�”}”(hŒ.``name`` functional name of the HTE IP block. ”h]”(j©)�”}”(hŒ``name``”h]”jG)�”}”(hj�+h]”hŒname”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj‹+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K—hj‡+ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ$functional name of the HTE IP block.”h]”hŒ$functional name of the HTE IP block.”…”�”}”(hj¦+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¢+h´K—hj£+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj‡+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j¢+h´K—hj„+ubj£)�”}”(hŒ"``dev`` device providing the HTE. ”h]”(j©)�”}”(hŒ``dev``”h]”jG)�”}”(hjÆ+h]”hŒdev”…”�”}”(hjÈ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÄ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K˜hjÀ+ubjÃ)�”}”(hhh]”hþ)�”}”(hŒdevice providing the HTE.”h]”hŒdevice providing the HTE.”…”�”}”(hjß+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÛ+h´K˜hjÜ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÀ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jÛ+h´K˜hj„+ubj£)�”}”(hŒ ``ops`` callbacks for this HTE. ”h]”(j©)�”}”(hŒ``ops``”h]”jG)�”}”(hjÿ+h]”hŒops”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjý+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K™hjù+ubjÃ)�”}”(hhh]”hþ)�”}”(hŒcallbacks for this HTE.”h]”hŒcallbacks for this HTE.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j,h´K™hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjù+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j,h´K™hj„+ubj£)�”}”(hŒ;``nlines`` number of lines/signals supported by this chip. ”h]”(j©)�”}”(hŒ ``nlines``”h]”jG)�”}”(hj8,h]”hŒnlines”…”�”}”(hj:,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj6,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kšhj2,ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ/number of lines/signals supported by this chip.”h]”hŒ/number of lines/signals supported by this chip.”…”�”}”(hjQ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jM,h´KšhjN,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj2,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jM,h´Kšhj„+ubj£)�”}”(hŒÚ``xlate_of`` Callback which translates consumer supplied logical ids to physical ids, return 0 for the success and negative for the failures. It stores (between 0 to **nlines**) in xlated_id parameter for the success. ”h]”(j©)�”}”(hŒ ``xlate_of``”h]”jG)�”}”(hjq,h]”hŒxlate_of”…”�”}”(hjs,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjo,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K�hjk,ubjÃ)�”}”(hhh]”hþ)�”}”(hŒÌCallback which translates consumer supplied logical ids to physical ids, return 0 for the success and negative for the failures. It stores (between 0 to **nlines**) in xlated_id parameter for the success.”h]”(hŒ™Callback which translates consumer supplied logical ids to physical ids, return 0 for the success and negative for the failures. It stores (between 0 to ”…”�”}”(hjŠ,h²hh³Nh´Nubjˆ)�”}”(hŒ **nlines**”h]”hŒnlines”…”�”}”(hj’,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjŠ,ubhŒ)) in xlated_id parameter for the success.”…”�”}”(hjŠ,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K›hj‡,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjk,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j†,h´K�hj„+ubj£)�”}”(hŒD``xlate_plat`` Same as above but for the consumers with no DT node. ”h]”(j©)�”}”(hŒ``xlate_plat``”h]”jG)�”}”(hj½,h]”hŒ xlate_plat”…”�”}”(hj¿,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj»,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´Kžhj·,ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ4Same as above but for the consumers with no DT node.”h]”hŒ4Same as above but for the consumers with no DT node.”…”�”}”(hjÖ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÒ,h´KžhjÓ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj·,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jÒ,h´Kžhj„+ubj£)�”}”(hŒ>``match_from_linedata`` Match HTE device using the line_data. ”h]”(j©)�”}”(hŒ``match_from_linedata``”h]”jG)�”}”(hjö,h]”hŒmatch_from_linedata”…”�”}”(hjø,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjô,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´KŸhjð,ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ%Match HTE device using the line_data.”h]”hŒ%Match HTE device using the line_data.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j -h´KŸhj -ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjð,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j -h´KŸhj„+ubj£)�”}”(hŒC``of_hte_n_cells`` Number of cells used to form the HTE specifier. ”h]”(j©)�”}”(hŒ``of_hte_n_cells``”h]”jG)�”}”(hj/-h]”hŒof_hte_n_cells”…”�”}”(hj1-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj--ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K hj)-ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ/Number of cells used to form the HTE specifier.”h]”hŒ/Number of cells used to form the HTE specifier.”…”�”}”(hjH-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jD-h´K hjE-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj)-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³jD-h´K hj„+ubj£)�”}”(hŒG``gdev`` HTE subsystem abstract device, internal to the HTE subsystem. ”h]”(j©)�”}”(hŒ``gdev``”h]”jG)�”}”(hjh-h]”hŒgdev”…”�”}”(hjj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjf-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K¡hjb-ubjÃ)�”}”(hhh]”hþ)�”}”(hŒ=HTE subsystem abstract device, internal to the HTE subsystem.”h]”hŒ=HTE subsystem abstract device, internal to the HTE subsystem.”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j}-h´K¡hj~-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjb-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j}-h´K¡hj„+ubj£)�”}”(hŒ$``data`` chip specific private data.”h]”(j©)�”}”(hŒ``data``”h]”jG)�”}”(hj¡-h]”hŒdata”…”�”}”(hj£-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjŸ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K¡hj›-ubjÃ)�”}”(hhh]”hþ)�”}”(hŒchip specific private data.”h]”hŒchip specific private data.”…”�”}”(hjº-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/hte/hte:38: ./include/linux/hte.h”h´K¢hj·-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj›-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢h³j¶-h´K¡hj„+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j}hjÀh²hh³Nh´Nubeh}”(h]”Œ#the-hte-framework-public-structures”ah ]”h"]”Œ#the hte framework public structures”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K%ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒMore on the HTE timestamp data”h]”hŒMore on the HTE timestamp data”…”�”}”(hjí-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjê-h²hh³hÇh´K)ubhþ)�”}”(hŒï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::”h]”(hŒThe ”…”�”}”(hjû-h²hh³Nh´NubjG)�”}”(hŒ``struct hte_ts_data``”h]”hŒstruct hte_ts_data”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjû-ubhŒÔ 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:”…”�”}”(hjû-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K*hjê-h²hubjÑ )�”}”(hX¨- 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.”h]”hX¨- 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.”…”�”}”hj.sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÐ h³hÇh´K/hjê-h²hubeh}”(h]”Œmore-on-the-hte-timestamp-data”ah ]”h"]”Œmore on the hte timestamp data”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K)ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ HTE subsystem debugfs attributes”h]”hŒ HTE subsystem debugfs attributes”…”�”}”(hj4.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj1.h²hh³hÇh´K:ubhþ)�”}”(hŒåHTE subsystem creates debugfs attributes at ``/sys/kernel/debug/hte/``. It also creates line/signal-related debugfs attributes at ``/sys/kernel/debug/hte//