€•Œ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/surface_aggregator/internal-api”Œ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/surface_aggregator/internal-api”Œ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/surface_aggregator/internal-api”Œ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/surface_aggregator/internal-api”Œ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/surface_aggregator/internal-api”Œ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/surface_aggregator/internal-api”Œ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/surface_aggregator/internal-api”Œ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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒInternal API Documentation”h]”hŒInternal API Documentation”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œid1”uh1hÍhhÊh²hh³hÇh´KubhŒtopic”“”)�”}”(hŒ Contents ”h]”(hÎ)�”}”(hŒContents”h]”hŒContents”…”�”}”(hhåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhháh³hÇh´K ubhŒ bullet_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hhh]”(hŒ paragraph”“”)�”}”(hhh]”hŒ reference”“”)�”}”(hhh]”hŒInternal API Documentation”…”�”}”(hjh²hh³Nh´Nubah}”(h]”hÞah ]”h"]”h$]”h&]”Œrefid”Œinternal-api-documentation”uh1jhhÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhhúubhô)�”}”(hhh]”(hù)�”}”(hhh]”hþ)�”}”(hhh]”j)�”}”(hhh]”hŒPacket Transport Layer”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”Œrefid”Œpacket-transport-layer”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjubah}”(h]”h ]”h"]”h$]”h&]”uh1høhjubhù)�”}”(hhh]”hþ)�”}”(hhh]”j)�”}”(hhh]”hŒRequest Transport Layer”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”Œrefid”Œrequest-transport-layer”uh1jhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhjubhù)�”}”(hhh]”hþ)�”}”(hhh]”j)�”}”(hhh]”hŒ Controller”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”Œrefid”Œ controller”uh1jhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhjubhù)�”}”(hhh]”hþ)�”}”(hhh]”j)�”}”(hhh]”hŒClient Device Bus”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”Œrefid”Œclient-device-bus”uh1jhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhjubhù)�”}”(hhh]”hþ)�”}”(hhh]”j)�”}”(hhh]”hŒCore”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”Œrefid”Œcore”uh1jhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhjubhù)�”}”(hhh]”hþ)�”}”(hhh]”j)�”}”(hhh]”hŒ Trace Helpers”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”Œid7”ah ]”h"]”h$]”h&]”Œrefid”Œ trace-helpers”uh1jhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1høhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hóhhúubeh}”(h]”h ]”h"]”h$]”h&]”uh1høhhõubah}”(h]”h ]”h"]”h$]”h&]”uh1hóhháh²hh³Nh´Nubeh}”(h]”Œcontents”ah ]”Œcontents”ah"]”Œcontents”ah$]”h&]”uh1hßh³hÇh´K hhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒPacket Transport Layer”h]”hŒPacket Transport Layer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝj+uh1hÍhjh²hh³hÇh´K ubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œsshp_buf (C struct)”Œ c.sshp_buf”hNt”auh1jhjh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒsshp_buf”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct sshp_buf”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j6hj2h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jHhj2h²hh³jGh´KubhŒ desc_name”“”)�”}”(hŒsshp_buf”h]”hŒ desc_sig_name”“”)�”}”(hj.h]”hŒsshp_buf”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j_hj[ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jYhj2h²hh³jGh´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1j0Œsphinx_line_type”Œ declarator”hj,h²hh³jGh´Kubah}”(h]”j#ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j*h³jGh´Khj'h²hubhŒ desc_content”“”)�”}”(hhh]”hþ)�”}”(hŒParser buffer for SSH messages.”h]”hŒParser buffer for SSH messages.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´Khj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj'h²hh³jGh´Kubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”j¨Œobjtype”j©Œdesctype”j©Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j%h²hhjh³Nh´NubhŒ container”“”)�”}”(hŒ÷**Definition**:: struct sshp_buf { u8 *ptr; size_t len; size_t cap; }; **Members** ``ptr`` Pointer to the beginning of the buffer. ``len`` Number of bytes used in the buffer. ``cap`` Maximum capacity of the buffer.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(hŒstrong”“”)�”}”(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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KhjµubhŒ literal_block”“”)�”}”(hŒAstruct sshp_buf { u8 *ptr; size_t len; size_t cap; };”h]”hŒAstruct sshp_buf { u8 *ptr; size_t len; size_t cap; };”…”�”}”hjÚsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´Khjµ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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KhjµubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ0``ptr`` Pointer to the beginning of the buffer. ”h]”(hŒterm”“”)�”}”(hŒ``ptr``”h]”hŒliteral”“”)�”}”(hjh]”hŒptr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KhjubhŒ definition”“”)�”}”(hhh]”hþ)�”}”(hŒ'Pointer to the beginning of the buffer.”h]”hŒ'Pointer to the beginning of the buffer.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j'h´Khj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j'h´Khjubj)�”}”(hŒ,``len`` Number of bytes used in the buffer. ”h]”(j )�”}”(hŒ``len``”h]”j)�”}”(hjMh]”hŒlen”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KhjGubj))�”}”(hhh]”hþ)�”}”(hŒ#Number of bytes used in the buffer.”h]”hŒ#Number of bytes used in the buffer.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jbh´Khjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jbh´Khjubj)�”}”(hŒ'``cap`` Maximum capacity of the buffer.”h]”(j )�”}”(hŒ``cap``”h]”j)�”}”(hj†h]”hŒcap”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´Khj€ubj))�”}”(hhh]”hþ)�”}”(hŒMaximum capacity of the buffer.”h]”hŒMaximum capacity of the buffer.”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´Khjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j›h´Khjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjµubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œsshp_buf_init (C function)”Œc.sshp_buf_init”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ>void sshp_buf_init (struct sshp_buf *buf, u8 *ptr, size_t cap)”h]”j1)�”}”(hŒ=void sshp_buf_init(struct sshp_buf *buf, u8 *ptr, size_t cap)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jàhjÜh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÜh²hh³jñh´KubjZ)�”}”(hŒ sshp_buf_init”h]”j`)�”}”(hŒ sshp_buf_init”h]”hŒ sshp_buf_init”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÜh²hh³jñh´KubhŒdesc_parameterlist”“”)�”}”(hŒ+(struct sshp_buf *buf, u8 *ptr, size_t cap)”h]”(hŒdesc_parameter”“”)�”}”(hŒstruct sshp_buf *buf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj ubh)�”}”(hhh]”j`)�”}”(hŒsshp_buf”h]”hŒsshp_buf”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”Œ identifier”Œ reftarget”jDŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”j]Œ ASTIdentifier”“”)�”}”jXjsbŒc.sshp_buf_init”†”asbuh1hhj ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jxhj ubj`)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubj)�”}”(hŒu8 *ptr”h]”(h)�”}”(hhh]”j`)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j§Œmodname”NŒ classname”Nj\j_)�”}”jb]”jfŒc.sshp_buf_init”†”asbuh1hhjžubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjžubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjžubj`)�”}”(hŒptr”h]”hŒptr”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubj)�”}”(hŒ size_t cap”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jüŒmodname”NŒ classname”Nj\j_)�”}”jb]”jfŒc.sshp_buf_init”†”asbuh1hhjóubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjóubj`)�”}”(hŒcap”h]”hŒcap”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÜh²hh³jñh´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjØh²hh³jñh´Kubah}”(h]”jÓah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jñh´KhjÕh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒInitialize a SSH parser buffer.”h]”hŒInitialize a SSH parser buffer.”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KhjMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÕh²hh³jñh´Kubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jhj¯jhj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX/**Parameters** ``struct sshp_buf *buf`` The buffer to initialize. ``u8 *ptr`` The memory backing the buffer. ``size_t cap`` The length of the memory backing the buffer, i.e. its capacity. **Description** Initializes the buffer with the given memory as backing and set its used length to zero.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjrh]”hŒ Parameters”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K#hjlubj)�”}”(hhh]”(j)�”}”(hŒ3``struct sshp_buf *buf`` The buffer to initialize. ”h]”(j )�”}”(hŒ``struct sshp_buf *buf``”h]”j)�”}”(hj‘h]”hŒstruct sshp_buf *buf”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K hj‹ubj))�”}”(hhh]”hþ)�”}”(hŒThe buffer to initialize.”h]”hŒThe buffer to initialize.”…”�”}”(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&]”uh1jh³j¦h´K hjˆubj)�”}”(hŒ+``u8 *ptr`` The memory backing the buffer. ”h]”(j )�”}”(hŒ ``u8 *ptr``”h]”j)�”}”(hjÊh]”hŒu8 *ptr”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K!hjÄubj))�”}”(hhh]”hþ)�”}”(hŒThe memory backing the buffer.”h]”hŒThe memory backing the buffer.”…”�”}”(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&]”uh1jh³jßh´K!hjˆubj)�”}”(hŒO``size_t cap`` The length of the memory backing the buffer, i.e. its capacity. ”h]”(j )�”}”(hŒ``size_t cap``”h]”j)�”}”(hjh]”hŒ size_t cap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K"hjýubj))�”}”(hhh]”hþ)�”}”(hŒ?The length of the memory backing the buffer, i.e. its capacity.”h]”hŒ?The length of the memory backing the buffer, i.e. its capacity.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´K"hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´K"hjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubhþ)�”}”(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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K$hjlubhþ)�”}”(hŒXInitializes the buffer with the given memory as backing and set its used length to zero.”h]”hŒXInitializes the buffer with the given memory as backing and set its used length to zero.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K#hjlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œsshp_buf_alloc (C function)”Œc.sshp_buf_alloc”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒBint sshp_buf_alloc (struct sshp_buf *buf, size_t cap, gfp_t flags)”h]”j1)�”}”(hŒAint sshp_buf_alloc(struct sshp_buf *buf, size_t cap, gfp_t flags)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K/ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjh²hh³j‘h´K/ubjZ)�”}”(hŒsshp_buf_alloc”h]”j`)�”}”(hŒsshp_buf_alloc”h]”hŒsshp_buf_alloc”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjh²hh³j‘h´K/ubj)�”}”(hŒ/(struct sshp_buf *buf, size_t cap, gfp_t flags)”h]”(j)�”}”(hŒstruct sshp_buf *buf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj¼ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¼ubh)�”}”(hhh]”j`)�”}”(hŒsshp_buf”h]”hŒsshp_buf”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jàŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj¦sbŒc.sshp_buf_alloc”†”asbuh1hhj¼ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¼ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj¼ubj`)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¸ubj)�”}”(hŒ size_t cap”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j7Œmodname”NŒ classname”Nj\j_)�”}”jb]”júŒc.sshp_buf_alloc”†”asbuh1hhj.ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj.ubj`)�”}”(hŒcap”h]”hŒcap”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¸ubj)�”}”(hŒ gfp_t flags”h]”(h)�”}”(hhh]”j`)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jŒmodname”NŒ classname”Nj\j_)�”}”jb]”júŒc.sshp_buf_alloc”†”asbuh1hhjvubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjvubj`)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjh²hh³j‘h´K/ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj{h²hh³j‘h´K/ubah}”(h]”jvah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j‘h´K/hjxh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ,Allocate and initialize a SSH parser buffer.”h]”hŒ,Allocate and initialize a SSH parser buffer.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K/hjÐh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjxh²hh³j‘h´K/ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jëj¯jëj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX~**Parameters** ``struct sshp_buf *buf`` The buffer to initialize/allocate to. ``size_t cap`` The desired capacity of the buffer. ``gfp_t flags`` The flags used for allocating the memory. **Description** Allocates **cap** bytes and initializes the provided buffer struct with the allocated memory. **Return** Returns zero on success and ``-ENOMEM`` if allocation failed.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K3hjïubj)�”}”(hhh]”(j)�”}”(hŒ?``struct sshp_buf *buf`` The buffer to initialize/allocate to. ”h]”(j )�”}”(hŒ``struct sshp_buf *buf``”h]”j)�”}”(hjh]”hŒstruct sshp_buf *buf”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K0hjubj))�”}”(hhh]”hþ)�”}”(hŒ%The buffer to initialize/allocate to.”h]”hŒ%The buffer to initialize/allocate to.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j)h´K0hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j)h´K0hj ubj)�”}”(hŒ3``size_t cap`` The desired capacity of the buffer. ”h]”(j )�”}”(hŒ``size_t cap``”h]”j)�”}”(hjMh]”hŒ size_t cap”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K1hjGubj))�”}”(hhh]”hþ)�”}”(hŒ#The desired capacity of the buffer.”h]”hŒ#The desired capacity of the buffer.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jbh´K1hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jbh´K1hj ubj)�”}”(hŒ:``gfp_t flags`` The flags used for allocating the memory. ”h]”(j )�”}”(hŒ``gfp_t flags``”h]”j)�”}”(hj†h]”hŒ gfp_t flags”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K2hj€ubj))�”}”(hhh]”hþ)�”}”(hŒ)The flags used for allocating the memory.”h]”hŒ)The flags used for allocating the memory.”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j›h´K2hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j›h´K2hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjï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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K4hjïubhþ)�”}”(hŒ]Allocates **cap** bytes and initializes the provided buffer struct with the allocated memory.”h]”(hŒ Allocates ”…”�”}”(hj×h²hh³Nh´Nubj¾)�”}”(hŒ**cap**”h]”hŒcap”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj×ubhŒL bytes and initializes the provided buffer struct with the allocated memory.”…”�”}”(hj×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K3hjï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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K6hjïubhþ)�”}”(hŒ=Returns zero on success and ``-ENOMEM`` if allocation failed.”h]”(hŒReturns zero on success and ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ if allocation failed.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K7hjïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œsshp_buf_free (C function)”Œc.sshp_buf_free”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ)void sshp_buf_free (struct sshp_buf *buf)”h]”j1)�”}”(hŒ(void sshp_buf_free(struct sshp_buf *buf)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjM h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KFubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjM h²hh³j_ h´KFubjZ)�”}”(hŒ sshp_buf_free”h]”j`)�”}”(hŒ sshp_buf_free”h]”hŒ sshp_buf_free”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjn ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjM h²hh³j_ h´KFubj)�”}”(hŒ(struct sshp_buf *buf)”h]”j)�”}”(hŒstruct sshp_buf *buf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjŠ ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŠ ubh)�”}”(hhh]”j`)�”}”(hŒsshp_buf”h]”hŒsshp_buf”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj© ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j® Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjt sbŒc.sshp_buf_free”†”asbuh1hhjŠ ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŠ ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjŠ ubj`)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjŠ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj† ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjM h²hh³j_ h´KFubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjI h²hh³j_ h´KFubah}”(h]”jD ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j_ h´KFhjF h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒFree a SSH parser buffer.”h]”hŒFree a SSH parser buffer.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KFhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjF h²hh³j_ h´KFubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j) j¯j) j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX**Parameters** ``struct sshp_buf *buf`` The buffer to free. **Description** Frees a SSH parser buffer by freeing the memory backing it and then resetting its pointer to ``NULL`` and length and capacity to zero. Intended to free a buffer previously allocated with sshp_buf_alloc().”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj3 h]”hŒ Parameters”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj1 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KJhj- ubj)�”}”(hhh]”j)�”}”(hŒ-``struct sshp_buf *buf`` The buffer to free. ”h]”(j )�”}”(hŒ``struct sshp_buf *buf``”h]”j)�”}”(hjR h]”hŒstruct sshp_buf *buf”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KGhjL ubj))�”}”(hhh]”hþ)�”}”(hŒThe buffer to free.”h]”hŒThe buffer to free.”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jg h´KGhjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjL ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jg h´KGhjI ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj- 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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KIhj- ubhþ)�”}”(hŒÌFrees a SSH parser buffer by freeing the memory backing it and then resetting its pointer to ``NULL`` and length and capacity to zero. Intended to free a buffer previously allocated with sshp_buf_alloc().”h]”(hŒ]Frees a SSH parser buffer by freeing the memory backing it and then resetting its pointer to ”…”�”}”(hj£ h²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£ ubhŒg and length and capacity to zero. Intended to free a buffer previously allocated with sshp_buf_alloc().”…”�”}”(hj£ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KHhj- ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œsshp_buf_drop (C function)”Œc.sshp_buf_drop”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ3void sshp_buf_drop (struct sshp_buf *buf, size_t n)”h]”j1)�”}”(hŒ2void sshp_buf_drop(struct sshp_buf *buf, size_t n)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjà h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KVubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjà h²hh³jò h´KVubjZ)�”}”(hŒ sshp_buf_drop”h]”j`)�”}”(hŒ sshp_buf_drop”h]”hŒ sshp_buf_drop”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjà h²hh³jò h´KVubj)�”}”(hŒ (struct sshp_buf *buf, size_t n)”h]”(j)�”}”(hŒstruct sshp_buf *buf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj ubh)�”}”(hhh]”j`)�”}”(hŒsshp_buf”h]”hŒsshp_buf”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj< ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jA Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj sbŒc.sshp_buf_drop”†”asbuh1hhj ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj ubj`)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj ubj)�”}”(hŒsize_t n”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj“ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j˜ Œmodname”NŒ classname”Nj\j_)�”}”jb]”j[ Œc.sshp_buf_drop”†”asbuh1hhj� ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj� ubj`)�”}”(hjkh]”hŒn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj� ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjà h²hh³jò h´KVubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÜ h²hh³jò h´KVubah}”(h]”j× ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jò h´KVhjÙ h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ+Drop data from the beginning of the buffer.”h]”hŒ+Drop data from the beginning of the buffer.”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KVhjè h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÙ h²hh³jò h´KVubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j j¯j j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒñ**Parameters** ``struct sshp_buf *buf`` The buffer to drop data from. ``size_t n`` The number of bytes to drop. **Description** Drops the first **n** bytes from the buffer. Re-aligns any remaining data to the beginning of the buffer.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KZhj ubj)�”}”(hhh]”(j)�”}”(hŒ7``struct sshp_buf *buf`` The buffer to drop data from. ”h]”(j )�”}”(hŒ``struct sshp_buf *buf``”h]”j)�”}”(hj, h]”hŒstruct sshp_buf *buf”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj* ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KWhj& ubj))�”}”(hhh]”hþ)�”}”(hŒThe buffer to drop data from.”h]”hŒThe buffer to drop data from.”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jA h´KWhjB ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj& ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jA h´KWhj# ubj)�”}”(hŒ*``size_t n`` The number of bytes to drop. ”h]”(j )�”}”(hŒ ``size_t n``”h]”j)�”}”(hje h]”hŒsize_t n”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KXhj_ ubj))�”}”(hhh]”hþ)�”}”(hŒThe number of bytes to drop.”h]”hŒThe number of bytes to drop.”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jz h´KXhj{ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj_ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jz h´KXhj# ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj 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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KZhj ubhþ)�”}”(hŒiDrops the first **n** bytes from the buffer. Re-aligns any remaining data to the beginning of the buffer.”h]”(hŒDrops the first ”…”�”}”(hj¶ h²hh³Nh´Nubj¾)�”}”(hŒ**n**”h]”hŒn”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj¶ ubhŒT bytes from the buffer. Re-aligns any remaining data to the beginning of the buffer.”…”�”}”(hj¶ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KYhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ$sshp_buf_read_from_fifo (C function)”Œc.sshp_buf_read_from_fifo”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒIsize_t sshp_buf_read_from_fifo (struct sshp_buf *buf, struct kfifo *fifo)”h]”j1)�”}”(hŒHsize_t sshp_buf_read_from_fifo(struct sshp_buf *buf, struct kfifo *fifo)”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj÷ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jü Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒsshp_buf_read_from_fifo”sbŒc.sshp_buf_read_from_fifo”†”asbuh1hhjó h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KdubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjó h²hh³j h´KdubjZ)�”}”(hŒsshp_buf_read_from_fifo”h]”j`)�”}”(hj h]”hŒsshp_buf_read_from_fifo”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj* ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjó h²hh³j h´Kdubj)�”}”(hŒ*(struct sshp_buf *buf, struct kfifo *fifo)”h]”(j)�”}”(hŒstruct sshp_buf *buf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjE ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjE ubh)�”}”(hhh]”j`)�”}”(hŒsshp_buf”h]”hŒsshp_buf”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjd ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”ji Œmodname”NŒ classname”Nj\j_)�”}”jb]”j Œc.sshp_buf_read_from_fifo”†”asbuh1hhjE ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjE ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjE ubj`)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjE ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjA ubj)�”}”(hŒstruct kfifo *fifo”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjµ ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjµ ubh)�”}”(hhh]”j`)�”}”(hŒkfifo”h]”hŒkfifo”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÔ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÙ Œmodname”NŒ classname”Nj\j_)�”}”jb]”j Œc.sshp_buf_read_from_fifo”†”asbuh1hhjµ ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjµ ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjµ ubj`)�”}”(hŒfifo”h]”hŒfifo”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjµ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjA ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjó h²hh³j h´Kdubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjï h²hh³j h´Kdubah}”(h]”jê ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j h´Kdhjì h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ(Transfer data from a fifo to the buffer.”h]”hŒ(Transfer data from a fifo to the buffer.”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´Kdhj7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjì h²hh³j h´Kdubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jRj¯jRj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hXÄ**Parameters** ``struct sshp_buf *buf`` The buffer to write the data into. ``struct kfifo *fifo`` The fifo to read the data from. **Description** Transfers the data contained in the fifo to the buffer, removing it from the fifo. This function will try to transfer as much data as possible, limited either by the remaining space in the buffer or by the number of bytes available in the fifo. **Return** Returns the number of bytes transferred.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj\h]”hŒ Parameters”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KhhjVubj)�”}”(hhh]”(j)�”}”(hŒ<``struct sshp_buf *buf`` The buffer to write the data into. ”h]”(j )�”}”(hŒ``struct sshp_buf *buf``”h]”j)�”}”(hj{h]”hŒstruct sshp_buf *buf”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´Kehjuubj))�”}”(hhh]”hþ)�”}”(hŒ"The buffer to write the data into.”h]”hŒ"The buffer to write the data into.”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j�h´Kehj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�h´Kehjrubj)�”}”(hŒ7``struct kfifo *fifo`` The fifo to read the data from. ”h]”(j )�”}”(hŒ``struct kfifo *fifo``”h]”j)�”}”(hj´h]”hŒstruct kfifo *fifo”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´Kfhj®ubj))�”}”(hhh]”hþ)�”}”(hŒThe fifo to read the data from.”h]”hŒThe fifo to read the data from.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÉh´KfhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÉh´Kfhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjVubhþ)�”}”(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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KhhjVubhþ)�”}”(hŒôTransfers the data contained in the fifo to the buffer, removing it from the fifo. This function will try to transfer as much data as possible, limited either by the remaining space in the buffer or by the number of bytes available in the fifo.”h]”hŒôTransfers the data contained in the fifo to the buffer, removing it from the fifo. This function will try to transfer as much data as possible, limited either by the remaining space in the buffer or by the number of bytes available in the fifo.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KghjVubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KlhjVubhþ)�”}”(hŒ(Returns the number of bytes transferred.”h]”hŒ(Returns the number of bytes transferred.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´KmhjVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œsshp_buf_span_from (C function)”Œc.sshp_buf_span_from”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒUvoid sshp_buf_span_from (struct sshp_buf *buf, size_t offset, struct ssam_span *span)”h]”j1)�”}”(hŒTvoid sshp_buf_span_from(struct sshp_buf *buf, size_t offset, struct ssam_span *span)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjWh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K{ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjWh²hh³jih´K{ubjZ)�”}”(hŒsshp_buf_span_from”h]”j`)�”}”(hŒsshp_buf_span_from”h]”hŒsshp_buf_span_from”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjxubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjWh²hh³jih´K{ubj)�”}”(hŒ=(struct sshp_buf *buf, size_t offset, struct ssam_span *span)”h]”(j)�”}”(hŒstruct sshp_buf *buf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj”ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj”ubh)�”}”(hhh]”j`)�”}”(hŒsshp_buf”h]”hŒsshp_buf”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¸Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj~sbŒc.sshp_buf_span_from”†”asbuh1hhj”ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj”ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj”ubj`)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj�ubj)�”}”(hŒ size_t offset”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÒŒc.sshp_buf_span_from”†”asbuh1hhjubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjubj`)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj�ubj)�”}”(hŒstruct ssam_span *span”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjNubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjNubh)�”}”(hhh]”j`)�”}”(hŒ ssam_span”h]”hŒ ssam_span”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jrŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÒŒc.sshp_buf_span_from”†”asbuh1hhjNubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjNubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjNubj`)�”}”(hŒspan”h]”hŒspan”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjWh²hh³jih´K{ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjSh²hh³jih´K{ubah}”(h]”jNah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jih´K{hjPh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ3Initialize a span from the given buffer and offset.”h]”hŒ3Initialize a span from the given buffer and offset.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K{hjÐh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjPh²hh³jih´K{ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jëj¯jëj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX‹**Parameters** ``struct sshp_buf *buf`` The buffer to create the span from. ``size_t offset`` The offset in the buffer at which the span should start. ``struct ssam_span *span`` The span to initialize (output). **Description** Initializes the provided span to point to the memory at the given offset in the buffer, with the length of the span being capped by the number of bytes used in the buffer after the offset (i.e. bytes remaining after the offset). Warning: This function does not validate that **offset** is less than or equal to the number of bytes used in the buffer or the buffer capacity. This must be guaranteed by the caller.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´Khjïubj)�”}”(hhh]”(j)�”}”(hŒ=``struct sshp_buf *buf`` The buffer to create the span from. ”h]”(j )�”}”(hŒ``struct sshp_buf *buf``”h]”j)�”}”(hjh]”hŒstruct sshp_buf *buf”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K|hjubj))�”}”(hhh]”hþ)�”}”(hŒ#The buffer to create the span from.”h]”hŒ#The buffer to create the span from.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j)h´K|hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j)h´K|hj ubj)�”}”(hŒK``size_t offset`` The offset in the buffer at which the span should start. ”h]”(j )�”}”(hŒ``size_t offset``”h]”j)�”}”(hjMh]”hŒ size_t offset”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K}hjGubj))�”}”(hhh]”hþ)�”}”(hŒ8The offset in the buffer at which the span should start.”h]”hŒ8The offset in the buffer at which the span should start.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jbh´K}hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jbh´K}hj ubj)�”}”(hŒ<``struct ssam_span *span`` The span to initialize (output). ”h]”(j )�”}”(hŒ``struct ssam_span *span``”h]”j)�”}”(hj†h]”hŒstruct ssam_span *span”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K~hj€ubj))�”}”(hhh]”hþ)�”}”(hŒ The span to initialize (output).”h]”hŒ The span to initialize (output).”…”�”}”(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&]”uh1jh³j›h´K~hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjï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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K€hjïubhþ)�”}”(hŒäInitializes the provided span to point to the memory at the given offset in the buffer, with the length of the span being capped by the number of bytes used in the buffer after the offset (i.e. bytes remaining after the offset).”h]”hŒäInitializes the provided span to point to the memory at the given offset in the buffer, with the length of the span being capped by the number of bytes used in the buffer after the offset (i.e. bytes remaining after the offset).”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´Khjïubhþ)�”}”(hŒ·Warning: This function does not validate that **offset** is less than or equal to the number of bytes used in the buffer or the buffer capacity. This must be guaranteed by the caller.”h]”(hŒ.Warning: This function does not validate that ”…”�”}”(hjæh²hh³Nh´Nubj¾)�”}”(hŒ **offset**”h]”hŒoffset”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjæubhŒ is less than or equal to the number of bytes used in the buffer or the buffer capacity. This must be guaranteed by the caller.”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:14: ./drivers/platform/surface/aggregator/ssh_parser.h”h´K„hjïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œsshp_validate_crc (C function)”Œc.sshp_validate_crc”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒCbool sshp_validate_crc (const struct ssam_span *src, const u8 *crc)”h]”j1)�”}”(hŒBbool sshp_validate_crc(const struct ssam_span *src, const u8 *crc)”h]”(já)�”}”(hŒbool”h]”hŒbool”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj#h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´KubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj#h²hh³j5h´KubjZ)�”}”(hŒsshp_validate_crc”h]”j`)�”}”(hŒsshp_validate_crc”h]”hŒsshp_validate_crc”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjDubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj#h²hh³j5h´Kubj)�”}”(hŒ,(const struct ssam_span *src, const u8 *crc)”h]”(j)�”}”(hŒconst struct ssam_span *src”h]”(j7)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj`ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj`ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj`ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj`ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_span”h]”hŒ ssam_span”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjJsbŒc.sshp_validate_crc”†”asbuh1hhj`ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj`ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj`ubj`)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj\ubj)�”}”(hŒ const u8 *crc”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjîubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjîubh)�”}”(hhh]”j`)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jŒmodname”NŒ classname”Nj\j_)�”}”jb]”jºŒc.sshp_validate_crc”†”asbuh1hhjîubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjîubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjîubj`)�”}”(hŒcrc”h]”hŒcrc”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj\ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj#h²hh³j5h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjh²hh³j5h´Kubah}”(h]”jah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j5h´Khjh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ#Validate a CRC in raw message data.”h]”hŒ#Validate a CRC in raw message data.”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´Khjph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjh²hh³j5h´Kubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j‹j¯j‹j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX **Parameters** ``const struct ssam_span *src`` The span of data over which the CRC should be computed. ``const u8 *crc`` The pointer to the expected u16 CRC value. **Description** Computes the CRC of the provided data span (**src**), compares it to the CRC stored at the given address (**crc**), and returns the result of this comparison, i.e. ``true`` if equal. This function is intended to run on raw input/message data. **Return** Returns ``true`` if the computed CRC matches the stored CRC, ``false`` otherwise.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´Khj�ubj)�”}”(hhh]”(j)�”}”(hŒX``const struct ssam_span *src`` The span of data over which the CRC should be computed. ”h]”(j )�”}”(hŒ``const struct ssam_span *src``”h]”j)�”}”(hj´h]”hŒconst struct ssam_span *src”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´Khj®ubj))�”}”(hhh]”hþ)�”}”(hŒ7The span of data over which the CRC should be computed.”h]”hŒ7The span of data over which the CRC should be computed.”…”�”}”(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&]”uh1jh³jÉh´Khj«ubj)�”}”(hŒ=``const u8 *crc`` The pointer to the expected u16 CRC value. ”h]”(j )�”}”(hŒ``const u8 *crc``”h]”j)�”}”(hjíh]”hŒ const u8 *crc”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´Khjçubj))�”}”(hhh]”hþ)�”}”(hŒ*The pointer to the expected u16 CRC value.”h]”hŒ*The pointer to the expected u16 CRC value.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´Khj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj�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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´Khj�ubhþ)�”}”(hŒòComputes the CRC of the provided data span (**src**), compares it to the CRC stored at the given address (**crc**), and returns the result of this comparison, i.e. ``true`` if equal. This function is intended to run on raw input/message data.”h]”(hŒ,Computes the CRC of the provided data span (”…”�”}”(hj>h²hh³Nh´Nubj¾)�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj>ubhŒ7), compares it to the CRC stored at the given address (”…”�”}”(hj>h²hh³Nh´Nubj¾)�”}”(hŒ**crc**”h]”hŒcrc”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj>ubhŒ3), and returns the result of this comparison, i.e. ”…”�”}”(hj>h²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ubhŒF if equal. This function is intended to run on raw input/message data.”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´Khj�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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´Khj�ubhþ)�”}”(hŒQReturns ``true`` if the computed CRC matches the stored CRC, ``false`` otherwise.”h]”(hŒReturns ”…”�”}”(hj›h²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›ubhŒ- if the computed CRC matches the stored CRC, ”…”�”}”(hj›h²hh³Nh´Nubj)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›ubhŒ otherwise.”…”�”}”(hj›h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´Khj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ!sshp_starts_with_syn (C function)”Œc.sshp_starts_with_syn”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ7bool sshp_starts_with_syn (const struct ssam_span *src)”h]”j1)�”}”(hŒ6bool sshp_starts_with_syn(const struct ssam_span *src)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjêh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K&ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjêh²hh³jûh´K&ubjZ)�”}”(hŒsshp_starts_with_syn”h]”j`)�”}”(hŒsshp_starts_with_syn”h]”hŒsshp_starts_with_syn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjêh²hh³jûh´K&ubj)�”}”(hŒ(const struct ssam_span *src)”h]”j)�”}”(hŒconst struct ssam_span *src”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj&ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj&ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj&ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj&ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_span”h]”hŒ ssam_span”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jeŒmodname”NŒ classname”Nj\j_)�”}”jb•]”je)�”}”jXjsbŒc.sshp_starts_with_syn”†”asbuh1hhj&ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj&ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj&ubj`)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj"ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjêh²hh³jûh´K&ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjæh²hh³jûh´K&ubah}”(h]”jáah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jûh´K&hjãh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ2Check if the given data starts with SSH SYN bytes.”h]”hŒ2Check if the given data starts with SSH SYN bytes.”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K&hjÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjãh²hh³jûh´K&ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jàj¯jàj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒV**Parameters** ``const struct ssam_span *src`` The data span to check the start of.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K*hjäubj)�”}”(hhh]”j)�”}”(hŒD``const struct ssam_span *src`` The data span to check the start of.”h]”(j )�”}”(hŒ``const struct ssam_span *src``”h]”j)�”}”(hj h]”hŒconst struct ssam_span *src”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K,hjubj))�”}”(hhh]”hþ)�”}”(hŒ$The data span to check the start of.”h]”hŒ$The data span to check the start of.”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K'hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´K,hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œsshp_find_syn (C function)”Œc.sshp_find_syn”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒGbool sshp_find_syn (const struct ssam_span *src, struct ssam_span *rem)”h]”j1)�”}”(hŒFbool sshp_find_syn(const struct ssam_span *src, struct ssam_span *rem)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj_h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K/ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj_h²hh³jph´K/ubjZ)�”}”(hŒ sshp_find_syn”h]”j`)�”}”(hŒ sshp_find_syn”h]”hŒ sshp_find_syn”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj_h²hh³jph´K/ubj)�”}”(hŒ4(const struct ssam_span *src, struct ssam_span *rem)”h]”(j)�”}”(hŒconst struct ssam_span *src”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj›ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj›ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj›ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj›ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_span”h]”hŒ ssam_span”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÚŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj…sbŒc.sshp_find_syn”†”asbuh1hhj›ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj›ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj›ubj`)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj—ubj)�”}”(hŒstruct ssam_span *rem”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj(ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj(ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_span”h]”hŒ ssam_span”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jLŒmodname”NŒ classname”Nj\j_)�”}”jb]”jôŒc.sshp_find_syn”†”asbuh1hhj(ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj(ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj(ubj`)�”}”(hŒrem”h]”hŒrem”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj—ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj_h²hh³jph´K/ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj[h²hh³jph´K/ubah}”(h]”jVah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jph´K/hjXh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ*Find SSH SYN bytes in the given data span.”h]”hŒ*Find SSH SYN bytes in the given data span.”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K/hjªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjXh²hh³jph´K/ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jÅj¯jÅj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hXù**Parameters** ``const struct ssam_span *src`` The data span to search in. ``struct ssam_span *rem`` The span (output) indicating the remaining data, starting with SSH SYN bytes, if found. **Description** Search for SSH SYN bytes in the given source span. If found, set the **rem** span to the remaining data, starting with the first SYN bytes and capped by the source span length, and return ``true``. This function does not copy any data, but rather only sets pointers to the respective start addresses and length values. If no SSH SYN bytes could be found, set the **rem** span to the zero-length span at the end of the source span and return ``false``. If partial SSH SYN bytes could be found at the end of the source span, set the **rem** span to cover these partial SYN bytes, capped by the end of the source span, and return ``false``. This function should then be re-run once more data is available. **Return** Returns ``true`` if a complete SSH SYN sequence could be found, ``false`` otherwise.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K3hjÉubj)�”}”(hhh]”(j)�”}”(hŒ<``const struct ssam_span *src`` The data span to search in. ”h]”(j )�”}”(hŒ``const struct ssam_span *src``”h]”j)�”}”(hjîh]”hŒconst struct ssam_span *src”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K0hjèubj))�”}”(hhh]”hþ)�”}”(hŒThe data span to search in.”h]”hŒThe data span to search in.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´K0hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´K0hjåubj)�”}”(hŒr``struct ssam_span *rem`` The span (output) indicating the remaining data, starting with SSH SYN bytes, if found. ”h]”(j )�”}”(hŒ``struct ssam_span *rem``”h]”j)�”}”(hj'h]”hŒstruct ssam_span *rem”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K2hj!ubj))�”}”(hhh]”hþ)�”}”(hŒWThe span (output) indicating the remaining data, starting with SSH SYN bytes, if found.”h]”hŒWThe span (output) indicating the remaining data, starting with SSH SYN bytes, if found.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K1hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j<h´K2hjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hjch]”hŒ Description”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K4hjÉubhþ)�”}”(hX>Search for SSH SYN bytes in the given source span. If found, set the **rem** span to the remaining data, starting with the first SYN bytes and capped by the source span length, and return ``true``. This function does not copy any data, but rather only sets pointers to the respective start addresses and length values.”h]”(hŒESearch for SSH SYN bytes in the given source span. If found, set the ”…”�”}”(hjyh²hh³Nh´Nubj¾)�”}”(hŒ**rem**”h]”hŒrem”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjyubhŒp span to the remaining data, starting with the first SYN bytes and capped by the source span length, and return ”…”�”}”(hjyh²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyubhŒz. This function does not copy any data, but rather only sets pointers to the respective start addresses and length values.”…”�”}”(hjyh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K3hjÉubhþ)�”}”(hŒ„If no SSH SYN bytes could be found, set the **rem** span to the zero-length span at the end of the source span and return ``false``.”h]”(hŒ,If no SSH SYN bytes could be found, set the ”…”�”}”(hj¬h²hh³Nh´Nubj¾)�”}”(hŒ**rem**”h]”hŒrem”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj¬ubhŒG span to the zero-length span at the end of the source span and return ”…”�”}”(hj¬h²hh³Nh´Nubj)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ubhŒ.”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K9hjÉubhþ)�”}”(hŒúIf partial SSH SYN bytes could be found at the end of the source span, set the **rem** span to cover these partial SYN bytes, capped by the end of the source span, and return ``false``. This function should then be re-run once more data is available.”h]”(hŒOIf partial SSH SYN bytes could be found at the end of the source span, set the ”…”�”}”(hjßh²hh³Nh´Nubj¾)�”}”(hŒ**rem**”h]”hŒrem”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjßubhŒY span to cover these partial SYN bytes, capped by the end of the source span, and return ”…”�”}”(hjßh²hh³Nh´Nubj)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßubhŒB. This function should then be re-run once more data is available.”…”�”}”(hjßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjãubj`)�”}”(hŒcommand”h]”hŒcommand”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÇubj)�”}”(hŒstruct ssam_span *command_data”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj` ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj` ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_span”h]”hŒ ssam_span”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j„ Œmodname”NŒ classname”Nj\j_)�”}”jb]”j$Œc.sshp_parse_command”†”asbuh1hhj` ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj` ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj` ubj`)�”}”(hŒ command_data”h]”hŒ command_data”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj` ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÇubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjŽh²hh³j h´K·ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjŠh²hh³j h´K·ubah}”(h]”j…ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j h´K·hj‡h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ Parse SSH command frame payload.”h]”hŒ Parse SSH command frame payload.”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K·hjâ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj‡h²hh³j h´K·ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jý j¯jý j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hXa**Parameters** ``const struct device *dev`` The device used for logging. ``const struct ssam_span *source`` The source to parse from. ``struct ssh_command **command`` The parsed command (output). ``struct ssam_span *command_data`` The parsed command data/payload (output). **Description** Parses and validates a SSH command frame payload. Sets the **command** pointer to the command header and the **command_data** span to the command data (i.e. payload of the command). This will result in a zero-length span if the command does not have any associated data/payload. This function does not check the frame-payload-type field, which should be checked by the caller before calling this function. The **source** parameter should be the complete frame payload, e.g. returned by the sshp_parse_frame() command. This function does not copy any data, but rather only validates the frame payload data and sets pointers (and length values) to indicate the respective parts. **Return** Returns zero on success or ``-ENOMSG`` if **source** does not represent a valid command-type frame payload, i.e. is too short.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K»hj!ubj)�”}”(hhh]”(j)�”}”(hŒ:``const struct device *dev`` The device used for logging. ”h]”(j )�”}”(hŒ``const struct device *dev``”h]”j)�”}”(hj&!h]”hŒconst struct device *dev”…”�”}”(hj(!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K¸hj !ubj))�”}”(hhh]”hþ)�”}”(hŒThe device used for logging.”h]”hŒThe device used for logging.”…”�”}”(hj?!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j;!h´K¸hj``struct ssh_command **command`` The parsed command (output). ”h]”(j )�”}”(hŒ ``struct ssh_command **command``”h]”j)�”}”(hj˜!h]”hŒstruct ssh_command **command”…”�”}”(hjš!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´Kºhj’!ubj))�”}”(hhh]”hþ)�”}”(hŒThe parsed command (output).”h]”hŒThe parsed command (output).”…”�”}”(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&]”uh1jh³j­!h´Kºhj!ubj)�”}”(hŒM``struct ssam_span *command_data`` The parsed command data/payload (output). ”h]”(j )�”}”(hŒ"``struct ssam_span *command_data``”h]”j)�”}”(hjÑ!h]”hŒstruct ssam_span *command_data”…”�”}”(hjÓ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K»hjË!ubj))�”}”(hhh]”hþ)�”}”(hŒ)The parsed command data/payload (output).”h]”hŒ)The parsed command data/payload (output).”…”�”}”(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&]”uh1jh³jæ!h´K»hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj!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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K½hj!ubhþ)�”}”(hX•Parses and validates a SSH command frame payload. Sets the **command** pointer to the command header and the **command_data** span to the command data (i.e. payload of the command). This will result in a zero-length span if the command does not have any associated data/payload. This function does not check the frame-payload-type field, which should be checked by the caller before calling this function.”h]”(hŒ;Parses and validates a SSH command frame payload. Sets the ”…”�”}”(hj""h²hh³Nh´Nubj¾)�”}”(hŒ **command**”h]”hŒcommand”…”�”}”(hj*"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj""ubhŒ' pointer to the command header and the ”…”�”}”(hj""h²hh³Nh´Nubj¾)�”}”(hŒ**command_data**”h]”hŒ command_data”…”�”}”(hj<"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj""ubhX span to the command data (i.e. payload of the command). This will result in a zero-length span if the command does not have any associated data/payload. This function does not check the frame-payload-type field, which should be checked by the caller before calling this function.”…”�”}”(hj""h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´K¼hj!ubhþ)�”}”(hŒoThe **source** parameter should be the complete frame payload, e.g. returned by the sshp_parse_frame() command.”h]”(hŒThe ”…”�”}”(hjU"h²hh³Nh´Nubj¾)�”}”(hŒ **source**”h]”hŒsource”…”�”}”(hj]"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjU"ubhŒa parameter should be the complete frame payload, e.g. returned by the sshp_parse_frame() command.”…”�”}”(hjU"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´KÃhj!ubhþ)�”}”(hŒžThis function does not copy any data, but rather only validates the frame payload data and sets pointers (and length values) to indicate the respective parts.”h]”hŒžThis function does not copy any data, but rather only validates the frame payload data and sets pointers (and length values) to indicate the respective parts.”…”�”}”(hjv"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´KÆ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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´KÊhj!ubhþ)�”}”(hŒ~Returns zero on success or ``-ENOMSG`` if **source** does not represent a valid command-type frame payload, i.e. is too short.”h]”(hŒReturns zero on success or ”…”�”}”(hj�"h²hh³Nh´Nubj)�”}”(hŒ ``-ENOMSG``”h]”hŒ-ENOMSG”…”�”}”(hj¥"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�"ubhŒ if ”…”�”}”(hj�"h²hh³Nh´Nubj¾)�”}”(hŒ **source**”h]”hŒsource”…”�”}”(hj·"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj�"ubhŒJ does not represent a valid command-type frame payload, i.e. is too short.”…”�”}”(hj�"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:17: ./drivers/platform/surface/aggregator/ssh_parser.c”h´KËhj!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œmsgbuf (C struct)”Œc.msgbuf”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒmsgbuf”h]”j1)�”}”(hŒ struct msgbuf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjð"h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjì"h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ"h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjì"h²hh³jý"h´KubjZ)�”}”(hŒmsgbuf”h]”j`)�”}”(hjê"h]”hŒmsgbuf”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj #ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjì"h²hh³jý"h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjè"h²hh³jý"h´Kubah}”(h]”jã"ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jý"h´Khjå"h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ(Buffer struct to construct SSH messages.”h]”hŒ(Buffer struct to construct SSH messages.”…”�”}”(hj2#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´Khj/#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjå"h²hh³jý"h´Kubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®jJ#j¯jJ#j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX<**Definition**:: struct msgbuf { u8 *begin; u8 *end; u8 *ptr; }; **Members** ``begin`` Pointer to the beginning of the allocated buffer space. ``end`` Pointer to the end (one past last element) of the allocated buffer space. ``ptr`` Pointer to the first free element in the buffer.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(j¾)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjV#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjR#ubhŒ:”…”�”}”(hjR#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KhjN#ubjÙ)�”}”(hŒ;struct msgbuf { u8 *begin; u8 *end; u8 *ptr; };”h]”hŒ;struct msgbuf { u8 *begin; u8 *end; u8 *ptr; };”…”�”}”hjo#sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KhjN#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³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KhjN#ubj)�”}”(hhh]”(j)�”}”(hŒB``begin`` Pointer to the beginning of the allocated buffer space. ”h]”(j )�”}”(hŒ ``begin``”h]”j)�”}”(hjŸ#h]”hŒbegin”…”�”}”(hj¡#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´Khj™#ubj))�”}”(hhh]”hþ)�”}”(hŒ7Pointer to the beginning of the allocated buffer space.”h]”hŒ7Pointer to the beginning of the allocated buffer space.”…”�”}”(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&]”uh1jh³j´#h´Khj–#ubj)�”}”(hŒR``end`` Pointer to the end (one past last element) of the allocated buffer space. ”h]”(j )�”}”(hŒ``end``”h]”j)�”}”(hjØ#h]”hŒend”…”�”}”(hjÚ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KhjÒ#ubj))�”}”(hhh]”hþ)�”}”(hŒIPointer to the end (one past last element) of the allocated buffer space.”h]”hŒIPointer to the end (one past last element) of the allocated buffer space.”…”�”}”(hjñ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´Khjî#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÒ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jí#h´Khj–#ubj)�”}”(hŒ8``ptr`` Pointer to the first free element in the buffer.”h]”(j )�”}”(hŒ``ptr``”h]”j)�”}”(hj$h]”hŒptr”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´Khj $ubj))�”}”(hhh]”hþ)�”}”(hŒ0Pointer to the first free element in the buffer.”h]”hŒ0Pointer to the first free element in the buffer.”…”�”}”(hj+$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´Khj($ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj $ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j'$h´Khj–#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjN#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œmsgb_init (C function)”Œ c.msgb_init”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ9void msgb_init (struct msgbuf *msgb, u8 *ptr, size_t cap)”h]”j1)�”}”(hŒ8void msgb_init(struct msgbuf *msgb, u8 *ptr, size_t cap)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjl$h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjh$h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{$h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjh$h²hh³jz$h´KubjZ)�”}”(hŒ msgb_init”h]”j`)�”}”(hŒ msgb_init”h]”hŒ msgb_init”…”�”}”(hj�$h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj‰$ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjh$h²hh³jz$h´Kubj)�”}”(hŒ*(struct msgbuf *msgb, u8 *ptr, size_t cap)”h]”(j)�”}”(hŒstruct msgbuf *msgb”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj©$h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj¥$ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶$h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¥$ubh)�”}”(hhh]”j`)�”}”(hŒmsgbuf”h]”hŒmsgbuf”…”�”}”(hjÇ$h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÄ$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÉ$Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj�$sbŒ c.msgb_init”†”asbuh1hhj¥$ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç$h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¥$ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjõ$h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj¥$ubj`)�”}”(hŒmsgb”h]”hŒmsgb”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¥$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¡$ubj)�”}”(hŒu8 *ptr”h]”(h)�”}”(hhh]”j`)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j %Œmodname”NŒ classname”Nj\j_)�”}”jb]”jã$Œ c.msgb_init”†”asbuh1hhj%ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<%h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj%ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjJ%h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj%ubj`)�”}”(hŒptr”h]”hŒptr”…”�”}”(hjW%h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¡$ubj)�”}”(hŒ size_t cap”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjs%h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjp%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”ju%Œmodname”NŒ classname”Nj\j_)�”}”jb]”jã$Œ c.msgb_init”†”asbuh1hhjl%ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘%h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjl%ubj`)�”}”(hŒcap”h]”hŒcap”…”�”}”(hjŸ%h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjl%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¡$ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjh$h²hh³jz$h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjd$h²hh³jz$h´Kubah}”(h]”j_$ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jz$h´Khja$h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ+Initialize the given message buffer struct.”h]”hŒ+Initialize the given message buffer struct.”…”�”}”(hjÉ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KhjÆ%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hja$h²hh³jz$h´Kubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®já%j¯já%j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX1**Parameters** ``struct msgbuf *msgb`` The buffer struct to initialize ``u8 *ptr`` Pointer to the underlying memory by which the buffer will be backed. ``size_t cap`` Size of the underlying memory. **Description** Initialize the given message buffer struct using the provided memory as backing.”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³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K#hjå%ubj)�”}”(hhh]”(j)�”}”(hŒ8``struct msgbuf *msgb`` The buffer struct to initialize ”h]”(j )�”}”(hŒ``struct msgbuf *msgb``”h]”j)�”}”(hj &h]”hŒstruct msgbuf *msgb”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K hj&ubj))�”}”(hhh]”hþ)�”}”(hŒThe buffer struct to initialize”h]”hŒThe buffer struct to initialize”…”�”}”(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&]”uh1jh³j&h´K hj&ubj)�”}”(hŒQ``u8 *ptr`` Pointer to the underlying memory by which the buffer will be backed. ”h]”(j )�”}”(hŒ ``u8 *ptr``”h]”j)�”}”(hjC&h]”hŒu8 *ptr”…”�”}”(hjE&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K!hj=&ubj))�”}”(hhh]”hþ)�”}”(hŒDPointer to the underlying memory by which the buffer will be backed.”h]”hŒDPointer to the underlying memory by which the buffer will be backed.”…”�”}”(hj\&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jX&h´K!hjY&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj=&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jX&h´K!hj&ubj)�”}”(hŒ.``size_t cap`` Size of the underlying memory. ”h]”(j )�”}”(hŒ``size_t cap``”h]”j)�”}”(hj|&h]”hŒ size_t cap”…”�”}”(hj~&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K"hjv&ubj))�”}”(hhh]”hþ)�”}”(hŒSize of the underlying memory.”h]”hŒSize of the underlying memory.”…”�”}”(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&]”uh1jh³j‘&h´K"hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjå%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³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K$hjå%ubhþ)�”}”(hŒPInitialize the given message buffer struct using the provided memory as backing.”h]”hŒPInitialize the given message buffer struct using the provided memory as backing.”…”�”}”(hjÍ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K#hjå%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œmsgb_bytes_used (C function)”Œc.msgb_bytes_used”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ2size_t msgb_bytes_used (const struct msgbuf *msgb)”h]”j1)�”}”(hŒ1size_t msgb_bytes_used(const struct msgbuf *msgb)”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÿ&h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjü&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j'Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒmsgb_bytes_used”sbŒc.msgb_bytes_used”†”asbuh1hhjø&h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K/ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!'h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjø&h²hh³j 'h´K/ubjZ)�”}”(hŒmsgb_bytes_used”h]”j`)�”}”(hj'h]”hŒmsgb_bytes_used”…”�”}”(hj3'h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj/'ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjø&h²hh³j 'h´K/ubj)�”}”(hŒ(const struct msgbuf *msgb)”h]”j)�”}”(hŒconst struct msgbuf *msgb”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjN'h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjJ'ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj['h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjJ'ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hji'h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjJ'ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv'h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjJ'ubh)�”}”(hhh]”j`)�”}”(hŒmsgbuf”h]”hŒmsgbuf”…”�”}”(hj‡'h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj„'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j‰'Œmodname”NŒ classname”Nj\j_)�”}”jb]”j'Œc.msgb_bytes_used”†”asbuh1hhjJ'ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥'h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjJ'ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj³'h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjJ'ubj`)�”}”(hŒmsgb”h]”hŒmsgb”…”�”}”(hjÀ'h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjJ'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjF'ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjø&h²hh³j 'h´K/ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjô&h²hh³j 'h´K/ubah}”(h]”jï&ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j 'h´K/hjñ&h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ6Return the current number of bytes used in the buffer.”h]”hŒ6Return the current number of bytes used in the buffer.”…”�”}”(hjê'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K/hjç'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjñ&h²hh³j 'h´K/ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j(j¯j(j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒC**Parameters** ``const struct msgbuf *msgb`` The message buffer.”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³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K3hj(ubj)�”}”(hhh]”j)�”}”(hŒ1``const struct msgbuf *msgb`` The message buffer.”h]”(j )�”}”(hŒ``const struct msgbuf *msgb``”h]”j)�”}”(hj+(h]”hŒconst struct msgbuf *msgb”…”�”}”(hj-(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K5hj%(ubj))�”}”(hhh]”hþ)�”}”(hŒThe message buffer.”h]”hŒThe message buffer.”…”�”}”(hjD(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K0hjA(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj%(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j@(h´K5hj"(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œmsgb_push_u16 (C function)”Œc.msgb_push_u16”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ3void msgb_push_u16 (struct msgbuf *msgb, u16 value)”h]”j1)�”}”(hŒ2void msgb_push_u16(struct msgbuf *msgb, u16 value)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj…(h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj�(h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KDubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”(h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj�(h²hh³j“(h´KDubjZ)�”}”(hŒ msgb_push_u16”h]”j`)�”}”(hŒ msgb_push_u16”h]”hŒ msgb_push_u16”…”�”}”(hj¦(h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¢(ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj�(h²hh³j“(h´KDubj)�”}”(hŒ (struct msgbuf *msgb, u16 value)”h]”(j)�”}”(hŒstruct msgbuf *msgb”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÂ(h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj¾(ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ(h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¾(ubh)�”}”(hhh]”j`)�”}”(hŒmsgbuf”h]”hŒmsgbuf”…”�”}”(hjà(h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÝ(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jâ(Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj¨(sbŒc.msgb_push_u16”†”asbuh1hhj¾(ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¾(ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj¾(ubj`)�”}”(hŒmsgb”h]”hŒmsgb”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¾(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjº(ubj)�”}”(hŒ u16 value”h]”(h)�”}”(hhh]”j`)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj7)h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj4)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j9)Œmodname”NŒ classname”Nj\j_)�”}”jb]”jü(Œc.msgb_push_u16”†”asbuh1hhj0)ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU)h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj0)ubj`)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjc)h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj0)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjº(ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj�(h²hh³j“(h´KDubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj}(h²hh³j“(h´KDubah}”(h]”jx(ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j“(h´KDhjz(h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒPush a u16 value to the buffer.”h]”hŒPush a u16 value to the buffer.”…”�”}”(hj�)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KDhjŠ)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjz(h²hh³j“(h´KDubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”•j­j¨j®j¥)j¯j¥)j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒo**Parameters** ``struct msgbuf *msgb`` The message buffer. ``u16 value`` The value to push to the buffer.”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³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KHhj©)ubj)�”}”(hhh]”(j)�”}”(hŒ,``struct msgbuf *msgb`` The message buffer. ”h]”(j )�”}”(hŒ``struct msgbuf *msgb``”h]”j)�”}”(hjÎ)h]”hŒstruct msgbuf *msgb”…”�”}”(hjÐ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KEhjÈ)ubj))�”}”(hhh]”hþ)�”}”(hŒThe message buffer.”h]”hŒThe message buffer.”…”�”}”(hjç)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jã)h´KEhjä)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÈ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jã)h´KEhjÅ)ubj)�”}”(hŒ.``u16 value`` The value to push to the buffer.”h]”(j )�”}”(hŒ ``u16 value``”h]”j)�”}”(hj*h]”hŒ u16 value”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KGhj*ubj))�”}”(hhh]”hþ)�”}”(hŒ The value to push to the buffer.”h]”hŒ The value to push to the buffer.”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KFhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j*h´KGhjÅ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj©)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œmsgb_push_syn (C function)”Œc.msgb_push_syn”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ(void msgb_push_syn (struct msgbuf *msgb)”h]”j1)�”}”(hŒ'void msgb_push_syn(struct msgbuf *msgb)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hja*h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj]*h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KQubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp*h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj]*h²hh³jo*h´KQubjZ)�”}”(hŒ msgb_push_syn”h]”j`)�”}”(hŒ msgb_push_syn”h]”hŒ msgb_push_syn”…”�”}”(hj‚*h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj~*ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj]*h²hh³jo*h´KQubj)�”}”(hŒ(struct msgbuf *msgb)”h]”j)�”}”(hŒstruct msgbuf *msgb”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjž*h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjš*ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«*h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjš*ubh)�”}”(hhh]”j`)�”}”(hŒmsgbuf”h]”hŒmsgbuf”…”�”}”(hj¼*h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¹*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¾*Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj„*sbŒc.msgb_push_syn”†”asbuh1hhjš*ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ*h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjš*ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjê*h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjš*ubj`)�”}”(hŒmsgb”h]”hŒmsgb”…”�”}”(hj÷*h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjš*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj–*ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj]*h²hh³jo*h´KQubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjY*h²hh³jo*h´KQubah}”(h]”jT*ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jo*h´KQhjV*h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ!Push SSH SYN bytes to the buffer.”h]”hŒ!Push SSH SYN bytes to the buffer.”…”�”}”(hj!+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KQhj+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjV*h²hh³jo*h´KQubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j9+j¯j9+j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒ=**Parameters** ``struct msgbuf *msgb`` The message buffer.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjC+h]”hŒ Parameters”…”�”}”(hjE+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjA+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KUhj=+ubj)�”}”(hhh]”j)�”}”(hŒ+``struct msgbuf *msgb`` The message buffer.”h]”(j )�”}”(hŒ``struct msgbuf *msgb``”h]”j)�”}”(hjb+h]”hŒstruct msgbuf *msgb”…”�”}”(hjd+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KWhj\+ubj))�”}”(hhh]”hþ)�”}”(hŒThe message buffer.”h]”hŒThe message buffer.”…”�”}”(hj{+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KRhjx+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj\+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jw+h´KWhjY+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œmsgb_push_buf (C function)”Œc.msgb_push_buf”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒCvoid msgb_push_buf (struct msgbuf *msgb, const u8 *buf, size_t len)”h]”j1)�”}”(hŒBvoid msgb_push_buf(struct msgbuf *msgb, const u8 *buf, size_t len)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¼+h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj¸+h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KZubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË+h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¸+h²hh³jÊ+h´KZubjZ)�”}”(hŒ msgb_push_buf”h]”j`)�”}”(hŒ msgb_push_buf”h]”hŒ msgb_push_buf”…”�”}”(hjÝ+h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÙ+ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¸+h²hh³jÊ+h´KZubj)�”}”(hŒ0(struct msgbuf *msgb, const u8 *buf, size_t len)”h]”(j)�”}”(hŒstruct msgbuf *msgb”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjù+h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjõ+ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjõ+ubh)�”}”(hhh]”j`)�”}”(hŒmsgbuf”h]”hŒmsgbuf”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j,Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjß+sbŒc.msgb_push_buf”†”asbuh1hhjõ+ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjõ+ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjE,h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjõ+ubj`)�”}”(hŒmsgb”h]”hŒmsgb”…”�”}”(hjR,h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjõ+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjñ+ubj)�”}”(hŒ const u8 *buf”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjk,h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjg,ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjg,ubh)�”}”(hhh]”j`)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj‰,h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj†,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j‹,Œmodname”NŒ classname”Nj\j_)�”}”jb]”j3,Œc.msgb_push_buf”†”asbuh1hhjg,ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjg,ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjµ,h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjg,ubj`)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjÂ,h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjg,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjñ+ubj)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÞ,h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÛ,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jà,Œmodname”NŒ classname”Nj\j_)�”}”jb]”j3,Œc.msgb_push_buf”†”asbuh1hhj×,ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj×,ubj`)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj×,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjñ+ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj¸+h²hh³jÊ+h´KZubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj´+h²hh³jÊ+h´KZubah}”(h]”j¯+ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÊ+h´KZhj±+h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒPush raw data to the buffer.”h]”hŒPush raw data to the buffer.”…”�”}”(hj4-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KZhj1-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj±+h²hh³jÊ+h´KZubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jL-j¯jL-j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒ²**Parameters** ``struct msgbuf *msgb`` The message buffer. ``const u8 *buf`` The data to push to the buffer. ``size_t len`` The length of the data to push to the buffer.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjV-h]”hŒ Parameters”…”�”}”(hjX-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjT-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K^hjP-ubj)�”}”(hhh]”(j)�”}”(hŒ,``struct msgbuf *msgb`` The message buffer. ”h]”(j )�”}”(hŒ``struct msgbuf *msgb``”h]”j)�”}”(hju-h]”hŒstruct msgbuf *msgb”…”�”}”(hjw-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjs-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K[hjo-ubj))�”}”(hhh]”hþ)�”}”(hŒThe message buffer.”h]”hŒThe message buffer.”…”�”}”(hjŽ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jŠ-h´K[hj‹-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjo-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŠ-h´K[hjl-ubj)�”}”(hŒ2``const u8 *buf`` The data to push to the buffer. ”h]”(j )�”}”(hŒ``const u8 *buf``”h]”j)�”}”(hj®-h]”hŒ const u8 *buf”…”�”}”(hj°-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K\hj¨-ubj))�”}”(hhh]”hþ)�”}”(hŒThe data to push to the buffer.”h]”hŒThe data to push to the buffer.”…”�”}”(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&]”uh1jh³jÃ-h´K\hjl-ubj)�”}”(hŒ<``size_t len`` The length of the data to push to the buffer.”h]”(j )�”}”(hŒ``size_t len``”h]”j)�”}”(hjç-h]”hŒ size_t len”…”�”}”(hjé-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K^hjá-ubj))�”}”(hhh]”hþ)�”}”(hŒ-The length of the data to push to the buffer.”h]”hŒ-The length of the data to push to the buffer.”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´K]hjý-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjá-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jü-h´K^hjl-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjP-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œmsgb_push_crc (C function)”Œc.msgb_push_crc”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒCvoid msgb_push_crc (struct msgbuf *msgb, const u8 *buf, size_t len)”h]”j1)�”}”(hŒBvoid msgb_push_crc(struct msgbuf *msgb, const u8 *buf, size_t len)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjA.h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj=.h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KeubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP.h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj=.h²hh³jO.h´KeubjZ)�”}”(hŒ msgb_push_crc”h]”j`)�”}”(hŒ msgb_push_crc”h]”hŒ msgb_push_crc”…”�”}”(hjb.h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj^.ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj=.h²hh³jO.h´Keubj)�”}”(hŒ0(struct msgbuf *msgb, const u8 *buf, size_t len)”h]”(j)�”}”(hŒstruct msgbuf *msgb”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj~.h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjz.ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹.h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjz.ubh)�”}”(hhh]”j`)�”}”(hŒmsgbuf”h]”hŒmsgbuf”…”�”}”(hjœ.h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj™.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jž.Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjd.sbŒc.msgb_push_crc”†”asbuh1hhjz.ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼.h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjz.ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÊ.h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjz.ubj`)�”}”(hŒmsgb”h]”hŒmsgb”…”�”}”(hj×.h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjz.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjv.ubj)�”}”(hŒ const u8 *buf”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjð.h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjì.ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý.h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjì.ubh)�”}”(hhh]”j`)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj /ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j/Œmodname”NŒ classname”Nj\j_)�”}”jb]”j¸.Œc.msgb_push_crc”†”asbuh1hhjì.ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,/h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjì.ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj:/h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjì.ubj`)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjG/h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjì.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjv.ubj)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjc/h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj`/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”je/Œmodname”NŒ classname”Nj\j_)�”}”jb]”j¸.Œc.msgb_push_crc”†”asbuh1hhj\/ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj\/ubj`)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj\/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjv.ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj=.h²hh³jO.h´Keubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj9.h²hh³jO.h´Keubah}”(h]”j4.ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jO.h´Kehj6.h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ&Compute CRC and push it to the buffer.”h]”hŒ&Compute CRC and push it to the buffer.”…”�”}”(hj¹/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´Kehj¶/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj6.h²hh³jO.h´Keubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jÑ/j¯jÑ/j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒÐ**Parameters** ``struct msgbuf *msgb`` The message buffer. ``const u8 *buf`` The data for which the CRC should be computed. ``size_t len`` The length of the data for which the CRC should be computed.”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³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´KihjÕ/ubj)�”}”(hhh]”(j)�”}”(hŒ,``struct msgbuf *msgb`` The message buffer. ”h]”(j )�”}”(hŒ``struct msgbuf *msgb``”h]”j)�”}”(hjú/h]”hŒstruct msgbuf *msgb”…”�”}”(hjü/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjø/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´Kfhjô/ubj))�”}”(hhh]”hþ)�”}”(hŒThe message buffer.”h]”hŒThe message buffer.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j0h´Kfhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjô/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j0h´Kfhjñ/ubj)�”}”(hŒA``const u8 *buf`` The data for which the CRC should be computed. ”h]”(j )�”}”(hŒ``const u8 *buf``”h]”j)�”}”(hj30h]”hŒ const u8 *buf”…”�”}”(hj50h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj10ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´Kghj-0ubj))�”}”(hhh]”hþ)�”}”(hŒ.The data for which the CRC should be computed.”h]”hŒ.The data for which the CRC should be computed.”…”�”}”(hjL0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jH0h´KghjI0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj-0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jH0h´Kghjñ/ubj)�”}”(hŒK``size_t len`` The length of the data for which the CRC should be computed.”h]”(j )�”}”(hŒ``size_t len``”h]”j)�”}”(hjl0h]”hŒ size_t len”…”�”}”(hjn0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:20: ./drivers/platform/surface/aggregator/ssh_msgb.h”h´Kihjf0ubj))�”}”(hhh]”hþ)�”}”(hŒ`.”h]”(hŒState-flags for ”…”�”}”(hj?:h²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct ssh_ptl `”h]”j)�”}”(hjI:h]”hŒstruct ssh_ptl”…”�”}”(hjK:h²hh³Nh´Nubah}”(h]”h ]”(Œxref”j¨Œc-type”eh"]”h$]”h&]”uh1jhjG:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ*driver-api/surface_aggregator/internal-api”Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j\j_)�”}”jb]”je)�”}”jXjö9sbŒc.ssh_ptl_state_flags”†”asbŒ reftarget”Œssh_ptl”uh1hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´Khj?:ubhŒ.”…”�”}”(hj?:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´Khj<:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjñ9h²hh³j :h´Kubeh}”(h]”h ]”(j¨Œenum”eh"]”h$]”h&]”j­j¨j®j…:j¯j…:j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒ­**Constants** ``SSH_PTL_SF_SHUTDOWN_BIT`` Indicates that the packet transport layer has been shut down or is being shut down and should not accept any new packets/data.”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³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´Khj‰:ubj)�”}”(hhh]”j)�”}”(hŒš``SSH_PTL_SF_SHUTDOWN_BIT`` Indicates that the packet transport layer has been shut down or is being shut down and should not accept any new packets/data.”h]”(j )�”}”(hŒ``SSH_PTL_SF_SHUTDOWN_BIT``”h]”j)�”}”(hj®:h]”hŒSSH_PTL_SF_SHUTDOWN_BIT”…”�”}”(hj°:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K hj¨:ubj))�”}”(hhh]”hþ)�”}”(hŒ~Indicates that the packet transport layer has been shut down or is being shut down and should not accept any new packets/data.”h]”hŒ~Indicates that the packet transport layer has been shut down or is being shut down and should not accept any new packets/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&]”uh1jh³jÃ:h´K hj¥:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_ptl_ops (C struct)”Œ c.ssh_ptl_ops”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ ssh_ptl_ops”h]”j1)�”}”(hŒstruct ssh_ptl_ops”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj;h²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K&ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj;h²hh³j;h´K&ubjZ)�”}”(hŒ ssh_ptl_ops”h]”j`)�”}”(hj;h]”hŒ ssh_ptl_ops”…”�”}”(hj';h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj#;ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj;h²hh³j;h´K&ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÿ:h²hh³j;h´K&ubah}”(h]”jú:ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j;h´K&hjü:h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ/Callback operations for packet transport layer.”h]”hŒ/Callback operations for packet transport layer.”…”�”}”(hjI;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K$hjF;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjü:h²hh³j;h´K&ubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®ja;j¯ja;j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hXQ**Definition**:: struct ssh_ptl_ops { void (*data_received)(struct ssh_ptl *p, const struct ssam_span *data); }; **Members** ``data_received`` Function called when a data-packet has been received. Both, the packet layer on which the packet has been received and the packet's payload data are provided to this function.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(j¾)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjm;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hji;ubhŒ:”…”�”}”(hji;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K(hje;ubjÙ)�”}”(hŒcstruct ssh_ptl_ops { void (*data_received)(struct ssh_ptl *p, const struct ssam_span *data); };”h]”hŒcstruct ssh_ptl_ops { void (*data_received)(struct ssh_ptl *p, const struct ssam_span *data); };”…”�”}”hj†;sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K*hje;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³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K.hje;ubj)�”}”(hhh]”j)�”}”(hŒÁ``data_received`` Function called when a data-packet has been received. Both, the packet layer on which the packet has been received and the packet's payload data are provided to this function.”h]”(j )�”}”(hŒ``data_received``”h]”j)�”}”(hj¶;h]”hŒ data_received”…”�”}”(hj¸;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K'hj°;ubj))�”}”(hhh]”hþ)�”}”(hŒ¯Function called when a data-packet has been received. Both, the packet layer on which the packet has been received and the packet's payload data are provided to this function.”h]”hŒ±Function called when a data-packet has been received. Both, the packet layer on which the packet has been received and the packet’s payload data are provided to this function.”…”�”}”(hjÏ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K&hjÌ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj°;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jË;h´K'hj­;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhje;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_ptl (C struct)”Œ c.ssh_ptl”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒssh_ptl”h]”j1)�”}”(hŒstruct ssh_ptl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj <h²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K.ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj <h²hh³j<h´K.ubjZ)�”}”(hŒssh_ptl”h]”j`)�”}”(hj <h]”hŒssh_ptl”…”�”}”(hj0<h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj,<ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj <h²hh³j<h´K.ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj<h²hh³j<h´K.ubah}”(h]”j<ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j<h´K.hj<h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒSSH packet transport layer.”h]”hŒSSH packet transport layer.”…”�”}”(hjR<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K.hjO<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj<h²hh³j<h´K.ubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®jj<j¯jj<j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX– **Definition**:: struct ssh_ptl { struct serdev_device *serdev; unsigned long state; struct { spinlock_t lock; struct list_head head; } queue; struct { spinlock_t lock; struct list_head head; atomic_t count; } pending; struct { atomic_t running; struct task_struct *thread; struct completion thread_cplt_tx; struct completion thread_cplt_pkt; struct wait_queue_head packet_wq; } tx; struct { struct task_struct *thread; struct wait_queue_head wq; struct kfifo fifo; struct sshp_buf buf; struct { u16 seqs[8]; u16 offset; } blocked; } rx; struct { spinlock_t lock; ktime_t timeout; ktime_t expires; struct delayed_work reaper; } rtx_timeout; struct ssh_ptl_ops ops; }; **Members** ``serdev`` Serial device providing the underlying data transport. ``state`` State(-flags) of the transport layer. ``queue`` Packet submission queue. ``queue.lock`` Lock for modifying the packet submission queue. ``queue.head`` List-head of the packet submission queue. ``pending`` Set/list of pending packets. ``pending.lock`` Lock for modifying the pending set. ``pending.head`` List-head of the pending set/list. ``pending.count`` Number of currently pending packets. ``tx`` Transmitter subsystem. ``tx.running`` Flag indicating (desired) transmitter thread state. ``tx.thread`` Transmitter thread. ``tx.thread_cplt_tx`` Completion for transmitter thread waiting on transfer. ``tx.thread_cplt_pkt`` Completion for transmitter thread waiting on packets. ``tx.packet_wq`` Waitqueue-head for packet transmit completion. ``rx`` Receiver subsystem. ``rx.thread`` Receiver thread. ``rx.wq`` Waitqueue-head for receiver thread. ``rx.fifo`` Buffer for receiving data/pushing data to receiver thread. ``rx.buf`` Buffer for evaluating data on receiver thread. ``rx.blocked`` List of recent/blocked sequence IDs to detect retransmission. ``rx.blocked.seqs`` Array of blocked sequence IDs. ``rx.blocked.offset`` Offset indicating where a new ID should be inserted. ``rtx_timeout`` Retransmission timeout subsystem. ``rtx_timeout.lock`` Lock for modifying the retransmission timeout reaper. ``rtx_timeout.timeout`` Timeout interval for retransmission. ``rtx_timeout.expires`` Time specifying when the reaper work is next scheduled. ``rtx_timeout.reaper`` Work performing timeout checks and subsequent actions. ``ops`` Packet layer operations.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(j¾)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjv<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjr<ubhŒ:”…”�”}”(hjr<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K2hjn<ubjÙ)�”}”(hXvstruct ssh_ptl { struct serdev_device *serdev; unsigned long state; struct { spinlock_t lock; struct list_head head; } queue; struct { spinlock_t lock; struct list_head head; atomic_t count; } pending; struct { atomic_t running; struct task_struct *thread; struct completion thread_cplt_tx; struct completion thread_cplt_pkt; struct wait_queue_head packet_wq; } tx; struct { struct task_struct *thread; struct wait_queue_head wq; struct kfifo fifo; struct sshp_buf buf; struct { u16 seqs[8]; u16 offset; } blocked; } rx; struct { spinlock_t lock; ktime_t timeout; ktime_t expires; struct delayed_work reaper; } rtx_timeout; struct ssh_ptl_ops ops; };”h]”hXvstruct ssh_ptl { struct serdev_device *serdev; unsigned long state; struct { spinlock_t lock; struct list_head head; } queue; struct { spinlock_t lock; struct list_head head; atomic_t count; } pending; struct { atomic_t running; struct task_struct *thread; struct completion thread_cplt_tx; struct completion thread_cplt_pkt; struct wait_queue_head packet_wq; } tx; struct { struct task_struct *thread; struct wait_queue_head wq; struct kfifo fifo; struct sshp_buf buf; struct { u16 seqs[8]; u16 offset; } blocked; } rx; struct { spinlock_t lock; ktime_t timeout; ktime_t expires; struct delayed_work reaper; } rtx_timeout; struct ssh_ptl_ops ops; };”…”�”}”hj�<sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K4hjn<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³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KZhjn<ubj)�”}”(hhh]”(j)�”}”(hŒB``serdev`` Serial device providing the underlying data transport. ”h]”(j )�”}”(hŒ ``serdev``”h]”j)�”}”(hj¿<h]”hŒserdev”…”�”}”(hjÁ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K0hj¹<ubj))�”}”(hhh]”hþ)�”}”(hŒ6Serial device providing the underlying data transport.”h]”hŒ6Serial device providing the underlying data transport.”…”�”}”(hjØ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÔ<h´K0hjÕ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj¹<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÔ<h´K0hj¶<ubj)�”}”(hŒ0``state`` State(-flags) of the transport layer. ”h]”(j )�”}”(hŒ ``state``”h]”j)�”}”(hjø<h]”hŒstate”…”�”}”(hjú<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjö<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K1hjò<ubj))�”}”(hhh]”hþ)�”}”(hŒ%State(-flags) of the transport layer.”h]”hŒ%State(-flags) of the transport layer.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j =h´K1hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjò<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j =h´K1hj¶<ubj)�”}”(hŒ#``queue`` Packet submission queue. ”h]”(j )�”}”(hŒ ``queue``”h]”j)�”}”(hj1=h]”hŒqueue”…”�”}”(hj3=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K2hj+=ubj))�”}”(hhh]”hþ)�”}”(hŒPacket submission queue.”h]”hŒPacket submission queue.”…”�”}”(hjJ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jF=h´K2hjG=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj+=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jF=h´K2hj¶<ubj)�”}”(hŒ?``queue.lock`` Lock for modifying the packet submission queue. ”h]”(j )�”}”(hŒ``queue.lock``”h]”j)�”}”(hjj=h]”hŒ queue.lock”…”�”}”(hjl=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K3hjd=ubj))�”}”(hhh]”hþ)�”}”(hŒ/Lock for modifying the packet submission queue.”h]”hŒ/Lock for modifying the packet submission queue.”…”�”}”(hjƒ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j=h´K3hj€=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjd=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j=h´K3hj¶<ubj)�”}”(hŒ9``queue.head`` List-head of the packet submission queue. ”h]”(j )�”}”(hŒ``queue.head``”h]”j)�”}”(hj£=h]”hŒ queue.head”…”�”}”(hj¥=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K4hj�=ubj))�”}”(hhh]”hþ)�”}”(hŒ)List-head of the packet submission queue.”h]”hŒ)List-head of the packet submission queue.”…”�”}”(hj¼=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¸=h´K4hj¹=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj�=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¸=h´K4hj¶<ubj)�”}”(hŒ)``pending`` Set/list of pending packets. ”h]”(j )�”}”(hŒ ``pending``”h]”j)�”}”(hjÜ=h]”hŒpending”…”�”}”(hjÞ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K5hjÖ=ubj))�”}”(hhh]”hþ)�”}”(hŒSet/list of pending packets.”h]”hŒSet/list of pending packets.”…”�”}”(hjõ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jñ=h´K5hjò=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÖ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j•<h³jñ=h´K5hj¶<ubj)�”}”(hŒ5``pending.lock`` Lock for modifying the pending set. ”h]”(j )�”}”(hŒ``pending.lock``”h]”j)�”}”(hj>h]”hŒ pending.lock”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K6hj>ubj))�”}”(hhh]”hþ)�”}”(hŒ#Lock for modifying the pending set.”h]”hŒ#Lock for modifying the pending set.”…”�”}”(hj.>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j*>h´K6hj+>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j*>h´K6hj¶<ubj)�”}”(hŒ4``pending.head`` List-head of the pending set/list. ”h]”(j )�”}”(hŒ``pending.head``”h]”j)�”}”(hjN>h]”hŒ pending.head”…”�”}”(hjP>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K7hjH>ubj))�”}”(hhh]”hþ)�”}”(hŒ"List-head of the pending set/list.”h]”hŒ"List-head of the pending set/list.”…”�”}”(hjg>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jc>h´K7hjd>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjH>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jc>h´K7hj¶<ubj)�”}”(hŒ7``pending.count`` Number of currently pending packets. ”h]”(j )�”}”(hŒ``pending.count``”h]”j)�”}”(hj‡>h]”hŒ pending.count”…”�”}”(hj‰>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K8hj�>ubj))�”}”(hhh]”hþ)�”}”(hŒ$Number of currently pending packets.”h]”hŒ$Number of currently pending packets.”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jœ>h´K8hj�>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj�>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jœ>h´K8hj¶<ubj)�”}”(hŒ``tx`` Transmitter subsystem. ”h]”(j )�”}”(hŒ``tx``”h]”j)�”}”(hjÀ>h]”hŒtx”…”�”}”(hjÂ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K9hjº>ubj))�”}”(hhh]”hþ)�”}”(hŒTransmitter subsystem.”h]”hŒTransmitter subsystem.”…”�”}”(hjÙ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÕ>h´K9hjÖ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjº>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÕ>h´K9hj¶<ubj)�”}”(hŒC``tx.running`` Flag indicating (desired) transmitter thread state. ”h]”(j )�”}”(hŒ``tx.running``”h]”j)�”}”(hjù>h]”hŒ tx.running”…”�”}”(hjû>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K:hjó>ubj))�”}”(hhh]”hþ)�”}”(hŒ3Flag indicating (desired) transmitter thread state.”h]”hŒ3Flag indicating (desired) transmitter thread state.”…”�”}”(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&]”uh1jh³j?h´K:hj¶<ubj)�”}”(hŒ"``tx.thread`` Transmitter thread. ”h]”(j )�”}”(hŒ ``tx.thread``”h]”j)�”}”(hj2?h]”hŒ tx.thread”…”�”}”(hj4?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K;hj,?ubj))�”}”(hhh]”hþ)�”}”(hŒTransmitter thread.”h]”hŒTransmitter thread.”…”�”}”(hjK?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jG?h´K;hjH?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj,?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jG?h´K;hj¶<ubj)�”}”(hŒM``tx.thread_cplt_tx`` Completion for transmitter thread waiting on transfer. ”h]”(j )�”}”(hŒ``tx.thread_cplt_tx``”h]”j)�”}”(hjk?h]”hŒtx.thread_cplt_tx”…”�”}”(hjm?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhji?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´Khj×?ubj))�”}”(hhh]”hþ)�”}”(hŒ.Waitqueue-head for packet transmit completion.”h]”hŒ.Waitqueue-head for packet transmit completion.”…”�”}”(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&]”uh1jh³jò?h´K>hj¶<ubj)�”}”(hŒ``rx`` Receiver subsystem. ”h]”(j )�”}”(hŒ``rx``”h]”j)�”}”(hj@h]”hŒrx”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K?hj@ubj))�”}”(hhh]”hþ)�”}”(hŒReceiver subsystem.”h]”hŒReceiver subsystem.”…”�”}”(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&]”uh1jh³j+@h´K?hj¶<ubj)�”}”(hŒ``rx.thread`` Receiver thread. ”h]”(j )�”}”(hŒ ``rx.thread``”h]”j)�”}”(hjO@h]”hŒ rx.thread”…”�”}”(hjQ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K@hjI@ubj))�”}”(hhh]”hþ)�”}”(hŒReceiver thread.”h]”hŒReceiver thread.”…”�”}”(hjh@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jd@h´K@hje@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjI@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jd@h´K@hj¶<ubj)�”}”(hŒ.``rx.wq`` Waitqueue-head for receiver thread. ”h]”(j )�”}”(hŒ ``rx.wq``”h]”j)�”}”(hjˆ@h]”hŒrx.wq”…”�”}”(hjŠ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KAhj‚@ubj))�”}”(hhh]”hþ)�”}”(hŒ#Waitqueue-head for receiver thread.”h]”hŒ#Waitqueue-head for receiver thread.”…”�”}”(hj¡@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j�@h´KAhjž@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj‚@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�@h´KAhj¶<ubj)�”}”(hŒG``rx.fifo`` Buffer for receiving data/pushing data to receiver thread. ”h]”(j )�”}”(hŒ ``rx.fifo``”h]”j)�”}”(hjÁ@h]”hŒrx.fifo”…”�”}”(hjÃ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KBhj»@ubj))�”}”(hhh]”hþ)�”}”(hŒ:Buffer for receiving data/pushing data to receiver thread.”h]”hŒ:Buffer for receiving data/pushing data to receiver thread.”…”�”}”(hjÚ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÖ@h´KBhj×@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj»@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÖ@h´KBhj¶<ubj)�”}”(hŒ:``rx.buf`` Buffer for evaluating data on receiver thread. ”h]”(j )�”}”(hŒ ``rx.buf``”h]”j)�”}”(hjú@h]”hŒrx.buf”…”�”}”(hjü@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjø@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KChjô@ubj))�”}”(hhh]”hþ)�”}”(hŒ.Buffer for evaluating data on receiver thread.”h]”hŒ.Buffer for evaluating data on receiver thread.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jAh´KChjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjô@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jAh´KChj¶<ubj)�”}”(hŒM``rx.blocked`` List of recent/blocked sequence IDs to detect retransmission. ”h]”(j )�”}”(hŒ``rx.blocked``”h]”j)�”}”(hj3Ah]”hŒ rx.blocked”…”�”}”(hj5Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KDhj-Aubj))�”}”(hhh]”hþ)�”}”(hŒ=List of recent/blocked sequence IDs to detect retransmission.”h]”hŒ=List of recent/blocked sequence IDs to detect retransmission.”…”�”}”(hjLAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jHAh´KDhjIAubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj-Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jHAh´KDhj¶<ubj)�”}”(hŒ3``rx.blocked.seqs`` Array of blocked sequence IDs. ”h]”(j )�”}”(hŒ``rx.blocked.seqs``”h]”j)�”}”(hjlAh]”hŒrx.blocked.seqs”…”�”}”(hjnAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KEhjfAubj))�”}”(hhh]”hþ)�”}”(hŒArray of blocked sequence IDs.”h]”hŒArray of blocked sequence IDs.”…”�”}”(hj…Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j�Ah´KEhj‚Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjfAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�Ah´KEhj¶<ubj)�”}”(hŒK``rx.blocked.offset`` Offset indicating where a new ID should be inserted. ”h]”(j )�”}”(hŒ``rx.blocked.offset``”h]”j)�”}”(hj¥Ah]”hŒrx.blocked.offset”…”�”}”(hj§Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KFhjŸAubj))�”}”(hhh]”hþ)�”}”(hŒ4Offset indicating where a new ID should be inserted.”h]”hŒ4Offset indicating where a new ID should be inserted.”…”�”}”(hj¾Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jºAh´KFhj»Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjŸAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jºAh´KFhj¶<ubj)�”}”(hŒ2``rtx_timeout`` Retransmission timeout subsystem. ”h]”(j )�”}”(hŒ``rtx_timeout``”h]”j)�”}”(hjÞAh]”hŒ rtx_timeout”…”�”}”(hjàAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜAubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KGhjØAubj))�”}”(hhh]”hþ)�”}”(hŒ!Retransmission timeout subsystem.”h]”hŒ!Retransmission timeout subsystem.”…”�”}”(hj÷Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jóAh´KGhjôAubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjØAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jóAh´KGhj¶<ubj)�”}”(hŒK``rtx_timeout.lock`` Lock for modifying the retransmission timeout reaper. ”h]”(j )�”}”(hŒ``rtx_timeout.lock``”h]”j)�”}”(hjBh]”hŒrtx_timeout.lock”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KHhjBubj))�”}”(hhh]”hþ)�”}”(hŒ5Lock for modifying the retransmission timeout reaper.”h]”hŒ5Lock for modifying the retransmission timeout reaper.”…”�”}”(hj0Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j,Bh´KHhj-Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j,Bh´KHhj¶<ubj)�”}”(hŒ=``rtx_timeout.timeout`` Timeout interval for retransmission. ”h]”(j )�”}”(hŒ``rtx_timeout.timeout``”h]”j)�”}”(hjPBh]”hŒrtx_timeout.timeout”…”�”}”(hjRBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNBubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KIhjJBubj))�”}”(hhh]”hþ)�”}”(hŒ$Timeout interval for retransmission.”h]”hŒ$Timeout interval for retransmission.”…”�”}”(hjiBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jeBh´KIhjfBubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjJBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jeBh´KIhj¶<ubj)�”}”(hŒP``rtx_timeout.expires`` Time specifying when the reaper work is next scheduled. ”h]”(j )�”}”(hŒ``rtx_timeout.expires``”h]”j)�”}”(hj‰Bh]”hŒrtx_timeout.expires”…”�”}”(hj‹Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KJhjƒBubj))�”}”(hhh]”hþ)�”}”(hŒ7Time specifying when the reaper work is next scheduled.”h]”hŒ7Time specifying when the reaper work is next scheduled.”…”�”}”(hj¢Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jžBh´KJhjŸBubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjƒBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jžBh´KJhj¶<ubj)�”}”(hŒN``rtx_timeout.reaper`` Work performing timeout checks and subsequent actions. ”h]”(j )�”}”(hŒ``rtx_timeout.reaper``”h]”j)�”}”(hjÂBh]”hŒrtx_timeout.reaper”…”�”}”(hjÄBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀBubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KKhj¼Bubj))�”}”(hhh]”hþ)�”}”(hŒ6Work performing timeout checks and subsequent actions.”h]”hŒ6Work performing timeout checks and subsequent actions.”…”�”}”(hjÛBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j×Bh´KKhjØBubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj¼Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j×Bh´KKhj¶<ubj)�”}”(hŒ ``ops`` Packet layer operations.”h]”(j )�”}”(hŒ``ops``”h]”j)�”}”(hjûBh]”hŒops”…”�”}”(hjýBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùBubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KKhjõBubj))�”}”(hhh]”hþ)�”}”(hŒPacket layer operations.”h]”hŒPacket layer operations.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´KLhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjõBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jCh´KKhj¶<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjn<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_ptl_get_device (C function)”Œc.ssh_ptl_get_device”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ8struct device * ssh_ptl_get_device (struct ssh_ptl *ptl)”h]”j1)�”}”(hŒ6struct device *ssh_ptl_get_device(struct ssh_ptl *ptl)”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjUCh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjQCh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K‘ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcCh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjQCh²hh³jbCh´K‘ubh)�”}”(hhh]”j`)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjtCh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjqCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jvCŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssh_ptl_get_device”sbŒc.ssh_ptl_get_device”†”asbuh1hhjQCh²hh³jbCh´K‘ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Ch²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjQCh²hh³jbCh´K‘ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj£Ch²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjQCh²hh³jbCh´K‘ubjZ)�”}”(hŒssh_ptl_get_device”h]”j`)�”}”(hj’Ch]”hŒssh_ptl_get_device”…”�”}”(hj´Ch²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj°Cubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjQCh²hh³jbCh´K‘ubj)�”}”(hŒ(struct ssh_ptl *ptl)”h]”j)�”}”(hŒstruct ssh_ptl *ptl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÏCh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjËCubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜCh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjËCubh)�”}”(hhh]”j`)�”}”(hŒssh_ptl”h]”hŒssh_ptl”…”�”}”(hjíCh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjêCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jïCŒmodname”NŒ classname”Nj\j_)�”}”jb]”j�CŒc.ssh_ptl_get_device”†”asbuh1hhjËCubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjËCubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjËCubj`)�”}”(hŒptl”h]”hŒptl”…”�”}”(hj&Dh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjËCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÇCubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjQCh²hh³jbCh´K‘ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjMCh²hh³jbCh´K‘ubah}”(h]”jHCah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jbCh´K‘hjJCh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ2Get device associated with packet transport layer.”h]”hŒ2Get device associated with packet transport layer.”…”�”}”(hjPDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K‘hjMDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjJCh²hh³jbCh´K‘ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jhDj¯jhDj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒœ**Parameters** ``struct ssh_ptl *ptl`` The packet transport layer. **Return** Returns the device on which the given packet transport layer builds upon.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjrDh]”hŒ Parameters”…”�”}”(hjtDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjpDubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K•hjlDubj)�”}”(hhh]”j)�”}”(hŒ4``struct ssh_ptl *ptl`` The packet transport layer. ”h]”(j )�”}”(hŒ``struct ssh_ptl *ptl``”h]”j)�”}”(hj‘Dh]”hŒstruct ssh_ptl *ptl”…”�”}”(hj“Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K’hj‹Dubj))�”}”(hhh]”hþ)�”}”(hŒThe packet transport layer.”h]”hŒThe packet transport layer.”…”�”}”(hjªDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¦Dh´K’hj§Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj‹Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¦Dh´K’hjˆDubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlDubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjÌDh]”hŒReturn”…”�”}”(hjÎDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÊDubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K”hjlDubhþ)�”}”(hŒIReturns the device on which the given packet transport layer builds upon.”h]”hŒIReturns the device on which the given packet transport layer builds upon.”…”�”}”(hjâDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K”hjlDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ'ssh_ptl_tx_wakeup_transfer (C function)”Œc.ssh_ptl_tx_wakeup_transfer”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ5void ssh_ptl_tx_wakeup_transfer (struct ssh_ptl *ptl)”h]”j1)�”}”(hŒ4void ssh_ptl_tx_wakeup_transfer(struct ssh_ptl *ptl)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj Eh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K¨ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj Eh²hh³jEh´K¨ubjZ)�”}”(hŒssh_ptl_tx_wakeup_transfer”h]”j`)�”}”(hŒssh_ptl_tx_wakeup_transfer”h]”hŒssh_ptl_tx_wakeup_transfer”…”�”}”(hj2Eh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj.Eubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj Eh²hh³jEh´K¨ubj)�”}”(hŒ(struct ssh_ptl *ptl)”h]”j)�”}”(hŒstruct ssh_ptl *ptl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjNEh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjJEubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Eh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjJEubh)�”}”(hhh]”j`)�”}”(hŒssh_ptl”h]”hŒssh_ptl”…”�”}”(hjlEh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjiEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jnEŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj4EsbŒc.ssh_ptl_tx_wakeup_transfer”†”asbuh1hhjJEubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒEh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjJEubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjšEh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjJEubj`)�”}”(hŒptl”h]”hŒptl”…”�”}”(hj§Eh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjJEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjFEubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj Eh²hh³jEh´K¨ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj Eh²hh³jEh´K¨ubah}”(h]”jEah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jEh´K¨hjEh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ/Wake up packet transmitter thread for transfer.”h]”hŒ/Wake up packet transmitter thread for transfer.”…”�”}”(hjÑEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K¨hjÎEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjEh²hh³jEh´K¨ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jéEj¯jéEj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX/**Parameters** ``struct ssh_ptl *ptl`` The packet transport layer. **Description** Wakes up the packet transmitter thread, notifying it that the underlying transport has more space for data to be transmitted. If the packet transport layer has been shut down, calls to this function will be ignored.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjóEh]”hŒ Parameters”…”�”}”(hjõEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjñEubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K¬hjíEubj)�”}”(hhh]”j)�”}”(hŒ4``struct ssh_ptl *ptl`` The packet transport layer. ”h]”(j )�”}”(hŒ``struct ssh_ptl *ptl``”h]”j)�”}”(hjFh]”hŒstruct ssh_ptl *ptl”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´Kªhj Fubj))�”}”(hhh]”hþ)�”}”(hŒThe packet transport layer.”h]”hŒThe packet transport layer.”…”�”}”(hj+Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j'Fh´Kªhj(Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j'Fh´Kªhj Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíEubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hjMFh]”hŒ Description”…”�”}”(hjOFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjKFubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K¬hjíEubhþ)�”}”(hŒ×Wakes up the packet transmitter thread, notifying it that the underlying transport has more space for data to be transmitted. If the packet transport layer has been shut down, calls to this function will be ignored.”h]”hŒ×Wakes up the packet transmitter thread, notifying it that the underlying transport has more space for data to be transmitted. If the packet transport layer has been shut down, calls to this function will be ignored.”…”�”}”(hjcFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:23: ./drivers/platform/surface/aggregator/ssh_packet_layer.h”h´K«hjíEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ+ssh_ptl_should_drop_ack_packet (C function)”Œ c.ssh_ptl_should_drop_ack_packet”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ*bool ssh_ptl_should_drop_ack_packet (void)”h]”j1)�”}”(hŒ)bool ssh_ptl_should_drop_ack_packet(void)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hj’Fh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjŽFh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´KéubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŽFh²hh³jŸFh´KéubjZ)�”}”(hŒssh_ptl_should_drop_ack_packet”h]”j`)�”}”(hŒssh_ptl_should_drop_ack_packet”h]”hŒssh_ptl_should_drop_ack_packet”…”�”}”(hj²Fh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj®Fubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjŽFh²hh³jŸFh´Kéubj)�”}”(hŒ(void)”h]”j)�”}”(hŒvoid”h]”já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÎFh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÊFubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÆFubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjŽFh²hh³jŸFh´Kéubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjŠFh²hh³jŸFh´Kéubah}”(h]”j…Fah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jŸFh´Kéhj‡Fh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ)Error injection hook to drop ACK packets.”h]”hŒ)Error injection hook to drop ACK packets.”…”�”}”(hjøFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´KéhjõFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj‡Fh²hh³jŸFh´Kéubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jGj¯jGj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX½**Parameters** ``void`` no arguments **Description** Useful to test detection and handling of automated re-transmits by the EC. Specifically of packets that the EC considers not-ACKed but the driver already considers ACKed (due to dropped ACK). In this case, the EC re-transmits the packet-to-be-ACKed and the driver should detect it as duplicate/already handled. Note that the driver should still send an ACK for the re-transmitted packet.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjGh]”hŒ Parameters”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´KíhjGubj)�”}”(hhh]”j)�”}”(hŒ``void`` no arguments ”h]”(j )�”}”(hŒ``void``”h]”j)�”}”(hj9Gh]”hŒvoid”…”�”}”(hj;Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Khj3Gubj))�”}”(hhh]”hþ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjRGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jNGh´KhjOGubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj3Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jNGh´Khj0Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hjtGh]”hŒ Description”…”�”}”(hjvGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjrGubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´KhjGubhþ)�”}”(hXƒUseful to test detection and handling of automated re-transmits by the EC. Specifically of packets that the EC considers not-ACKed but the driver already considers ACKed (due to dropped ACK). In this case, the EC re-transmits the packet-to-be-ACKed and the driver should detect it as duplicate/already handled. Note that the driver should still send an ACK for the re-transmitted packet.”h]”hXƒUseful to test detection and handling of automated re-transmits by the EC. Specifically of packets that the EC considers not-ACKed but the driver already considers ACKed (due to dropped ACK). In this case, the EC re-transmits the packet-to-be-ACKed and the driver should detect it as duplicate/already handled. Note that the driver should still send an ACK for the re-transmitted packet.”…”�”}”(hjŠGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´KêhjGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ+ssh_ptl_should_drop_nak_packet (C function)”Œ c.ssh_ptl_should_drop_nak_packet”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ*bool ssh_ptl_should_drop_nak_packet (void)”h]”j1)�”}”(hŒ)bool ssh_ptl_should_drop_nak_packet(void)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hj¹Gh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjµGh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´KùubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇGh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjµGh²hh³jÆGh´KùubjZ)�”}”(hŒssh_ptl_should_drop_nak_packet”h]”j`)�”}”(hŒssh_ptl_should_drop_nak_packet”h]”hŒssh_ptl_should_drop_nak_packet”…”�”}”(hjÙGh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÕGubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjµGh²hh³jÆGh´Kùubj)�”}”(hŒ(void)”h]”j)�”}”(hŒvoid”h]”já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjõGh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjñGubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjíGubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjµGh²hh³jÆGh´Kùubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj±Gh²hh³jÆGh´Kùubah}”(h]”j¬Gah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÆGh´Kùhj®Gh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ)Error injection hook to drop NAK packets.”h]”hŒ)Error injection hook to drop NAK packets.”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´KùhjHh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj®Gh²hh³jÆGh´Kùubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j7Hj¯j7Hj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX**Parameters** ``void`` no arguments **Description** Useful to test/force automated (timeout-based) re-transmit by the EC. Specifically, packets that have not reached the driver completely/with valid checksums. Only useful in combination with receival of (injected) bad data.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjAHh]”hŒ Parameters”…”�”}”(hjCHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj?Hubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Kýhj;Hubj)�”}”(hhh]”j)�”}”(hŒ``void`` no arguments ”h]”(j )�”}”(hŒ``void``”h]”j)�”}”(hj`Hh]”hŒvoid”…”�”}”(hjbHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´KhjZHubj))�”}”(hhh]”hþ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjyHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³juHh´KhjvHubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjZHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³juHh´KhjWHubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;Hubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hj›Hh]”hŒ Description”…”�”}”(hj�Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj™Hubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Khj;Hubhþ)�”}”(hŒÞUseful to test/force automated (timeout-based) re-transmit by the EC. Specifically, packets that have not reached the driver completely/with valid checksums. Only useful in combination with receival of (injected) bad data.”h]”hŒÞUseful to test/force automated (timeout-based) re-transmit by the EC. Specifically, packets that have not reached the driver completely/with valid checksums. Only useful in combination with receival of (injected) bad data.”…”�”}”(hj±Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Kúhj;Hubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ+ssh_ptl_should_drop_dsq_packet (C function)”Œ c.ssh_ptl_should_drop_dsq_packet”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ*bool ssh_ptl_should_drop_dsq_packet (void)”h]”j1)�”}”(hŒ)bool ssh_ptl_should_drop_dsq_packet(void)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hjàHh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÜHh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîHh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÜHh²hh³jíHh´MubjZ)�”}”(hŒssh_ptl_should_drop_dsq_packet”h]”j`)�”}”(hŒssh_ptl_should_drop_dsq_packet”h]”hŒssh_ptl_should_drop_dsq_packet”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjüHubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÜHh²hh³jíHh´Mubj)�”}”(hŒ(void)”h]”j)�”}”(hŒvoid”h]”já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjIubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjIubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÜHh²hh³jíHh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjØHh²hh³jíHh´Mubah}”(h]”jÓHah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jíHh´MhjÕHh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ3Error injection hook to drop sequenced data packet.”h]”hŒ3Error injection hook to drop sequenced data packet.”…”�”}”(hjFIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MhjCIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÕHh²hh³jíHh´Mubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j^Ij¯j^Ij°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX**Parameters** ``void`` no arguments **Description** Useful to test re-transmit timeout of the driver. If the data packet has not been ACKed after a certain time, the driver should re-transmit the packet up to limited number of times defined in SSH_PTL_MAX_PACKET_TRIES.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjhIh]”hŒ Parameters”…”�”}”(hjjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjfIubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M hjbIubj)�”}”(hhh]”j)�”}”(hŒ``void`` no arguments ”h]”(j )�”}”(hŒ``void``”h]”j)�”}”(hj‡Ih]”hŒvoid”…”�”}”(hj‰Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Khj�Iubj))�”}”(hhh]”hþ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jœIh´Khj�Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj�Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jœIh´Khj~Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbIubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hjÂIh]”hŒ Description”…”�”}”(hjÄIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÀIubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´KhjbIubhþ)�”}”(hŒÙUseful to test re-transmit timeout of the driver. If the data packet has not been ACKed after a certain time, the driver should re-transmit the packet up to limited number of times defined in SSH_PTL_MAX_PACKET_TRIES.”h]”hŒÙUseful to test re-transmit timeout of the driver. If the data packet has not been ACKed after a certain time, the driver should re-transmit the packet up to limited number of times defined in SSH_PTL_MAX_PACKET_TRIES.”…”�”}”(hjØIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MhjbIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ&ssh_ptl_should_fail_write (C function)”Œc.ssh_ptl_should_fail_write”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ$int ssh_ptl_should_fail_write (void)”h]”j1)�”}”(hŒ#int ssh_ptl_should_fail_write(void)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjJh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjJh²hh³jJh´MubjZ)�”}”(hŒssh_ptl_should_fail_write”h]”j`)�”}”(hŒssh_ptl_should_fail_write”h]”hŒssh_ptl_should_fail_write”…”�”}”(hj(Jh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj$Jubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjJh²hh³jJh´Mubj)�”}”(hŒ(void)”h]”j)�”}”(hŒvoid”h]”já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjDJh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj@Jubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjhjÿMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_packet_init (C function)”Œc.ssh_packet_init”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒsvoid ssh_packet_init (struct ssh_packet *packet, unsigned long type, u8 priority, const struct ssh_packet_ops *ops)”h]”j1)�”}”(hŒrvoid ssh_packet_init(struct ssh_packet *packet, unsigned long type, u8 priority, const struct ssh_packet_ops *ops)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¤Nh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj Nh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M0ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Nh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj Nh²hh³j²Nh´M0ubjZ)�”}”(hŒssh_packet_init”h]”j`)�”}”(hŒssh_packet_init”h]”hŒssh_packet_init”…”�”}”(hjÅNh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÁNubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj Nh²hh³j²Nh´M0ubj)�”}”(hŒ^(struct ssh_packet *packet, unsigned long type, u8 priority, const struct ssh_packet_ops *ops)”h]”(j)�”}”(hŒstruct ssh_packet *packet”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjáNh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÝNubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîNh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÝNubh)�”}”(hhh]”j`)�”}”(hŒ ssh_packet”h]”hŒ ssh_packet”…”�”}”(hjÿNh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjüNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jOŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjÇNsbŒc.ssh_packet_init”†”asbuh1hhjÝNubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÝNubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj-Oh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÝNubj`)�”}”(hŒpacket”h]”hŒpacket”…”�”}”(hj:Oh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÝNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÙNubj)�”}”(hŒunsigned long type”h]”(já)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjSOh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjOOubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaOh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjOOubjá)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjoOh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjOOubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Oh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjOOubj`)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj‹Oh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjOOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÙNubj)�”}”(hŒ u8 priority”h]”(h)�”}”(hhh]”j`)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj§Oh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¤Oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j©OŒmodname”NŒ classname”Nj\j_)�”}”jb]”jOŒc.ssh_packet_init”†”asbuh1hhj OubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅOh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj Oubj`)�”}”(hŒpriority”h]”hŒpriority”…”�”}”(hjÓOh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj Oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÙNubj)�”}”(hŒ const struct ssh_packet_ops *ops”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjìOh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjèOubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùOh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjèOubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjèOubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjèOubh)�”}”(hhh]”j`)�”}”(hŒssh_packet_ops”h]”hŒssh_packet_ops”…”�”}”(hj%Ph²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj"Pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j'PŒmodname”NŒ classname”Nj\j_)�”}”jb]”jOŒc.ssh_packet_init”†”asbuh1hhjèOubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCPh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjèOubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjQPh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjèOubj`)�”}”(hŒops”h]”hŒops”…”�”}”(hj^Ph²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjèOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÙNubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj Nh²hh³j²Nh´M0ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjœNh²hh³j²Nh´M0ubah}”(h]”j—Nah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j²Nh´M0hj™Nh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒInitialize SSH packet.”h]”hŒInitialize SSH packet.”…”�”}”(hjˆPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M0hj…Ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj™Nh²hh³j²Nh´M0ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j Pj¯j Pj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hXX**Parameters** ``struct ssh_packet *packet`` The packet to initialize. ``unsigned long type`` Type-flags of the packet. ``u8 priority`` Priority of the packet. See SSH_PACKET_PRIORITY() for details. ``const struct ssh_packet_ops *ops`` Packet operations. **Description** Initializes the given SSH packet. Sets the transmission buffer pointer to ``NULL`` and the transmission buffer length to zero. For data-type packets, this buffer has to be set separately via ssh_packet_set_data() before submission, and must contain a valid SSH message, i.e. frame with optional payload of any type.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjªPh]”hŒ Parameters”…”�”}”(hj¬Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj¨Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M4hj¤Pubj)�”}”(hhh]”(j)�”}”(hŒ8``struct ssh_packet *packet`` The packet to initialize. ”h]”(j )�”}”(hŒ``struct ssh_packet *packet``”h]”j)�”}”(hjÉPh]”hŒstruct ssh_packet *packet”…”�”}”(hjËPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇPubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M1hjÃPubj))�”}”(hhh]”hþ)�”}”(hŒThe packet to initialize.”h]”hŒThe packet to initialize.”…”�”}”(hjâPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÞPh´M1hjßPubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÃPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÞPh´M1hjÀPubj)�”}”(hŒ1``unsigned long type`` Type-flags of the packet. ”h]”(j )�”}”(hŒ``unsigned long type``”h]”j)�”}”(hjQh]”hŒunsigned long type”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M2hjüPubj))�”}”(hhh]”hþ)�”}”(hŒType-flags of the packet.”h]”hŒType-flags of the packet.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jQh´M2hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjüPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jQh´M2hjÀPubj)�”}”(hŒO``u8 priority`` Priority of the packet. See SSH_PACKET_PRIORITY() for details. ”h]”(j )�”}”(hŒ``u8 priority``”h]”j)�”}”(hj;Qh]”hŒ u8 priority”…”�”}”(hj=Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M3hj5Qubj))�”}”(hhh]”hþ)�”}”(hŒ>Priority of the packet. See SSH_PACKET_PRIORITY() for details.”•h]”hŒ>Priority of the packet. See SSH_PACKET_PRIORITY() for details.”…”�”}”(hjTQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jPQh´M3hjQQubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj5Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jPQh´M3hjÀPubj)�”}”(hŒ8``const struct ssh_packet_ops *ops`` Packet operations. ”h]”(j )�”}”(hŒ$``const struct ssh_packet_ops *ops``”h]”j)�”}”(hjtQh]”hŒ const struct ssh_packet_ops *ops”…”�”}”(hjvQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrQubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M4hjnQubj))�”}”(hhh]”hþ)�”}”(hŒPacket operations.”h]”hŒPacket operations.”…”�”}”(hj�Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j‰Qh´M4hjŠQubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjnQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‰Qh´M4hjÀPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤Pubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hj¯Qh]”hŒ Description”…”�”}”(hj±Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj­Qubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M6hj¤Pubhþ)�”}”(hX;Initializes the given SSH packet. Sets the transmission buffer pointer to ``NULL`` and the transmission buffer length to zero. For data-type packets, this buffer has to be set separately via ssh_packet_set_data() before submission, and must contain a valid SSH message, i.e. frame with optional payload of any type.”h]”(hŒJInitializes the given SSH packet. Sets the transmission buffer pointer to ”…”�”}”(hjÅQh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÍQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅQubhŒé and the transmission buffer length to zero. For data-type packets, this buffer has to be set separately via ssh_packet_set_data() before submission, and must contain a valid SSH message, i.e. frame with optional payload of any type.”…”�”}”(hjÅQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M5hj¤Pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ'ssh_ctrl_packet_cache_init (C function)”Œc.ssh_ctrl_packet_cache_init”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ%int ssh_ctrl_packet_cache_init (void)”h]”j1)�”}”(hŒ$int ssh_ctrl_packet_cache_init(void)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjRh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MRubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjRh²hh³jRh´MRubjZ)�”}”(hŒssh_ctrl_packet_cache_init”h]”j`)�”}”(hŒssh_ctrl_packet_cache_init”h]”hŒssh_ctrl_packet_cache_init”…”�”}”(hj'Rh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj#Rubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjRh²hh³jRh´MRubj)�”}”(hŒ(void)”h]”j)�”}”(hŒvoid”h]”já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjCRh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj?Rubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj;Rubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjRh²hh³jRh´MRubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjþQh²hh³jRh´MRubah}”(h]”jùQah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jRh´MRhjûQh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ$Initialize the control packet cache.”h]”hŒ$Initialize the control packet cache.”…”�”}”(hjmRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MRhjjRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjûQh²hh³jRh´MRubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j…Rj¯j…Rj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒ'**Parameters** ``void`` no arguments”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj�Rh]”hŒ Parameters”…”�”}”(hj‘Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj�Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MVhj‰Rubj)�”}”(hhh]”j)�”}”(hŒ``void`` no arguments”h]”(j )�”}”(hŒ``void``”h]”j)�”}”(hj®Rh]”hŒvoid”…”�”}”(hj°Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MXhj¨Rubj))�”}”(hhh]”hþ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjÇRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´KhjÄRubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj¨Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÃRh´MXhj¥Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰Rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ*ssh_ctrl_packet_cache_destroy (C function)”Œc.ssh_ctrl_packet_cache_destroy”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ)void ssh_ctrl_packet_cache_destroy (void)”h]”j1)�”}”(hŒ(void ssh_ctrl_packet_cache_destroy(void)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjSh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´McubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjSh²hh³jSh´McubjZ)�”}”(hŒssh_ctrl_packet_cache_destroy”h]”j`)�”}”(hŒssh_ctrl_packet_cache_destroy”h]”hŒssh_ctrl_packet_cache_destroy”…”�”}”(hj)Sh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj%Subah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjSh²hh³jSh´Mcubj)�”}”(hŒ(void)”h]”j)�”}”(hŒvoid”h]”já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjESh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjASubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj=Subah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjSh²hh³jSh´Mcubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjSh²hh³jSh´Mcubah}”(h]”jûRah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jSh´MchjýRh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ&Deinitialize the control packet cache.”h]”hŒ&Deinitialize the control packet cache.”…”�”}”(hjoSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MchjlSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjýRh²hh³jSh´Mcubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j‡Sj¯j‡Sj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒ'**Parameters** ``void`` no arguments”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj‘Sh]”hŒ Parameters”…”�”}”(hj“Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj�Subah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mghj‹Subj)�”}”(hhh]”j)�”}”(hŒ``void`` no arguments”h]”(j )�”}”(hŒ``void``”h]”j)�”}”(hj°Sh]”hŒvoid”…”�”}”(hj²Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®Subah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MihjªSubj))�”}”(hhh]”hþ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjÉSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´KhjÆSubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjªSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÅSh´Mihj§Subah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹Subeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ"ssh_ctrl_packet_alloc (C function)”Œc.ssh_ctrl_packet_alloc”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ]int ssh_ctrl_packet_alloc (struct ssh_packet **packet, struct ssam_span *buffer, gfp_t flags)”h]”j1)�”}”(hŒ\int ssh_ctrl_packet_alloc(struct ssh_packet **packet, struct ssam_span *buffer, gfp_t flags)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjTh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MlubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjTh²hh³jTh´MlubjZ)�”}”(hŒssh_ctrl_packet_alloc”h]”j`)�”}”(hŒssh_ctrl_packet_alloc”h]”hŒssh_ctrl_packet_alloc”…”�”}”(hj+Th²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj'Tubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjTh²hh³jTh´Mlubj)�”}”(hŒC(struct ssh_packet **packet, struct ssam_span *buffer, gfp_t flags)”h]”(j)�”}”(hŒstruct ssh_packet **packet”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjGTh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjCTubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTTh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjCTubh)�”}”(hhh]”j`)�”}”(hŒ ssh_packet”h]”hŒ ssh_packet”…”�”}”(hjeTh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjbTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jgTŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj-TsbŒc.ssh_ctrl_packet_alloc”†”asbuh1hhjCTubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Th²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjCTubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj“Th²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjCTubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjCTubj`)�”}”(hŒpacket”h]”hŒpacket”…”�”}”(hj­Th²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjCTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj?Tubj)�”}”(hŒstruct ssam_span *buffer”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÆTh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÂTubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓTh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÂTubh)�”}”(hhh]”j`)�”}”(hŒ ssam_span”h]”hŒ ssam_span”…”�”}”(hjäTh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjáTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jæTŒmodname”NŒ classname”Nj\j_)�”}”jb]”j�TŒc.ssh_ctrl_packet_alloc”†”asbuh1hhjÂTubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÂTubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÂTubj`)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÂTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj?Tubj)�”}”(hŒ gfp_t flags”h]”(h)�”}”(hhh]”j`)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj9Uh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj6Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j;UŒmodname”NŒ classname”Nj\j_)�”}”jb]”j�TŒc.ssh_ctrl_packet_alloc”†”asbuh1hhj2UubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWUh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj2Uubj`)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjeUh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj2Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj?Tubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjTh²hh³jTh´Mlubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjTh²hh³jTh´Mlubah}”(h]”jýSah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jTh´MlhjÿSh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ*Allocate packet from control packet cache.”h]”hŒ*Allocate packet from control packet cache.”…”�”}”(hj�Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MlhjŒUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÿSh²hh³jTh´Mlubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j§Uj¯j§Uj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX¾**Parameters** ``struct ssh_packet **packet`` Where the pointer to the newly allocated packet should be stored. ``struct ssam_span *buffer`` The buffer corresponding to this packet. ``gfp_t flags`` Flags used for allocation. **Description** Allocates a packet and corresponding transport buffer from the control packet cache. Sets the packet's buffer reference to the allocated buffer. The packet must be freed via ssh_ctrl_packet_free(), which will also free the corresponding buffer. The corresponding buffer must not be freed separately. Intended to be used with ``ssh_ptl_ctrl_packet_ops`` as packet operations. **Return** Returns zero on success, ``-ENOMEM`` if the allocation failed.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj±Uh]”hŒ Parameters”…”�”}”(hj³Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj¯Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mphj«Uubj)�”}”(hhh]”(j)�”}”(hŒa``struct ssh_packet **packet`` Where the pointer to the newly allocated packet should be stored. ”h]”(j )�”}”(hŒ``struct ssh_packet **packet``”h]”j)�”}”(hjÐUh]”hŒstruct ssh_packet **packet”…”�”}”(hjÒUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎUubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MmhjÊUubj))�”}”(hhh]”hþ)�”}”(hŒAWhere the pointer to the newly allocated packet should be stored.”h]”hŒAWhere the pointer to the newly allocated packet should be stored.”…”�”}”(hjéUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jåUh´MmhjæUubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÊUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jåUh´MmhjÇUubj)�”}”(hŒF``struct ssam_span *buffer`` The buffer corresponding to this packet. ”h]”(j )�”}”(hŒ``struct ssam_span *buffer``”h]”j)�”}”(hj Vh]”hŒstruct ssam_span *buffer”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MnhjVubj))�”}”(hhh]”hþ)�”}”(hŒ(The buffer corresponding to this packet.”h]”hŒ(The buffer corresponding to this packet.”…”�”}”(hj"Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jVh´MnhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jVh´MnhjÇUubj)�”}”(hŒ+``gfp_t flags`` Flags used for allocation. ”h]”(j )�”}”(hŒ``gfp_t flags``”h]”j)�”}”(hjBVh]”hŒ gfp_t flags”…”�”}”(hjDVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MohjReturns zero on success, ``-ENOMEM`` if the allocation failed.”h]”(hŒReturns zero on success, ”…”�”}”(hjÌVh²hh³Nh´Nubj)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hjÔVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌVubhŒ if the allocation failed.”…”�”}”(hjÌVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mxhj«Uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ!ssh_ctrl_packet_free (C function)”Œc.ssh_ctrl_packet_free”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ0void ssh_ctrl_packet_free (struct ssh_packet *p)”h]”j1)�”}”(hŒ/void ssh_ctrl_packet_free(struct ssh_packet *p)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj Wh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj Wh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M‰ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj Wh²hh³jWh´M‰ubjZ)�”}”(hŒssh_ctrl_packet_free”h]”j`)�”}”(hŒssh_ctrl_packet_free”h]”hŒssh_ctrl_packet_free”…”�”}”(hj.Wh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj*Wubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj Wh²hh³jWh´M‰ubj)�”}”(hŒ(struct ssh_packet *p)”h]”j)�”}”(hŒstruct ssh_packet *p”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjJWh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjFWubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWWh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjFWubh)�”}”(hhh]”j`)�”}”(hŒ ssh_packet”h]”hŒ ssh_packet”…”�”}”(hjhWh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjeWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jjWŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj0WsbŒc.ssh_ctrl_packet_free”†”asbuh1hhjFWubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆWh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjFWubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj–Wh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjFWubj`)�”}”(hj…h]”hŒp”…”�”}”(hj£Wh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjFWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjBWubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj Wh²hh³jWh´M‰ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjWh²hh³jWh´M‰ubah}”(h]”jWah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jWh´M‰hjWh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ0Free packet allocated from control packet cache.”h]”hŒ0Free packet allocated from control packet cache.”…”�”}”(hjÌWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M‰hjÉWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjWh²hh³jWh´M‰ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jäWj¯jäWj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒ>**Parameters** ``struct ssh_packet *p`` The packet to free.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjîWh]”hŒ Parameters”…”�”}”(hjðWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjìWubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M�hjèWubj)�”}”(hhh]”j)�”}”(hŒ,``struct ssh_packet *p`` The packet to free.”h]”(j )�”}”(hŒ``struct ssh_packet *p``”h]”j)�”}”(hj Xh]”hŒstruct ssh_packet *p”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M�hjXubj))�”}”(hhh]”hþ)�”}”(hŒThe packet to free.”h]”hŒThe packet to free.”…”�”}”(hj&Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MŠhj#Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j"Xh´M�hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjèWubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ%ssh_ptl_tx_wakeup_packet (C function)”Œc.ssh_ptl_tx_wakeup_packet”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ3void ssh_ptl_tx_wakeup_packet (struct ssh_ptl *ptl)”h]”j1)�”}”(hŒ2void ssh_ptl_tx_wakeup_packet(struct ssh_ptl *ptl)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjgXh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjcXh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MjubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvXh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjcXh²hh³juXh´MjubjZ)�”}”(hŒssh_ptl_tx_wakeup_packet”h]”j`)�”}”(hŒssh_ptl_tx_wakeup_packet”h]”hŒssh_ptl_tx_wakeup_packet”…”�”}”(hjˆXh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj„Xubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjcXh²hh³juXh´Mjubj)�”}”(hŒ(struct ssh_ptl *ptl)”h]”j)�”}”(hŒstruct ssh_ptl *ptl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj¤Xh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj XubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Xh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj Xubh)�”}”(hhh]”j`)�”}”(hŒssh_ptl”h]”hŒssh_ptl”…”�”}”(hjÂXh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¿Xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÄXŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjŠXsbŒc.ssh_ptl_tx_wakeup_packet”†”asbuh1hhj XubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâXh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj Xubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjðXh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj Xubj`)�”}”(hŒptl”h]”hŒptl”…”�”}”(hjýXh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjœXubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjcXh²hh³juXh´Mjubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj_Xh²hh³juXh´Mjubah}”(h]”jZXah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³juXh´Mjhj\Xh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ1Wake up packet transmitter thread for new packet.”h]”hŒ1Wake up packet transmitter thread for new packet.”…”�”}”(hj'Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mjhj$Yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj\Xh²hh³juXh´Mjubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j?Yj¯j?Yj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX**Parameters** ``struct ssh_ptl *ptl`` The packet transport layer. **Description** Wakes up the packet transmitter thread, notifying it that a new packet has arrived and is ready for transfer. If the packet transport layer has been shut down, calls to this function will be ignored.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjIYh]”hŒ Parameters”…”�”}”(hjKYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjGYubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MnhjCYubj)�”}”(hhh]”j)�”}”(hŒ4``struct ssh_ptl *ptl`` The packet transport layer. ”h]”(j )�”}”(hŒ``struct ssh_ptl *ptl``”h]”j)�”}”(hjhYh]”hŒstruct ssh_ptl *ptl”…”�”}”(hjjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfYubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MlhjbYubj))�”}”(hhh]”hþ)�”}”(hŒThe packet transport layer.”h]”hŒThe packet transport layer.”…”�”}”(hj�Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j}Yh´Mlhj~Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjbYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j}Yh´Mlhj_Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCYubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hj£Yh]”hŒ Description”…”�”}”(hj¥Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj¡Yubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MnhjCYubhþ)�”}”(hŒÇWakes up the packet transmitter thread, notifying it that a new packet has arrived and is ready for transfer. If the packet transport layer has been shut down, calls to this function will be ignored.”h]”hŒÇWakes up the packet transmitter thread, notifying it that a new packet has arrived and is ready for transfer. If the packet transport layer has been shut down, calls to this function will be ignored.”…”�”}”(hj¹Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MmhjCYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_ptl_tx_start (C function)”Œc.ssh_ptl_tx_start”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ*int ssh_ptl_tx_start (struct ssh_ptl *ptl)”h]”j1)�”}”(hŒ)int ssh_ptl_tx_start(struct ssh_ptl *ptl)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjèYh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjäYh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M{ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷Yh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjäYh²hh³jöYh´M{ubjZ)�”}”(hŒssh_ptl_tx_start”h]”j`)�”}”(hŒssh_ptl_tx_start”h]”hŒssh_ptl_tx_start”…”�”}”(hj Zh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjZubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjäYh²hh³jöYh´M{ubj)�”}”(hŒ(struct ssh_ptl *ptl)”h]”j)�”}”(hŒstruct ssh_ptl *ptl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj%Zh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj!ZubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Zh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj!Zubh)�”}”(hhh]”j`)�”}”(hŒssh_ptl”h]”hŒssh_ptl”…”�”}”(hjCZh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj@Zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jEZŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj ZsbŒc.ssh_ptl_tx_start”†”asbuh1hhj!ZubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcZh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj!Zubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjqZh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj!Zubj`)�”}”(hŒptl”h]”hŒptl”…”�”}”(hj~Zh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj!Zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjZubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjäYh²hh³jöYh´M{ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjàYh²hh³jöYh´M{ubah}”(h]”jÛYah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jöYh´M{hjÝYh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ Start packet transmitter thread.”h]”hŒ Start packet transmitter thread.”…”�”}”(hj¨Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M{hj¥Zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÝYh²hh³jöYh´M{ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jÀZj¯jÀZj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒ�**Parameters** ``struct ssh_ptl *ptl`` The packet transport layer. **Return** Returns zero on success, a negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjÊZh]”hŒ Parameters”…”�”}”(hjÌZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÈZubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MhjÄZubj)�”}”(hhh]”j)�”}”(hŒ4``struct ssh_ptl *ptl`` The packet transport layer. ”h]”(j )�”}”(hŒ``struct ssh_ptl *ptl``”h]”j)�”}”(hjéZh]”hŒstruct ssh_ptl *ptl”…”�”}”(hjëZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjçZubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M|hjãZubj))�”}”(hhh]”hþ)�”}”(hŒThe packet transport layer.”h]”hŒThe packet transport layer.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jþZh´M|hjÿZubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjãZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jþZh´M|hjàZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄZubhþ)�”}”(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³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M~hjÄZubhþ)�”}”(hŒ:Returns zero on success, a negative error code on failure.”h]”hŒ:Returns zero on success, a negative error code on failure.”…”�”}”(hj:[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M~hjÄZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_ptl_tx_stop (C function)”Œc.ssh_ptl_tx_stop”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ)int ssh_ptl_tx_stop (struct ssh_ptl *ptl)”h]”j1)�”}”(hŒ(int ssh_ptl_tx_stop(struct ssh_ptl *ptl)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hji[h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhje[h²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MŒubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx[h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhje[h²hh³jw[h´MŒubjZ)�”}”(hŒssh_ptl_tx_stop”h]”j`)�”}”(hŒssh_ptl_tx_stop”h]”hŒssh_ptl_tx_stop”…”�”}”(hjŠ[h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj†[ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhje[h²hh³jw[h´MŒubj)�”}”(hŒ(struct ssh_ptl *ptl)”h]”j)�”}”(hŒstruct ssh_ptl *ptl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj¦[h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj¢[ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³[h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¢[ubh)�”}”(hhh]”j`)�”}”(hŒssh_ptl”h]”hŒssh_ptl”…”�”}”(hjÄ[h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÁ[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÆ[Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjŒ[sbŒc.ssh_ptl_tx_stop”†”asbuh1hhj¢[ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä[h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¢[ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjò[h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj¢[ubj`)�”}”(hŒptl”h]”hŒptl”…”�”}”(hjÿ[h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¢[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjž[ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhje[h²hh³jw[h´MŒubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhja[h²hh³jw[h´MŒubah}”(h]”j\[ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jw[h´MŒhj^[h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒStop packet transmitter thread.”h]”hŒStop packet transmitter thread.”…”�”}”(hj)\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MŒhj&\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj^[h²hh³jw[h´MŒubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jA\j¯jA\j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒ�**Parameters** ``struct ssh_ptl *ptl`` The packet transport layer. **Return** Returns zero on success, a negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjK\h]”hŒ Parameters”…”�”}”(hjM\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjI\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M�hjE\ubj)�”}”(hhh]”j)�”}”(hŒ4``struct ssh_ptl *ptl`` The packet transport layer. ”h]”(j )�”}”(hŒ``struct ssh_ptl *ptl``”h]”j)�”}”(hjj\h]”hŒstruct ssh_ptl *ptl”…”�”}”(hjl\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M�hjd\ubj))�”}”(hhh]”hþ)�”}”(hŒThe packet transport layer.”h]”hŒThe packet transport layer.”…”�”}”(hjƒ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j\h´M�hj€\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjd\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j\h´M�hja\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjE\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³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M�hjE\ubhþ)�”}”(hŒ:Returns zero on success, a negative error code on failure.”h]”hŒ:Returns zero on success, a negative error code on failure.”…”�”}”(hj»\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M�hjE\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_ptl_submit (C function)”Œc.ssh_ptl_submit”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ>int ssh_ptl_submit (struct ssh_ptl *ptl, struct ssh_packet *p)”h]”j1)�”}”(hŒ=int ssh_ptl_submit(struct ssh_ptl *ptl, struct ssh_packet *p)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjê\h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjæ\h²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù\h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjæ\h²hh³jø\h´MubjZ)�”}”(hŒssh_ptl_submit”h]”j`)�”}”(hŒssh_ptl_submit”h]”hŒssh_ptl_submit”…”�”}”(hj ]h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj]ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjæ\h²hh³jø\h´Mubj)�”}”(hŒ+(struct ssh_ptl *ptl, struct ssh_packet *p)”h]”(j)�”}”(hŒstruct ssh_ptl *ptl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj']h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj#]ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4]h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj#]ubh)�”}”(hhh]”j`)�”}”(hŒssh_ptl”h]”hŒssh_ptl”…”�”}”(hjE]h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjB]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jG]Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj ]sbŒc.ssh_ptl_submit”†”asbuh1hhj#]ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje]h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj#]ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjs]h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj#]ubj`)�”}”(hŒptl”h]”hŒptl”…”�”}”(hj€]h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj#]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj]ubj)�”}”(hŒstruct ssh_packet *p”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj™]h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj•]ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦]h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj•]ubh)�”}”(hhh]”j`)�”}”(hŒ ssh_packet”h]”hŒ ssh_packet”…”�”}”(hj·]h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj´]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¹]Œmodname”NŒ classname”Nj\j_)�”}”jb]”ja]Œc.ssh_ptl_submit”†”asbuh1hhj•]ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ]h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj•]ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjã]h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj•]ubj`)�”}”(hj…h]”hŒp”…”�”}”(hjð]h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj•]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj]ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjæ\h²hh³jø\h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjâ\h²hh³jø\h´Mubah}”(h]”jÝ\ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jø\h´Mhjß\h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ'Submit a packet to the transport layer.”h]”hŒ'Submit a packet to the transport layer.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mhj^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjß\h²hh³jø\h´Mubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j1^j¯j1^j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX**Parameters** ``struct ssh_ptl *ptl`` The packet transport layer to submit the packet to. ``struct ssh_packet *p`` The packet to submit. **Description** Submits a new packet to the transport layer, queuing it to be sent. This function should not be used for re-submission. **Return** Returns zero on success, ``-EINVAL`` if a packet field is invalid or the packet has been canceled prior to submission, ``-EALREADY`` if the packet has already been submitted, or ``-ESHUTDOWN`` if the packet transport layer has been shut down.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj;^h]”hŒ Parameters”…”�”}”(hj=^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj9^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mhj5^ubj)�”}”(hhh]”(j)�”}”(hŒL``struct ssh_ptl *ptl`` The packet transport layer to submit the packet to. ”h]”(j )�”}”(hŒ``struct ssh_ptl *ptl``”h]”j)�”}”(hjZ^h]”hŒstruct ssh_ptl *ptl”…”�”}”(hj\^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MhjT^ubj))�”}”(hhh]”hþ)�”}”(hŒ3The packet transport layer to submit the packet to.”h]”hŒ3The packet transport layer to submit the packet to.”…”�”}”(hjs^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jo^h´Mhjp^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjT^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jo^h´MhjQ^ubj)�”}”(hŒ/``struct ssh_packet *p`` The packet to submit. ”h]”(j )�”}”(hŒ``struct ssh_packet *p``”h]”j)�”}”(hj“^h]”hŒstruct ssh_packet *p”…”�”}”(hj•^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mhj�^ubj))�”}”(hhh]”hþ)�”}”(hŒThe packet to submit.”h]”hŒThe packet to submit.”…”�”}”(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&]”uh1jh³j¨^h´MhjQ^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj5^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³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mhj5^ubhþ)�”}”(hŒwSubmits a new packet to the transport layer, queuing it to be sent. This function should not be used for re-submission.”h]”hŒwSubmits a new packet to the transport layer, queuing it to be sent. This function should not be used for re-submission.”…”�”}”(hjä^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mhj5^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³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mhj5^ubhþ)�”}”(hŒòReturns zero on success, ``-EINVAL`` if a packet field is invalid or the packet has been canceled prior to submission, ``-EALREADY`` if the packet has already been submitted, or ``-ESHUTDOWN`` if the packet transport layer has been shut down.”h]”(hŒReturns zero on success, ”…”�”}”(hj _h²hh³Nh´Nubj)�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj _ubhŒS if a packet field is invalid or the packet has been canceled prior to submission, ”…”�”}”(hj _h²hh³Nh´Nubj)�”}”(hŒ ``-EALREADY``”h]”hŒ -EALREADY”…”�”}”(hj%_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj _ubhŒ. if the packet has already been submitted, or ”…”�”}”(hj _h²hh³Nh´Nubj)�”}”(hŒ``-ESHUTDOWN``”h]”hŒ -ESHUTDOWN”…”�”}”(hj7_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj _ubhŒ2 if the packet transport layer has been shut down.”…”�”}”(hj _h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mhj5^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_ptl_cancel (C function)”Œc.ssh_ptl_cancel”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ*void ssh_ptl_cancel (struct ssh_packet *p)”h]”j1)�”}”(hŒ)void ssh_ptl_cancel(struct ssh_packet *p)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjp_h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjl_h²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MšubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjl_h²hh³j~_h´MšubjZ)�”}”(hŒssh_ptl_cancel”h]”j`)�”}”(hŒssh_ptl_cancel”h]”hŒssh_ptl_cancel”…”�”}”(hj‘_h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj�_ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjl_h²hh³j~_h´Mšubj)�”}”(hŒ(struct ssh_packet *p)”h]”j)�”}”(hŒstruct ssh_packet *p”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj­_h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj©_ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº_h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj©_ubh)�”}”(hhh]”j`)�”}”(hŒ ssh_packet”h]”hŒ ssh_packet”…”�”}”(hjË_h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÈ_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÍ_Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj“_sbŒc.ssh_ptl_cancel”†”asbuh1hhj©_ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë_h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj©_ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjù_h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj©_ubj`)�”}”(hj…h]”hŒp”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj©_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¥_ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjl_h²hh³j~_h´Mšubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjh_h²hh³j~_h´Mšubah}”(h]”jc_ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j~_h´Mšhje_h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒCancel a packet.”h]”hŒCancel a packet.”…”�”}”(hj/`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mšhj,`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hje_h²hh³j~_h´Mšubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jG`j¯jG`j°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX§**Parameters** ``struct ssh_packet *p`` The packet to cancel. **Description** Cancels a packet. There are no guarantees on when completion and release callbacks will be called. This may occur during execution of this function or may occur at any point later. Note that it is not guaranteed that the packet will actually be canceled if the packet is concurrently completed by another process. The only guarantee of this function is that the packet will be completed (with success, failure, or cancellation) and released from the transport layer in a reasonable time-frame. May be called before the packet has been submitted, in which case any later packet submission fails.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjQ`h]”hŒ Parameters”…”�”}”(hjS`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjO`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MžhjK`ubj)�”}”(hhh]”j)�”}”(hŒ/``struct ssh_packet *p`` The packet to cancel. ”h]”(j )�”}”(hŒ``struct ssh_packet *p``”h]”j)�”}”(hjp`h]”hŒstruct ssh_packet *p”…”�”}”(hjr`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjn`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M›hjj`ubj))�”}”(hhh]”hþ)�”}”(hŒThe packet to cancel.”h]”hŒThe packet to cancel.”…”�”}”(hj‰`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j…`h´M›hj†`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j…`h´M›hjg`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjK`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³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M�hjK`ubhþ)�”}”(hŒ´Cancels a packet. There are no guarantees on when completion and release callbacks will be called. This may occur during execution of this function or may occur at any point later.”h]”hŒ´Cancels a packet. There are no guarantees on when completion and release callbacks will be called. This may occur during execution of this function or may occur at any point later.”…”�”}”(hjÁ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MœhjK`ubhþ)�”}”(hX8Note that it is not guaranteed that the packet will actually be canceled if the packet is concurrently completed by another process. The only guarantee of this function is that the packet will be completed (with success, failure, or cancellation) and released from the transport layer in a reasonable time-frame.”h]”hX8Note that it is not guaranteed that the packet will actually be canceled if the packet is concurrently completed by another process. The only guarantee of this function is that the packet will be completed (with success, failure, or cancellation) and released from the transport layer in a reasonable time-frame.”…”�”}”(hjÐ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M hjK`ubhþ)�”}”(hŒdMay be called before the packet has been submitted, in which case any later packet submission fails.”h]”hŒdMay be called before the packet has been submitted, in which case any later packet submission fails.”…”�”}”(hjß`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M¦hjK`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_ptl_rx_start (C function)”Œc.ssh_ptl_rx_start”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ*int ssh_ptl_rx_start (struct ssh_ptl *ptl)”h]”j1)�”}”(hŒ)int ssh_ptl_rx_start(struct ssh_ptl *ptl)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj ah²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M0ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj ah²hh³jah´M0ubjZ)�”}”(hŒssh_ptl_rx_start”h]”j`)�”}”(hŒssh_ptl_rx_start”h]”hŒssh_ptl_rx_start”…”�”}”(hj/ah²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj+aubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj ah²hh³jah´M0ubj)�”}”(hŒ(struct ssh_ptl *ptl)”h]”j)�”}”(hŒstruct ssh_ptl *ptl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjKah²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjGaubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXah²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjGaubh)�”}”(hhh]”j`)�”}”(hŒssh_ptl”h]”hŒssh_ptl”…”�”}”(hjiah²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjfaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jkaŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj1asbŒc.ssh_ptl_rx_start”†”asbuh1hhjGaubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰ah²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjGaubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj—ah²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjGaubj`)�”}”(hŒptl”h]”hŒptl”…”�”}”(hj¤ah²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjGaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjCaubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj ah²hh³jah´M0ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjah²hh³jah´M0ubah}”(h]”jaah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jah´M0hjah²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ-Start packet transport layer receiver thread.”h]”hŒ-Start packet transport layer receiver thread.”…”�”}”(hjÎah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M0hjËah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjah²hh³jah´M0ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jæaj¯jæaj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒ�**Parameters** ``struct ssh_ptl *ptl`` The packet transport layer. **Return** Returns zero on success, a negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjðah]”hŒ Parameters”…”�”}”(hjòah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjîaubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M4hjêaubj)�”}”(hhh]”j)�”}”(hŒ4``struct ssh_ptl *ptl`` The packet transport layer. ”h]”(j )�”}”(hŒ``struct ssh_ptl *ptl``”h]”j)�”}”(hjbh]”hŒstruct ssh_ptl *ptl”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj bubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M1hj bubj))�”}”(hhh]”hþ)�”}”(hŒThe packet transport layer.”h]”hŒThe packet transport layer.”…”�”}”(hj(bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j$bh´M1hj%bubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j$bh´M1hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêaubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjJbh]”hŒReturn”…”�”}”(hjLbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjHbubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M3hjêaubhþ)�”}”(hŒ:Returns zero on success, a negative error code on failure.”h]”hŒ:Returns zero on success, a negative error code on failure.”…”�”}”(hj`bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M3hjêaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_ptl_rx_stop (C function)”Œc.ssh_ptl_rx_stop”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ)int ssh_ptl_rx_stop (struct ssh_ptl *ptl)”h]”j1)�”}”(hŒ(int ssh_ptl_rx_stop(struct ssh_ptl *ptl)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hj�bh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj‹bh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MCubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžbh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj‹bh²hh³j�bh´MCubjZ)�”}”(hŒssh_ptl_rx_stop”h]”j`)�”}”(hŒssh_ptl_rx_stop”h]”hŒssh_ptl_rx_stop”…”�”}”(hj°bh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¬bubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj‹bh²hh³j�bh´MCubj)�”}”(hŒ(struct ssh_ptl *ptl)”h]”j)�”}”(hŒstruct ssh_ptl *ptl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÌbh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÈbubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙbh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÈbubh)�”}”(hhh]”j`)�”}”(hŒssh_ptl”h]”hŒssh_ptl”…”�”}”(hjêbh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjçbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jìbŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj²bsbŒc.ssh_ptl_rx_stop”†”asbuh1hhjÈbubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÈbubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÈbubj`)�”}”(hŒptl”h]”hŒptl”…”�”}”(hj%ch²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÈbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÄbubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj‹bh²hh³j�bh´MCubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj‡bh²hh³j�bh´MCubah}”(h]”j‚bah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j�bh´MChj„bh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ,Stop packet transport layer receiver thread.”h]”hŒ,Stop packet transport layer receiver thread.”…”�”}”(hjOch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MChjLch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj„bh²hh³j�bh´MCubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jgcj¯jgcj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hŒ�**Parameters** ``struct ssh_ptl *ptl`` The packet transport layer. **Return** Returns zero on success, a negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjqch]”hŒ Parameters”…”�”}”(hjsch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjocubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MGhjkcubj)�”}”(hhh]”j)�”}”(hŒ4``struct ssh_ptl *ptl`` The packet transport layer. ”h]”(j )�”}”(hŒ``struct ssh_ptl *ptl``”h]”j)�”}”(hj�ch]”hŒstruct ssh_ptl *ptl”…”�”}”(hj’ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽcubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MDhjŠcubj))�”}”(hhh]”hþ)�”}”(hŒThe packet transport layer.”h]”hŒThe packet transport layer.”…”�”}”(hj©ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¥ch´MDhj¦cubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjŠcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¥ch´MDhj‡cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjkcubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjËch]”hŒReturn”…”�”}”(hjÍch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÉcubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MFhjkcubhþ)�”}”(hŒ:Returns zero on success, a negative error code on failure.”h]”hŒ:Returns zero on success, a negative error code on failure.”…”�”}”(hjách²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MFhjkcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_ptl_rx_rcvbuf (C function)”Œc.ssh_ptl_rx_rcvbuf”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒHssize_t ssh_ptl_rx_rcvbuf (struct ssh_ptl *ptl, const u8 *buf, size_t n)”h]”j1)�”}”(hŒGssize_t ssh_ptl_rx_rcvbuf(struct ssh_ptl *ptl, const u8 *buf, size_t n)”h]”(h)�”}”(hhh]”j`)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jdŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssh_ptl_rx_rcvbuf”sbŒc.ssh_ptl_rx_rcvbuf”†”asbuh1hhj dh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MUubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5dh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj dh²hh³j4dh´MUubjZ)�”}”(hŒssh_ptl_rx_rcvbuf”h]”j`)�”}”(hj1dh]”hŒssh_ptl_rx_rcvbuf”…”�”}”(hjGdh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjCdubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj dh²hh³j4dh´MUubj)�”}”(hŒ.(struct ssh_ptl *ptl, const u8 *buf, size_t n)”h]”(j)�”}”(hŒstruct ssh_ptl *ptl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjbdh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj^dubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjodh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj^dubh)�”}”(hhh]”j`)�”}”(hŒssh_ptl”h]”hŒssh_ptl”…”�”}”(hj€dh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj}dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j‚dŒmodname”NŒ classname”Nj\j_)�”}”jb]”j/dŒc.ssh_ptl_rx_rcvbuf”†”asbuh1hhj^dubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjždh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj^dubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj¬dh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj^dubj`)�”}”(hŒptl”h]”hŒptl”…”�”}”(hj¹dh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj^dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjZdubj)�”}”(hŒ const u8 *buf”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjÒdh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÎdubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßdh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÎdubh)�”}”(hhh]”j`)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjðdh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjídubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jòdŒmodname”NŒ classname”Nj\j_)�”}”jb]”j/dŒc.ssh_ptl_rx_rcvbuf”†”asbuh1hhjÎdubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÎdubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÎdubj`)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj)eh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÎdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjZdubj)�”}”(hŒsize_t n”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjEeh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjBeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jGeŒmodname”NŒ classname”Nj\j_)�”}”jb]”j/dŒc.ssh_ptl_rx_rcvbuf”†”asbuh1hhj>eubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjceh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj>eubj`)�”•}”(hjkh]”hŒn”…”�”}”(hjqeh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj>eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjZdubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj dh²hh³j4dh´MUubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjdh²hh³j4dh´MUubah}”(h]”jdah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j4dh´MUhjdh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ9Push data from lower-layer transport to the packet layer.”h]”hŒ9Push data from lower-layer transport to the packet layer.”…”�”}”(hjšeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MUhj—eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjdh²hh³j4dh´MUubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j²ej¯j²ej°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hX2**Parameters** ``struct ssh_ptl *ptl`` The packet transport layer. ``const u8 *buf`` Pointer to the data to push to the layer. ``size_t n`` Size of the data to push to the layer, in bytes. **Description** Pushes data from a lower-layer transport to the receiver fifo buffer of the packet layer and notifies the receiver thread. Calls to this function are ignored once the packet layer has been shut down. **Return** Returns the number of bytes transferred (positive or zero) on success. Returns ``-ESHUTDOWN`` if the packet layer has been shut down.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj¼eh]”hŒ Parameters”…”�”}”(hj¾eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjºeubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MYhj¶eubj)�”}”(hhh]”(j)�”}”(hŒ4``struct ssh_ptl *ptl`` The packet transport layer. ”h]”(j )�”}”(hŒ``struct ssh_ptl *ptl``”h]”j)�”}”(hjÛeh]”hŒstruct ssh_ptl *ptl”…”�”}”(hjÝeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙeubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MWhjÕeubj))�”}”(hhh]”hþ)�”}”(hŒThe packet transport layer.”h]”hŒThe packet transport layer.”…”�”}”(hjôeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jðeh´MWhjñeubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÕeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jðeh´MWhjÒeubj)�”}”(hŒ<``const u8 *buf`` Pointer to the data to push to the layer. ”h]”(j )�”}”(hŒ``const u8 *buf``”h]”j)�”}”(hjfh]”hŒ const u8 *buf”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MXhjfubj))�”}”(hhh]”hþ)�”}”(hŒ)Pointer to the data to push to the layer.”h]”hŒ)Pointer to the data to push to the layer.”…”�”}”(hj-fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j)fh´MXhj*fubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j)fh´MXhjÒeubj)�”}”(hŒ>``size_t n`` Size of the data to push to the layer, in bytes. ”h]”(j )�”}”(hŒ ``size_t n``”h]”j)�”}”(hjMfh]”hŒsize_t n”…”�”}”(hjOfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKfubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MYhjGfubj))�”}”(hhh]”hþ)�”}”(hŒ0Size of the data to push to the layer, in bytes.”h]”hŒ0Size of the data to push to the layer, in bytes.”…”�”}”(hjffh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jbfh´MYhjcfubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjGfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jbfh´MYhjÒeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶eubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hjˆfh]”hŒ Description”…”�”}”(hjŠfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj†fubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M[hj¶eubhþ)�”}”(hŒÇPushes data from a lower-layer transport to the receiver fifo buffer of the packet layer and notifies the receiver thread. Calls to this function are ignored once the packet layer has been shut down.”h]”hŒÇPushes data from a lower-layer transport to the receiver fifo buffer of the packet layer and notifies the receiver thread. Calls to this function are ignored once the packet layer has been shut down.”…”�”}”(hjžfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MZhj¶eubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hj¯fh]”hŒReturn”…”�”}”(hj±fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj­fubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M^hj¶eubhþ)�”}”(hŒ…Returns the number of bytes transferred (positive or zero) on success. Returns ``-ESHUTDOWN`` if the packet layer has been shut down.”h]”(hŒOReturns the number of bytes transferred (positive or zero) on success. Returns ”…”�”}”(hjÅfh²hh³Nh´Nubj)�”}”(hŒ``-ESHUTDOWN``”h]”hŒ -ESHUTDOWN”…”�”}”(hjÍfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅfubhŒ( if the packet layer has been shut down.”…”�”}”(hjÅfh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M_hj¶eubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_ptl_shutdown (C function)”Œc.ssh_ptl_shutdown”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ+void ssh_ptl_shutdown (struct ssh_ptl *ptl)”h]”j1)�”}”(hŒ*void ssh_ptl_shutdown(struct ssh_ptl *ptl)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjgh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MqubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjgh²hh³jgh´MqubjZ)�”}”(hŒssh_ptl_shutdown”h]”j`)�”}”(hŒssh_ptl_shutdown”h]”hŒssh_ptl_shutdown”…”�”}”(hj'gh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj#gubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjgh²hh³jgh´Mqubj)�”}”(hŒ(struct ssh_ptl *ptl)”h]”j)�”}”(hŒstruct ssh_ptl *ptl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjCgh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj?gubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPgh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj?gubh)�”}”(hhh]”j`)�”}”(hŒssh_ptl”h]”hŒssh_ptl”…”�”}”(hjagh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj^gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jcgŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj)gsbŒc.ssh_ptl_shutdown”†”asbuh1hhj?gubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�gh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj?gubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj�gh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj?gubj`)�”}”(hŒptl”h]”hŒptl”…”�”}”(hjœgh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj?gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj;gubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjgh²hh³jgh´Mqubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjþfh²hh³jgh´Mqubah}”(h]”jùfah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jgh´Mqhjûfh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ%Shut down the packet transport layer.”h]”hŒ%Shut down the packet transport layer.”…”�”}”(hjÆgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MqhjÃgh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjûfh²hh³jgh´Mqubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jÞgj¯jÞgj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hXí**Parameters** ``struct ssh_ptl *ptl`` The packet transport layer. **Description** Shuts down the packet transport layer, removing and canceling all queued and pending packets. Packets canceled by this operation will be completed with ``-ESHUTDOWN`` as status. Receiver and transmitter threads will be stopped. As a result of this function, the transport layer will be marked as shut down. Submission of packets after the transport layer has been shut down will fail with ``-ESHUTDOWN``.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjègh]”hŒ Parameters”…”�”}”(hjêgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjægubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Muhjâgubj)�”}”(hhh]”j)�”}”(hŒ4``struct ssh_ptl *ptl`` The packet transport layer. ”h]”(j )�”}”(hŒ``struct ssh_ptl *ptl``”h]”j)�”}”(hjhh]”hŒstruct ssh_ptl *ptl”…”�”}”(hj hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mrhjhubj))�”}”(hhh]”hþ)�”}”(hŒThe packet transport layer.”h]”hŒThe packet transport layer.”…”�”}”(hj hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jhh´Mrhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jhh´Mrhjþgubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâgubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hjBhh]”hŒ Description”…”�”}”(hjDhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj@hubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mthjâgubhþ)�”}”(hŒãShuts down the packet transport layer, removing and canceling all queued and pending packets. Packets canceled by this operation will be completed with ``-ESHUTDOWN`` as status. Receiver and transmitter threads will be stopped.”h]”(hŒ˜Shuts down the packet transport layer, removing and canceling all queued and pending packets. Packets canceled by this operation will be completed with ”…”�”}”(hjXhh²hh³Nh´Nubj)�”}”(hŒ``-ESHUTDOWN``”h]”hŒ -ESHUTDOWN”…”�”}”(hj`hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXhubhŒ= as status. Receiver and transmitter threads will be stopped.”…”�”}”(hjXhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mshjâgubhþ)�”}”(hŒ°As a result of this function, the transport layer will be marked as shut down. Submission of packets after the transport layer has been shut down will fail with ``-ESHUTDOWN``.”h]”(hŒ¡As a result of this function, the transport layer will be marked as shut down. Submission of packets after the transport layer has been shut down will fail with ”…”�”}”(hjyhh²hh³Nh´Nubj)�”}”(hŒ``-ESHUTDOWN``”h]”hŒ -ESHUTDOWN”…”�”}”(hj�hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyhubhŒ.”…”�”}”(hjyhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mxhjâgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_ptl_init (C function)”Œc.ssh_ptl_init”hNt”auh1jhjh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ]int ssh_ptl_init (struct ssh_ptl *ptl, struct serdev_device *serdev, struct ssh_ptl_ops *ops)”h]”j1)�”}”(hŒ\int ssh_ptl_init(struct ssh_ptl *ptl, struct serdev_device *serdev, struct ssh_ptl_ops *ops)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjºhh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj¶hh²hh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MÞubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉhh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¶hh²hh³jÈhh´MÞubjZ)�”}”(hŒ ssh_ptl_init”h]”j`)�”}”(hŒ ssh_ptl_init”h]”hŒ ssh_ptl_init”…”�”}”(hjÛhh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj×hubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¶hh²hh³jÈhh´MÞubj)�”}”(hŒL(struct ssh_ptl *ptl, struct serdev_device *serdev, struct ssh_ptl_ops *ops)”h]”(j)�”}”(hŒstruct ssh_ptl *ptl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj÷hh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjóhubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjóhubh)�”}”(hhh]”j`)�”}”(hŒssh_ptl”h]”hŒssh_ptl”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jiŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjÝhsbŒc.ssh_ptl_init”†”asbuh1hhjóhubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5ih²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjóhubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjCih²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjóhubj`)�”}”(hŒptl”h]”hŒptl”…”�”}”(hjPih²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjóhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjïhubj)�”}”(hŒstruct serdev_device *serdev”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjiih²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjeiubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvih²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjeiubh)�”}”(hhh]”j`)�”}”(hŒ serdev_device”h]”hŒ serdev_device”…”�”}”(hj‡ih²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj„iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j‰iŒmodname”NŒ classname”Nj\j_)�”}”jb]”j1iŒc.ssh_ptl_init”†”asbuh1hhjeiubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥ih²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjeiubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj³ih²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjeiubj`)�”}”(hŒserdev”h]”hŒserdev”…”�”}”(hjÀih²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjeiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjïhubj)�”}”(hŒstruct ssh_ptl_ops *ops”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÙih²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÕiubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæih²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÕiubh)�”}”(hhh]”j`)�”}”(hŒ ssh_ptl_ops”h]”hŒ ssh_ptl_ops”…”�”}”(hj÷ih²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjôiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jùiŒmodname”NŒ classname”Nj\j_)�”}”jb]”j1iŒc.ssh_ptl_init”†”asbuh1hhjÕiubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÕiubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj#jh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÕiubj`)�”}”(hŒops”h]”hŒops”…”�”}”(hj0jh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÕiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjïhubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj¶hh²hh³jÈhh´MÞubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj²hh²hh³jÈhh´MÞubah}”(h]”j­hah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÈhh´MÞhj¯hh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ"Initialize packet transport layer.”h]”hŒ"Initialize packet transport layer.”…”�”}”(hjZjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MÞhjWjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¯hh²hh³jÈhh´MÞubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jrjj¯jrjj°‰j±‰j²‰uh1j%h²hhjh³Nh´Nubj´)�”}”(hXC**Parameters** ``struct ssh_ptl *ptl`` The packet transport layer to initialize. ``struct serdev_device *serdev`` The underlying serial device, i.e. the lower-level transport. ``struct ssh_ptl_ops *ops`` Packet layer operations. **Description** Initializes the given packet transport layer. Transmitter and receiver threads must be started separately via ssh_ptl_tx_start() and ssh_ptl_rx_start(), after the packet-layer has been initialized and the lower-level transport layer has been set up. **Return** Returns zero on success and a nonzero error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj|jh]”hŒ Parameters”…”�”}”(hj~jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjzjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mâhjvjubj)�”}”(hhh]”(j)�”}”(hŒB``struct ssh_ptl *ptl`` The packet transport layer to initialize. ”h]”(j )�”}”(hŒ``struct ssh_ptl *ptl``”h]”j)�”}”(hj›jh]”hŒstruct ssh_ptl *ptl”…”�”}”(hj�jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™jubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mßhj•jubj))�”}”(hhh]”hþ)�”}”(hŒ)The packet transport layer to initialize.”h]”hŒ)The packet transport layer to initialize.”…”�”}”(hj´jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j°jh´Mßhj±jubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj•jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j°jh´Mßhj’jubj)�”}”(hŒ_``struct serdev_device *serdev`` The underlying serial device, i.e. the lower-level transport. ”h]”(j )�”}”(hŒ ``struct serdev_device *serdev``”h]”j)�”}”(hjÔjh]”hŒstruct serdev_device *serdev”…”�”}”(hjÖjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MàhjÎjubj))�”}”(hhh]”hþ)�”}”(hŒ=The underlying serial device, i.e. the lower-level transport.”h]”hŒ=The underlying serial device, i.e. the lower-level transport.”…”�”}”(hjíjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jéjh´Màhjêjubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÎjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jéjh´Màhj’jubj)�”}”(hŒ5``struct ssh_ptl_ops *ops`` Packet layer operations. ”h]”(j )�”}”(hŒ``struct ssh_ptl_ops *ops``”h]”j)�”}”(hj kh]”hŒstruct ssh_ptl_ops *ops”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj kubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Máhjkubj))�”}”(hhh]”hþ)�”}”(hŒPacket layer operations.”h]”hŒPacket layer operations.”…”�”}”(hj&kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j"kh´Máhj#kubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j"kh´Máhj’jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjvjubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hjHkh]”hŒ Description”…”�”}”(hjJkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjFkubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mãhjvjubhþ)�”}”(hŒùInitializes the given packet transport layer. Transmitter and receiver threads must be started separately via ssh_ptl_tx_start() and ssh_ptl_rx_start(), after the packet-layer has been initialized and the lower-level transport layer has been set up.”h]”hŒùInitializes the given packet transport layer. Transmitter and receiver threads must be started separately via ssh_ptl_tx_start() and ssh_ptl_rx_start(), after the packet-layer has been initialized and the lower-level transport layer has been set up.”…”�”}”(hj^kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mâhjvjubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjokh]”hŒReturn”…”�”}”(hjqkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjmkubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‘/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:26: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mçhjvjubhþ)�”}”(hŒ`.”h]”(hŒState-flags for ”…”�”}”(hj�mh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct ssh_rtl `”h]”j)�”}”(hj™mh]”hŒstruct ssh_rtl”…”�”}”(hj›mh²hh³Nh´Nubah}”(h]”h ]”(jU:j¨Œc-type”eh"]”h$]”h&]”uh1jhj—mubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”ja:Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j\j_)�”}”jb]”je)�”}”jXjGmsbŒc.ssh_rtl_state_flags”†”asbjn:Œssh_rtl”uh1hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´Khj�mubhŒ.”…”�”}”(hj�mh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´KhjŒmh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjBmh²hh³jZmh´Kubeh}”(h]”h ]”(j¨Œenum”eh"]”h$]”h&]”j­j¨j®jÒmj¯jÒmj°‰j±‰j²‰uh1j%h²hhj#mh³Nh´Nubj´)�”}”(hŒª**Constants** ``SSH_RTL_SF_SHUTDOWN_BIT`` Indicates that the request transport layer has been shut down or is being shut down and should not accept any new requests.”h]”(hþ)�”}”(hŒ **Constants**”h]”j¾)�”}”(hjÜmh]”hŒ Constants”…”�”}”(hjÞmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÚmubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´KhjÖmubj)�”}”(hhh]”j)�”}”(hŒ—``SSH_RTL_SF_SHUTDOWN_BIT`` Indicates that the request transport layer has been shut down or is being shut down and should not accept any new requests.”h]”(j )�”}”(hŒ``SSH_RTL_SF_SHUTDOWN_BIT``”h]”j)�”}”(hjûmh]”hŒSSH_RTL_SF_SHUTDOWN_BIT”…”�”}”(hjýmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùmubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´Khjõmubj))�”}”(hhh]”hþ)�”}”(hŒ{Indicates that the request transport layer has been shut down or is being shut down and should not accept any new requests.”h]”hŒ{Indicates that the request transport layer has been shut down or is being shut down and should not accept any new requests.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jnh´Khjnubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjõmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jnh´Khjòmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖmubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj#mh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_rtl_ops (C struct)”Œ c.ssh_rtl_ops”hNt”auh1jhj#mh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ ssh_rtl_ops”h]”j1)�”}”(hŒstruct ssh_rtl_ops”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjTnh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjPnh²hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K$ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbnh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjPnh²hh³janh´K$ubjZ)�”}”(hŒ ssh_rtl_ops”h]”j`)�”}”(hjNnh]”hŒ ssh_rtl_ops”…”�”}”(hjtnh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjpnubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjPnh²hh³janh´K$ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjLnh²hh³janh´K$ubah}”(h]”jGnah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³janh´K$hjInh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ0Callback operations for request transport layer.”h]”hŒ0Callback operations for request transport layer.”…”�”}”(hj–nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K"hj“nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjInh²hh³janh´K$ubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®j®nj¯j®nj°‰j±‰j²‰uh1j%h²hhj#mh³Nh´Nubj´)�”}”(hX®**Definition**:: struct ssh_rtl_ops { void (*handle_event)(struct ssh_rtl *rtl, const struct ssh_command *cmd, const struct ssam_span *data); }; **Members** ``handle_event`` Function called when a SSH event has been received. The specified function takes the request layer, received command struct, and corresponding payload as arguments. If the event has no payload, the payload span is empty (not ``NULL``).”h]”(hþ)�”}”(hŒ**Definition**::”h]”(j¾)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjºnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj¶nubhŒ:”…”�”}”(hj¶nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K&hj²nubjÙ)�”}”(hŒƒstruct ssh_rtl_ops { void (*handle_event)(struct ssh_rtl *rtl, const struct ssh_command *cmd, const struct ssam_span *data); };”h]”hŒƒstruct ssh_rtl_ops { void (*handle_event)(struct ssh_rtl *rtl, const struct ssh_command *cmd, const struct ssam_span *data); };”…”�”}”hjÓnsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K(hj²nubhþ)�”}”(hŒ **Members**”h]”j¾)�”}”(hjänh]”hŒMembers”…”�”}”(hjænh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjânubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K,hj²nubj)�”}”(hhh]”j)�”}”(hŒü``handle_event`` Function called when a SSH event has been received. The specified function takes the request layer, received command struct, and corresponding payload as arguments. If the event has no payload, the payload span is empty (not ``NULL``).”h]”(j )�”}”(hŒ``handle_event``”h]”j)�”}”(hjoh]”hŒ handle_event”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K&hjýnubj))�”}”(hhh]”hþ)�”}”(hŒëFunction called when a SSH event has been received. The specified function takes the request layer, received command struct, and corresponding payload as arguments. If the event has no payload, the payload span is empty (not ``NULL``).”h]”(hŒáFunction called when a SSH event has been received. The specified function takes the request layer, received command struct, and corresponding payload as arguments. If the event has no payload, the payload span is empty (not ”…”�”}”(hjoh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj$oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubhŒ).”…”�”}”(hjoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K$hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjýnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³joh´K&hjúnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj#mh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_rtl (C struct)”Œ c.ssh_rtl”hNt”auh1jhj#mh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒssh_rtl”h]”j1)�”}”(hŒstruct ssh_rtl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjooh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjkoh²hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K-ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}oh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjkoh²hh³j|oh´K-ubjZ)�”}”(hŒssh_rtl”h]”j`)�”}”(hjioh]”hŒssh_rtl”…”�”}”(hj�oh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj‹oubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjkoh²hh³j|oh´K-ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjgoh²hh³j|oh´K-ubah}”(h]”jboah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j|oh´K-hjdoh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒSSH request transport layer.”h]”hŒSSH request transport layer.”…”�”}”(hj±oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K.hj®oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjdoh²hh³j|oh´K-ubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®jÉoj¯jÉoj°‰j±‰j²‰uh1j%h²hhj#mh³Nh´Nubj´)�”}”(hXä**Definition**:: struct ssh_rtl { struct ssh_ptl ptl; unsigned long state; struct { spinlock_t lock; struct list_head head; } queue; struct { spinlock_t lock; struct list_head head; atomic_t count; } pending; struct { struct work_struct work; } tx; struct { spinlock_t lock; ktime_t timeout; ktime_t expires; struct delayed_work reaper; } rtx_timeout; struct ssh_rtl_ops ops; }; **Members** ``ptl`` Underlying packet transport layer. ``state`` State(-flags) of the transport layer. ``queue`` Request submission queue. ``queue.lock`` Lock for modifying the request submission queue. ``queue.head`` List-head of the request submission queue. ``pending`` Set/list of pending requests. ``pending.lock`` Lock for modifying the request set. ``pending.head`` List-head of the pending set/list. ``pending.count`` Number of currently pending requests. ``tx`` Transmitter subsystem. ``tx.work`` Transmitter work item. ``rtx_timeout`` Retransmission timeout subsystem. ``rtx_timeout.lock`` Lock for modifying the retransmission timeout reaper. ``rtx_timeout.timeout`` Timeout interval for retransmission. ``rtx_timeout.expires`` Time specifying when the reaper work is next scheduled. ``rtx_timeout.reaper`` Work performing timeout checks and subsequent actions. ``ops`` Request layer operations.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(j¾)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÕoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÑoubhŒ:”…”�”}”(hjÑoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K2hjÍoubjÙ)�”}”(hXåstruct ssh_rtl { struct ssh_ptl ptl; unsigned long state; struct { spinlock_t lock; struct list_head head; } queue; struct { spinlock_t lock; struct list_head head; atomic_t count; } pending; struct { struct work_struct work; } tx; struct { spinlock_t lock; ktime_t timeout; ktime_t expires; struct delayed_work reaper; } rtx_timeout; struct ssh_rtl_ops ops; };”h]”hXåstruct ssh_rtl { struct ssh_ptl ptl; unsigned long state; struct { spinlock_t lock; struct list_head head; } queue; struct { spinlock_t lock; struct list_head head; atomic_t count; } pending; struct { struct work_struct work; } tx; struct { spinlock_t lock; ktime_t timeout; ktime_t expires; struct delayed_work reaper; } rtx_timeout; struct ssh_rtl_ops ops; };”…”�”}”hjîosbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K4hjÍoubhþ)�”}”(hŒ **Members**”h]”j¾)�”}”(hjÿoh]”hŒMembers”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjýoubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´KLhjÍoubj)�”}”(hhh]”(j)�”}”(hŒ+``ptl`` Underlying packet transport layer. ”h]”(j )�”}”(hŒ``ptl``”h]”j)�”}”(hjph]”hŒptl”…”�”}”(hj ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K0hjpubj))�”}”(hhh]”hþ)�”}”(hŒ"Underlying packet transport layer.”h]”hŒ"Underlying packet transport layer.”…”�”}”(hj7ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j3ph´K0hj4pubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j3ph´K0hjpubj)�”}”(hŒ0``state`` State(-flags) of the transport layer. ”h]”(j )�”}”(hŒ ``state``”h]”j)�”}”(hjWph]”hŒstate”…”�”}”(hjYph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUpubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K1hjQpubj))�”}”(hhh]”hþ)�”}”(hŒ%State(-flags) of the transport layer.”h]”hŒ%State(-flags) of the transport layer.”…”�”}”(hjpph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jlph´K1hjmpubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjQpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jlph´K1hjpubj)�”}”(hŒ$``queue`` Request submission queue. ”h]”(j )�”}”(hŒ ``queue``”h]”j)�”}”(hj�ph]”hŒqueue”…”�”}”(hj’ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽpubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K2hjŠpubj))�”}”(hhh]”hþ)�”}”(hŒRequest submission queue.”h]”hŒRequest submission queue.”…”�”}”(hj©ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¥ph´K2hj¦pubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjŠpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¥ph´K2hjpubj)�”}”(hŒ@``queue.lock`` Lock for modifying the request submission queue. ”h]”(j )�”}”(hŒ``queue.lock``”h]”j)�”}”(hjÉph]”hŒ queue.lock”…”�”}”(hjËph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇpubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K3hjÃpubj))�”}”(hhh]”hþ)�”}”(hŒ0Lock for modifying the request submission queue.”h]”hŒ0Lock for modifying the request submission queue.”…”�”}”(hjâph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÞph´K3hjßpubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÃpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÞph´K3hjpubj)�”}”(hŒ:``queue.head`` List-head of the request submission queue. ”h]”(j )�”}”(hŒ``queue.head``”h]”j)�”}”(hjqh]”hŒ queue.head”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K4hjüpubj))�”}”(hhh]”hþ)�”}”(hŒ*List-head of the request submission queue.”h]”hŒ*List-head of the request submission queue.”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jqh´K4hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjüpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jqh´K4hjpubj)�”}”(hŒ*``pending`` Set/list of pending requests. ”h]”(j )�”}”(hŒ ``pending``”h]”j)�”}”(hj;qh]”hŒpending”…”�”}”(hj=qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9qubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K5hj5qubj))�”}”(hhh]”hþ)�”}”(hŒSet/list of pending requests.”h]”hŒSet/list of pending requests.”…”�”}”(hjTqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jPqh´K5hjQqubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj5qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jPqh´K5hjpubj)�”}”(hŒ5``pending.lock`` Lock for modifying the request set. ”h]”(j )�”}”(hŒ``pending.lock``”h]”j)�”}”(hjtqh]”hŒ pending.lock”…”�”}”(hjvqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrqubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K6hjnqubj))�”}”(hhh]”hþ)�”}”(hŒ#Lock for modifying the request set.”h]”hŒ#Lock for modifying the request set.”…”�”}”(hj�qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j‰qh´K6hjŠqubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjnqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‰qh´K6hjpubj)�”}”(hŒ4``pending.head`` List-head of the pending set/list. ”h]”(j )�”}”(hŒ``pending.head``”h]”j)�”}”(hj­qh]”hŒ pending.head”…”�”}”(hj¯qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«qubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K7hj§qubj))�”}”(hhh]”hþ)�”}”(hŒ"List-head of the pending set/list.”h]”hŒ"List-head of the pending set/list.”…”�”}”(hjÆqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÂqh´K7hjÃqubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj§qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÂqh´K7hjpubj)�”}”(hŒ8``pending.count`` Number of currently pending requests. ”h]”(j )�”}”(hŒ``pending.count``”h]”j)�”}”(hjæqh]”hŒ pending.count”…”�”}”(hjèqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäqubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K8hjàqubj))�”}”(hhh]”hþ)�”}”(hŒ%Number of currently pending requests.”h]”hŒ%Number of currently pending requests.”…”�”}”(hjÿqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jûqh´K8hjüqubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjàqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jûqh´K8hjpubj)�”}”(hŒ``tx`` Transmitter subsystem. ”h]”(j )�”}”(hŒ``tx``”h]”j)�”}”(hjrh]”hŒtx”…”�”}”(hj!rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K9hjrubj))�”}”(hhh]”hþ)�”}”(hŒTransmitter subsystem.”h]”hŒTransmitter subsystem.”…”�”}”(hj8rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j4rh´K9hj5rubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j4rh´K9hjpubj)�”}”(hŒ#``tx.work`` Transmitter work item. ”h]”(j )�”}”(hŒ ``tx.work``”h]”j)�”}”(hjXrh]”hŒtx.work”…”�”}”(hjZrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVrubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K:hjRrubj))�”}”(hhh]”hþ)�”}”(hŒTransmitter work item.”h]”hŒTransmitter work item.”…”�”}”(hjqrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jmrh´K:hjnrubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjRrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jmrh´K:hjpubj)�”}”(hŒ2``rtx_timeout`` Retransmission timeout subsystem. ”h]”(j )�”}”(hŒ``rtx_timeout``”h]”j)�”}”(hj‘rh]”hŒ rtx_timeout”…”�”}”(hj“rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�rubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K;hj‹rubj))�”}”(hhh]”hþ)�”}”(hŒ!Retransmission timeout subsystem.”h]”hŒ!Retransmission timeout subsystem.”…”�”}”(hjªrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¦rh´K;hj§rubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj‹rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¦rh´K;hjpubj)�”}”(hŒK``rtx_timeout.lock`` Lock for modifying the retransmission timeout reaper. ”h]”(j )�”}”(hŒ``rtx_timeout.lock``”h]”j)�”}”(hjÊrh]”hŒrtx_timeout.lock”…”�”}”(hjÌrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈrubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´Ksh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:subah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K>hj6subj))�”}”(hhh]”hþ)�”}”(hŒ7Time specifying when the reaper work is next scheduled.”h]”hŒ7Time specifying when the reaper work is next scheduled.”…”�”}”(hjUsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jQsh´K>hjRsubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj6subeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jQsh´K>hjpubj)�”}”(hŒN``rtx_timeout.reaper`` Work performing timeout checks and subsequent actions. ”h]”(j )�”}”(hŒ``rtx_timeout.reaper``”h]”j)�”}”(hjush]”hŒrtx_timeout.reaper”…”�”}”(hjwsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjssubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K?hjosubj))�”}”(hhh]”hþ)�”}”(hŒ6Work performing timeout checks and subsequent actions.”h]”hŒ6Work performing timeout checks and subsequent actions.”…”�”}”(hjŽsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jŠsh´K?hj‹subah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjosubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŠsh´K?hjpubj)�”}”(hŒ!``ops`` Request layer operations.”h]”(j )�”}”(hŒ``ops``”h]”j)�”}”(hj®sh]”hŒops”…”�”}”(hj°sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬subah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K?hj¨subj))�”}”(hhh]”hþ)�”}”(hŒRequest layer operations.”h]”hŒRequest layer operations.”…”�”}”(hjÇsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´K@hjÄsubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj¨subeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÃsh´K?hjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj#mh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_rtl_get_device (C function)”Œc.ssh_rtl_get_device”hNt”auh1jhj#mh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ8struct device * ssh_rtl_get_device (struct ssh_rtl *rtl)”h]”j1)�”}”(hŒ6struct device *ssh_rtl_get_device(struct ssh_rtl *rtl)”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjth²hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´KhubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjth²hh³jth´Khubh)�”}”(hhh]”j`)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj'th²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj$tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j)tŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssh_rtl_get_device”sbŒc.ssh_rtl_get_device”†”asbuh1hhjth²hh³jth´KhubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHth²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjth²hh³jth´Khubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjVth²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjth²hh³jth´KhubjZ)�”}”(hŒssh_rtl_get_device”h]”j`)�”}”(hjEth]”hŒssh_rtl_get_device”…”�”}”(hjgth²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjctubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjth²hh³jth´Khubj)�”}”(hŒ(struct ssh_rtl *rtl)”h]”j)�”}”(hŒstruct ssh_rtl *rtl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj‚th²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj~tubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�th²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj~tubh)�”}”(hhh]”j`)�”}”(hŒssh_rtl”h]”hŒssh_rtl”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj�tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¢tŒmodname”NŒ classname”Nj\j_)�”}”jb]”jCtŒc.ssh_rtl_get_device”†”asbuh1hhj~tubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾th²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj~tubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÌth²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj~tubj`)�”}”(hŒrtl”h]”hŒrtl”…”�”}”(hjÙth²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj~tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjztubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjth²hh³jth´Khubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjth²hh³jth´Khubah}”(h]”jûsah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jth´Khhjýsh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ3Get device associated with request transport layer.”h]”hŒ3Get device associated with request transport layer.”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´Khhjuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjýsh²hh³jth´Khubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®juj¯juj°‰j±‰j²‰uh1j%h²hhj#mh³Nh´Nubj´)�”}”(hŒž**Parameters** ``struct ssh_rtl *rtl`` The request transport layer. **Return** Returns the device on which the given request transport layer builds upon.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj%uh]”hŒ Parameters”…”�”}”(hj'uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj#uubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´Klhjuubj)�”}”(hhh]”j)�”}”(hŒ5``struct ssh_rtl *rtl`` The request transport layer. ”h]”(j )�”}”(hŒ``struct ssh_rtl *rtl``”h]”j)�”}”(hjDuh]”hŒstruct ssh_rtl *rtl”…”�”}”(hjFuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBuubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´Kihj>uubj))�”}”(hhh]”hþ)�”}”(hŒThe request transport layer.”h]”hŒThe request transport layer.”…”�”}”(hj]uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jYuh´KihjZuubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj>uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jYuh´Kihj;uubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjuh]”hŒReturn”…”�”}”(hj�uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj}uubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´Kkhjuubhþ)�”}”(hŒJReturns the device on which the given request transport layer builds upon.”h]”hŒJReturns the device on which the given request transport layer builds upon.”…”�”}”(hj•uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´Kkhjuubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj#mh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_request_rtl (C function)”Œc.ssh_request_rtl”hNt”auh1jhj#mh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ;struct ssh_rtl * ssh_request_rtl (struct ssh_request *rqst)”h]”j1)�”}”(hŒ9struct ssh_rtl *ssh_request_rtl(struct ssh_request *rqst)”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÄuh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÀuh²hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´KtubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒuh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÀuh²hh³jÑuh´Ktubh)�”}”(hhh]”j`)�”}”(hŒssh_rtl”h]”hŒssh_rtl”…”�”}”(hjãuh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjàuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jåuŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssh_request_rtl”sbŒc.ssh_request_rtl”†”asbuh1hhjÀuh²hh³jÑuh´KtubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÀuh²hh³jÑuh´Ktubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÀuh²hh³jÑuh´KtubjZ)�”}”(hŒssh_request_rtl”h]”j`)�”}”(hjvh]”hŒssh_request_rtl”…”�”}”(hj#vh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjvubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÀuh²hh³jÑuh´Ktubj)�”}”(hŒ(struct ssh_request *rqst)”h]”j)�”}”(hŒstruct ssh_request *rqst”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj>vh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj:vubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKvh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj:vubh)�”}”(hhh]”j`)�”}”(hŒ ssh_request”h]”hŒ ssh_request”…”�”}”(hj\vh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjYvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j^vŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÿuŒc.ssh_request_rtl”†”asbuh1hhj:vubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzvh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj:vubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjˆvh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj:vubj`)�”}”(hŒrqst”h]”hŒrqst”…”�”}”(hj•vh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj:vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj6vubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÀuh²hh³jÑuh´Ktubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj¼uh²hh³jÑuh´Ktubah}”(h]”j·uah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÑuh´Kthj¹uh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ4Get request transport layer associated with request.”h]”hŒ4Get request transport layer associated with request.”…”�”}”(hj¿vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´Kthj¼vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¹uh²hh³jÑuh´Ktubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j×vj¯j×vj°‰j±‰j²‰uh1j%h²hhj#mh³Nh´Nubj´)�”}”(hŒÏ**Parameters** ``struct ssh_request *rqst`` The request to get the request transport layer reference for. **Return** Returns the :c:type:`struct ssh_rtl ` associated with the given SSH request.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjávh]”hŒ Parameters”…”�”}”(hjãvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjßvubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´KxhjÛvubj)�”}”(hhh]”j)�”}”(hŒ[``struct ssh_request *rqst`` The request to get the request transport layer reference for. ”h]”(j )�”}”(hŒ``struct ssh_request *rqst``”h]”j)�”}”(hjwh]”hŒstruct ssh_request *rqst”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþvubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´Kuhjúvubj))�”}”(hhh]”hþ)�”}”(hŒ=The request to get the request transport layer reference for.”h]”hŒ=The request to get the request transport layer reference for.”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jwh´Kuhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjúvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jwh´Kuhj÷vubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛvubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hj;wh]”hŒReturn”…”�”}”(hj=wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj9wubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´KwhjÛvubhþ)�”}”(hŒUReturns the :c:type:`struct ssh_rtl ` associated with the given SSH request.”h]”(hŒ Returns the ”…”�”}”(hjQwh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct ssh_rtl `”h]”j)�”}”(hj[wh]”hŒstruct ssh_rtl”…”�”}”(hj]wh²hh³Nh´Nubah}”(h]”h ]”(jU:j¨Œc-type”eh"]”h$]”h&]”uh1jhjYwubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”ja:Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j\j_)�”}”jb]”sbjn:Œssh_rtl”uh1hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:33: ./drivers/platform/surface/aggregator/ssh_request_layer.h”h´KwhjQwubhŒ' associated with the given SSH request.”…”�”}”(hjQwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j{wh´KwhjÛvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj#mh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ)ssh_rtl_should_drop_response (C function)”Œc.ssh_rtl_should_drop_response”hNt”auh1jhj#mh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ(bool ssh_rtl_should_drop_response (void)”h]”j1)�”}”(hŒ'bool ssh_rtl_should_drop_response(void)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hj¦wh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj¢wh²hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´KAubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´wh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¢wh²hh³j³wh´KAubjZ)�”}”(hŒssh_rtl_should_drop_response”h]”j`)�”}”(hŒssh_rtl_should_drop_response”h]”hŒssh_rtl_should_drop_response”…”�”}”(hjÆwh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÂwubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¢wh²hh³j³wh´KAubj)�”}”(hŒ(void)”h]”j)�”}”(hŒvoid”•h]”já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjâwh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÞwubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÚwubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj¢wh²hh³j³wh´KAubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjžwh²hh³j³wh´KAubah}”(h]”j™wah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j³wh´KAhj›wh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ/Error injection hook to drop request responses.”h]”hŒ/Error injection hook to drop request responses.”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´KAhj xh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj›wh²hh³j³wh´KAubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j$xj¯j$xj°‰j±‰j²‰uh1j%h²hhj#mh³Nh´Nubj´)�”}”(hŒœ**Parameters** ``void`` no arguments **Description** Useful to cause request transmission timeouts in the driver by dropping the response to a request.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj.xh]”hŒ Parameters”…”�”}”(hj0xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj,xubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´KEhj(xubj)�”}”(hhh]”j)�”}”(hŒ``void`` no arguments ”h]”(j )�”}”(hŒ``void``”h]”j)�”}”(hjMxh]”hŒvoid”…”�”}”(hjOxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKxubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´KhjGxubj))�”}”(hhh]”hþ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjfxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jbxh´Khjcxubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjGxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jbxh´KhjDxubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(xubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hjˆxh]”hŒ Description”…”�”}”(hjŠxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj†xubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Khj(xubhþ)�”}”(hŒbUseful to cause request transmission timeouts in the driver by dropping the response to a request.”h]”hŒbUseful to cause request transmission timeouts in the driver by dropping the response to a request.”…”�”}”(hjžxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´KBhj(xubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj#mh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_rtl_submit (C function)”Œc.ssh_rtl_submit”hNt”auh1jhj#mh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒBint ssh_rtl_submit (struct ssh_rtl *rtl, struct ssh_request *rqst)”h]”j1)�”}”(hŒAint ssh_rtl_submit(struct ssh_rtl *rtl, struct ssh_request *rqst)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjÍxh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÉxh²hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M]ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜxh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÉxh²hh³jÛxh´M]ubjZ)�”}”(hŒssh_rtl_submit”h]”j`)�”}”(hŒssh_rtl_submit”h]”hŒssh_rtl_submit”…”�”}”(hjîxh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjêxubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÉxh²hh³jÛxh´M]ubj)�”}”(hŒ/(struct ssh_rtl *rtl, struct ssh_request *rqst)”h]”(j)�”}”(hŒstruct ssh_rtl *rtl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj yh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjyubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjyubh)�”}”(hhh]”j`)�”}”(hŒssh_rtl”h]”hŒssh_rtl”…”�”}”(hj(yh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj%yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j*yŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjðxsbŒc.ssh_rtl_submit”†”asbuh1hhjyubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHyh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjyubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjVyh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjyubj`)�”}”(hŒrtl”h]”hŒrtl”…”�”}”(hjcyh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjyubj)�”}”(hŒstruct ssh_request *rqst”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj|yh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjxyubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰yh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjxyubh)�”}”(hhh]”j`)�”}”(hŒ ssh_request”h]”hŒ ssh_request”…”�”}”(hjšyh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj—yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jœyŒmodname”NŒ classname”Nj\j_)�”}”jb]”jDyŒc.ssh_rtl_submit”†”asbuh1hhjxyubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸yh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjxyubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÆyh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjxyubj`)�”}”(hŒrqst”h]”hŒrqst”…”�”}”(hjÓyh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjxyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjyubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÉxh²hh³jÛxh´M]ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÅxh²hh³jÛxh´M]ubah}”(h]”jÀxah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÛxh´M]hjÂxh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ(Submit a request to the transport layer.”h]”hŒ(Submit a request to the transport layer.”…”�”}”(hjýyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M]hjúyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÂxh²hh³jÛxh´M]ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jzj¯jzj°‰j±‰j²‰uh1j%h²hhj#mh³Nh´Nubj´)�”}”(hX**Parameters** ``struct ssh_rtl *rtl`` The request transport layer. ``struct ssh_request *rqst`` The request to submit. **Description** Submits a request to the transport layer. A single request may not be submitted multiple times without reinitializing it. **Return** Returns zero on success, ``-EINVAL`` if the request type is invalid or the request has been canceled prior to submission, ``-EALREADY`` if the request has already been submitted, or ``-ESHUTDOWN`` in case the request transport layer has been shut down.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjzh]”hŒ Parameters”…”�”}”(hj!zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Mahjzubj)�”}”(hhh]”(j)�”}”(hŒ5``struct ssh_rtl *rtl`` The request transport layer. ”h]”(j )�”}”(hŒ``struct ssh_rtl *rtl``”h]”j)�”}”(hj>zh]”hŒstruct ssh_rtl *rtl”…”�”}”(hj@zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj}ubhŒ is ”…”�”}”hj}sbj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjP}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}ubhŒF, this will cancel the given request regardless of the state it is in.”…”�”}”(hj}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MÅhjc|ubhþ)�”}”(hXIf the request has been canceled by calling this function, both completion and release callbacks of the request will be executed in a reasonable time-frame. This may happen during execution of this function, however, there is no guarantee for this. For example, a request currently transmitting will be canceled/completed only after transmission has completed, and the respective callbacks will be executed on the transmitter thread, which may happen during, but also some time after execution of the cancel function.”h]”hXIf the request has been canceled by calling this function, both completion and release callbacks of the request will be executed in a reasonable time-frame. This may happen during execution of this function, however, there is no guarantee for this. For example, a request currently transmitting will be canceled/completed only after transmission has completed, and the respective callbacks will be executed on the transmitter thread, which may happen during, but also some time after execution of the cancel function.”…”�”}”(hji}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MÊhjc|ubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjz}h]”hŒReturn”…”�”}”(hj|}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjx}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MÓhjc|ubhþ)�”}”(hŒÜReturns ``true`` if the given request has been canceled or completed, either by this function or prior to calling this function, ``false`` otherwise. If **pending** is ``true``, this function will always return ``true``.”h]”(hŒReturns ”…”�”}”(hj�}h²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj˜}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�}ubhŒq if the given request has been canceled or completed, either by this function or prior to calling this function, ”…”�”}”(hj�}h²hh³Nh´Nubj)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjª}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�}ubhŒ otherwise. If ”…”�”}”(hj�}h²hh³Nh´Nubj¾)�”}”(hŒ **pending**”h]”hŒpending”…”�”}”(hj¼}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj�}ubhŒ is ”…”�”}”(hj�}h²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjÎ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�}ubhŒ#, this function will always return ”…”�”}”(hj�}h²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjà}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�}ubhŒ.”…”�”}”(hj�}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MÔhjc|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj#mh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_request_init (C function)”Œc.ssh_request_init”hNt”auh1jhj#mh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒqint ssh_request_init (struct ssh_request *rqst, enum ssam_request_flags flags, const struct ssh_request_ops *ops)”h]”j1)�”}”(hŒpint ssh_request_init(struct ssh_request *rqst, enum ssam_request_flags flags, const struct ssh_request_ops *ops)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj~h²hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MÍubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(~h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj~h²hh³j'~h´MÍubjZ)�”}”(hŒssh_request_init”h]”j`)�”}”(hŒssh_request_init”h]”hŒssh_request_init”…”�”}”(hj:~h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj6~ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj~h²hh³j'~h´MÍubj)�”}”(hŒ\(struct ssh_request *rqst, enum ssam_request_flags flags, const struct ssh_request_ops *ops)”h]”(j)�”}”(hŒstruct ssh_request *rqst”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjV~h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjR~ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc~h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjR~ubh)�”}”(hhh]”j`)�”}”(hŒ ssh_request”h]”hŒ ssh_request”…”�”}”(hjt~h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjq~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jv~Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj<~sbŒc.ssh_request_init”†”asbuh1hhjR~ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”~h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjR~ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj¢~h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjR~ubj`)�”}”(hŒrqst”h]”hŒrqst”…”�”}”(hj¯~h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjR~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjN~ubj)�”}”(hŒenum ssam_request_flags flags”h]”(j7)�”}”(hjþ9h]”hŒenum”…”�”}”(hjÈ~h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÄ~ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ~h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÄ~ubh)�”}”(hhh]”j`)�”}”(hŒssam_request_flags”h]”hŒssam_request_flags”…”�”}”(hjæ~h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjã~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jè~Œmodname”NŒ classname”Nj\j_)�”}”jb]”j�~Œc.ssh_request_init”†”asbuh1hhjÄ~ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÄ~ubj`)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÄ~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjN~ubj)�”}”(hŒ!const struct ssh_request_ops *ops”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj'ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj'ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj'ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj'ubh)�”}”(hhh]”j`)�”}”(hŒssh_request_ops”h]”hŒssh_request_ops”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jfŒmodname”NŒ classname”Nj\j_)�”}”jb]”j�~Œc.ssh_request_init”†”asbuh1hhj'ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj'ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj'ubj`)�”}”(hŒops”h]”hŒops”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjN~ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj~h²hh³j'~h´MÍubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj~h²hh³j'~h´MÍubah}”(h]”j ~ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j'~h´MÍhj~h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒInitialize SSH request.”h]”hŒInitialize SSH request.”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MÍhjÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj~h²hh³j'~h´MÍubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jßj¯jßj°‰j±‰j²‰uh1j%h²hhj#mh³Nh´Nubj´)�”}”(hXQ**Parameters** ``struct ssh_request *rqst`` The request to initialize. ``enum ssam_request_flags flags`` Request flags, determining the type of the request. ``const struct ssh_request_ops *ops`` Request operations. **Description** Initializes the given SSH request and underlying packet. Sets the message buffer pointer to ``NULL`` and the message buffer length to zero. This buffer has to be set separately via ssh_request_set_data() before submission and must contain a valid SSH request message. **Return** Returns zero on success or ``-EINVAL`` if the given flags are invalid.”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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MÑhjãubj)�”}”(hhh]”(j)�”}”(hŒ8``struct ssh_request *rqst`` The request to initialize. ”h]”(j )�”}”(hŒ``struct ssh_request *rqst``”h]”j)�”}”(hj€h]”hŒstruct ssh_request *rqst”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MÎhj€ubj))�”}”(hhh]”hþ)�”}”(hŒThe request to initialize.”h]”hŒThe request to initialize.”…”�”}”(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&]”uh1jh³j€h´MÎhjÿubj)�”}”(hŒV``enum ssam_request_flags flags`` Request flags, determining the type of the request. ”h]”(j )�”}”(hŒ!``enum ssam_request_flags flags``”h]”j)�”}”(hjA€h]”hŒenum ssam_request_flags flags”…”�”}”(hjC€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MÏhj;€ubj))�”}”(hhh]”hþ)�”}”(hŒ3Request flags, determining the type of the request.”h]”hŒ3Request flags, determining the type of the request.”…”�”}”(hjZ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jV€h´MÏhjW€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj;€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jV€h´MÏhjÿubj)�”}”(hŒ:``const struct ssh_request_ops *ops`` Request operations. ”h]”(j )�”}”(hŒ%``const struct ssh_request_ops *ops``”h]”j)�”}”(hjz€h]”hŒ!const struct ssh_request_ops *ops”…”�”}”(hj|€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjx€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MÐhjt€ubj))�”}”(hhh]”hþ)�”}”(hŒRequest operations.”h]”hŒRequest operations.”…”�”}”(hj“€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j�€h´MÐhj�€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjt€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�€h´MÐhjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjã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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MÒhjãubhþ)�”}”(hX Initializes the given SSH request and underlying packet. Sets the message buffer pointer to ``NULL`` and the message buffer length to zero. This buffer has to be set separately via ssh_request_set_data() before submission and must contain a valid SSH request message.”h]”(hŒ\Initializes the given SSH request and underlying packet. Sets the message buffer pointer to ”…”�”}”(hjË€h²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÓ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjË€ubhŒ§ and the message buffer length to zero. This buffer has to be set separately via ssh_request_set_data() before submission and must contain a valid SSH request message.”…”�”}”(hjË€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MÖhjãubhþ)�”}”(hŒFReturns zero on success or ``-EINVAL`` if the given flags are invalid.”h]”(hŒReturns zero on success or ”…”�”}”(hj�h²hh³Nh´Nubj)�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubhŒ if the given flags are invalid.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M×hjãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj#mh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_rtl_init (C function)”Œc.ssh_rtl_init”hNt”auh1jhj#mh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒcint ssh_rtl_init (struct ssh_rtl *rtl, struct serdev_device *serdev, const struct ssh_rtl_ops *ops)”h]”j1)�”}”(hŒbint ssh_rtl_init(struct ssh_rtl *rtl, struct serdev_device *serdev, const struct ssh_rtl_ops *ops)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjE�h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjA�h²hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MõubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjA�h²hh³jS�h´MõubjZ)�”}”(hŒ ssh_rtl_init”h]”j`)�”}”(hŒ ssh_rtl_init”h]”hŒ ssh_rtl_init”…”�”}”(hjf�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjb�ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjA�h²hh³jS�h´Mõubj)�”}”(hŒR(struct ssh_rtl *rtl, struct serdev_device *serdev, const struct ssh_rtl_ops *ops)”h]”(j)�”}”(hŒstruct ssh_rtl *rtl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj‚�h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj~�ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj~�ubh)�”}”(hhh]”j`)�”}”(hŒssh_rtl”h]”hŒssh_rtl”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj��ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¢�Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjh�sbŒc.ssh_rtl_init”†”asbuh1hhj~�ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ�h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj~�ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÎ�h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj~�ubj`)�”}”(hŒrtl”h]”hŒrtl”…”�”}”(hjÛ�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj~�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjz�ubj)�”}”(hŒstruct serdev_device *serdev”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjô�h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjð�ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjð�ubh)�”}”(hhh]”j`)�”}”(hŒ serdev_device”h]”hŒ serdev_device”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j‚Œmodname”NŒ classname”Nj\j_)�”}”jb]”j¼�Œc.ssh_rtl_init”†”asbuh1hhjð�ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0‚h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjð�ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj>‚h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjð�ubj`)�”}”(hŒserdev”h]”hŒserdev”…”�”}”(hjK‚h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjð�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjz�ubj)�”}”(hŒconst struct ssh_rtl_ops *ops”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjd‚h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj`‚ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq‚h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj`‚ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj`‚ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ‚h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj`‚ubh)�”}”(hhh]”j`)�”}”(hŒ ssh_rtl_ops”h]”hŒ ssh_rtl_ops”…”�”}”(hj�‚h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjš‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jŸ‚Œmodname”NŒ classname”Nj\j_)�”}”jb]”j¼�Œc.ssh_rtl_init”†”asbuh1hhj`‚ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»‚h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj`‚ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÉ‚h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj`‚ubj`)�”}”(hŒops”h]”hŒops”…”�”}”(hjÖ‚h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj`‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjz�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjA�h²hh³jS�h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj=�h²hh³jS�h´Mõubah}”(h]”j8�ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jS�h´Mõhj:�h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ#Initialize request transport layer.”h]”hŒ#Initialize request transport layer.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Mõhjý‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj:�h²hh³jS�h´Mõubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jƒj¯jƒj°‰j±‰j²‰uh1j%h²hhj#mh³Nh´Nubj´)�”}”(hXg**Parameters** ``struct ssh_rtl *rtl`` The request transport layer to initialize. ``struct serdev_device *serdev`` The underlying serial device, i.e. the lower-level transport. ``const struct ssh_rtl_ops *ops`` Request transport layer operations. **Description** Initializes the given request transport layer and associated packet transport layer. Transmitter and receiver threads must be started separately via ssh_rtl_start(), after the request-layer has been initialized and the lower-level serial device layer has been set up. **Return** Returns zero on success and a nonzero 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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Mùhjƒubj)�”}”(hhh]”(j)�”}”(hŒC``struct ssh_rtl *rtl`` The request transport layer to initialize. ”h]”(j )�”}”(hŒ``struct ssh_rtl *rtl``”h]”j)�”}”(hjAƒh]”hŒstruct ssh_rtl *rtl”…”�”}”(hjCƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Möhj;ƒubj))�”}”(hhh]”hþ)�”}”(hŒ*The request transport layer to initialize.”h]”hŒ*The request transport layer to initialize.”…”�”}”(hjZƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jVƒh´MöhjWƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj;ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jVƒh´Möhj8ƒubj)�”}”(hŒ_``struct serdev_device *serdev`` The underlying serial device, i.e. the lower-level transport. ”h]”(j )�”}”(hŒ ``struct serdev_device *serdev``”h]”j)�”}”(hjzƒh]”hŒstruct serdev_device *serdev”…”�”}”(hj|ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M÷hjtƒubj))�”}”(hhh]”hþ)�”}”(hŒ=The underlying serial device, i.e. the lower-level transport.”h]”hŒ=The underlying serial device, i.e. the lower-level transport.”…”�”}”(hj“ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j�ƒh´M÷hj�ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjtƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�ƒh´M÷hj8ƒubj)�”}”(hŒF``const struct ssh_rtl_ops *ops`` Request transport layer operations. ”h]”(j )�”}”(hŒ!``const struct ssh_rtl_ops *ops``”h]”j)�”}”(hj³ƒh]”hŒconst struct ssh_rtl_ops *ops”…”�”}”(hjµƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Møhj­ƒubj))�”}”(hhh]”hþ)�”}”(hŒ#Request transport layer operations.”h]”hŒ#Request transport layer operations.”…”�”}”(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&]”uh1jh³jȃh´Møhj8ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒ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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Múhjƒubhþ)�”}”(hX Initializes the given request transport layer and associated packet transport layer. Transmitter and receiver threads must be started separately via ssh_rtl_start(), after the request-layer has been initialized and the lower-level serial device layer has been set up.”h]”hX Initializes the given request transport layer and associated packet transport layer. Transmitter and receiver threads must be started separately via ssh_rtl_start(), after the request-layer has been initialized and the lower-level serial device layer has been set up.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Mþhjƒubhþ)�”}”(hŒ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj:…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M%hj6…ubj)�”}”(hhh]”j)�”}”(hŒE``struct ssh_rtl *rtl`` The request transport layer to deinitialize. ”h]”(j )�”}”(hŒ``struct ssh_rtl *rtl``”h]”j)�”}”(hj[…h]”hŒstruct ssh_rtl *rtl”…”�”}”(hj]…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjY…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M"hjU…ubj))�”}”(hhh]”hþ)�”}”(hŒ,The request transport layer to deinitialize.”h]”hŒ,The request transport layer to deinitialize.”…”�”}”(hjt…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jp…h´M"hjq…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjU…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jp…h´M"hjR…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6…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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M$hj6…ubhþ)�”}”(hŒîDeinitializes the given request transport layer and frees resources associated with it. If receiver and/or transmitter threads have been started, the layer must first be shut down via ssh_rtl_shutdown() before this function can be called.”h]”hŒîDeinitializes the given request transport layer and frees resources associated with it. If receiver and/or transmitter threads have been started, the layer must first be shut down via ssh_rtl_shutdown() before this function can be called.”…”�”}”(hj¬…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M#hj6…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj#mh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_rtl_start (C function)”Œc.ssh_rtl_start”hNt”auh1jhj#mh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ'int ssh_rtl_start (struct ssh_rtl *rtl)”h]”j1)�”}”(hŒ&int ssh_rtl_start(struct ssh_rtl *rtl)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjÛ…h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj×…h²hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M/ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê…h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj×…h²hh³jé…h´M/ubjZ)�”}”(hŒ ssh_rtl_start”h]”j`)�”}”(hŒ ssh_rtl_start”h]”hŒ ssh_rtl_start”…”�”}”(hjü…h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjø…ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj×…h²hh³jé…h´M/ubj)�”}”(hŒ(struct ssh_rtl *rtl)”h]”j)�”}”(hŒstruct ssh_rtl *rtl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj†ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%†h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj†ubh)�”}”(hhh]”j`)�”}”(hŒssh_rtl”h]”hŒssh_rtl”…”�”}”(hj6†h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj3†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j8†Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjþ…sbŒc.ssh_rtl_start”†”asbuh1hhj†ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV†h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj†ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjd†h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj†ubj`)�”}”(hŒrtl”h]”hŒrtl”…”�”}”(hjq†h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj†ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj×…h²hh³jé…h´M/ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÓ…h²hh³jé…h´M/ubah}”(h]”jÎ…ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jé…h´M/hjÐ…h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ'Start request transmitter and receiver.”h]”hŒ'Start request transmitter and receiver.”…”�”}”(hj›†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M/hj˜†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÐ…h²hh³jé…h´M/ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j³†j¯j³†j°‰j±‰j²‰uh1j%h²hhj#mh³Nh´Nubj´)�”}”(hŒŽ**Parameters** ``struct ssh_rtl *rtl`` The request transport layer. **Return** Returns zero on success, 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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M3hj·†ubj)�”}”(hhh]”j)�”}”(hŒ5``struct ssh_rtl *rtl`` The request transport layer. ”h]”(j )�”}”(hŒ``struct ssh_rtl *rtl``”h]”j)�”}”(hj܆h]”hŒstruct ssh_rtl *rtl”…”�”}”(hjÞ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M0hjÖ†ubj))�”}”(hhh]”hþ)�”}”(hŒThe request transport layer.”h]”hŒThe request transport layer.”…”�”}”(hjõ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jñ†h´M0hjò†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÖ†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jñ†h´M0hjÓ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·†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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M2hj·†ubhþ)�”}”(hŒ:Returns zero on success, a negative error code on failure.”h]”hŒ:Returns zero on success, a negative error code on failure.”…”�”}”(hj-‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M2hj·†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj#mh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_rtl_flush (C function)”Œc.ssh_rtl_flush”hNt”auh1jhj#mh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ>int ssh_rtl_flush (struct ssh_rtl *rtl, unsigned long timeout)”h]”j1)�”}”(hŒ=int ssh_rtl_flush(struct ssh_rtl *rtl, unsigned long timeout)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hj\‡h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjX‡h²hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´MgubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk‡h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjX‡h²hh³jj‡h´MgubjZ)�”}”(hŒ ssh_rtl_flush”h]”j`)�”}”(hŒ ssh_rtl_flush”h]”hŒ ssh_rtl_flush”…”�”}”(hj}‡h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjy‡ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjX‡h²hh³jj‡h´Mgubj)�”}”(hŒ,(struct ssh_rtl *rtl, unsigned long timeout)”h]”(j)�”}”(hŒstruct ssh_rtl *rtl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj™‡h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj•‡ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦‡h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj•‡ubh)�”}”(hhh]”j`)�”}”(hŒssh_rtl”h]”hŒssh_rtl”…”�”}”(hj·‡h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj´‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¹‡Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj‡sbŒc.ssh_rtl_flush”†”asbuh1hhj•‡ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjׇh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj•‡ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjå‡h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj•‡ubj`)�”}”(hŒrtl”h]”hŒrtl”…”�”}”(hjò‡h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj•‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‘‡ubj)�”}”(hŒunsigned long timeout”h]”(já)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjˆubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjˆubjá)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj'ˆh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjˆubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5ˆh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjˆubj`)�”}”(hŒtimeout”h]”hŒtimeout”…”�”}”(hjCˆh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‘‡ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjX‡h²hh³jj‡h´Mgubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjT‡h²hh³jj‡h´Mgubah}”(h]”jO‡ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jj‡h´MghjQ‡h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ"Flush the request transport layer.”h]”hŒ"Flush the request transport layer.”…”�”}”(hjmˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Mghjjˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjQ‡h²hh³jj‡h´Mgubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j…ˆj¯j…ˆj°‰j±‰j²‰uh1j%h²hhj#mh³Nh´Nubj´)�”}”(hX>**Parameters** ``struct ssh_rtl *rtl`` request transport layer ``unsigned long timeout`` timeout for the flush operation in jiffies **Description** Queue a special flush request and wait for its completion. This request will be completed after all other currently queued and pending requests have been completed. Instead of a normal data packet, this request submits a special flush packet, meaning that upon completion, also the underlying packet transport layer has been flushed. Flushing the request layer guarantees that all previously submitted requests have been fully completed before this call returns. Additionally, flushing blocks execution of all later submitted requests until the flush has been completed. If the caller ensures that no new requests are submitted after a call to this function, the request transport layer is guaranteed to have no remaining requests when this call returns. The same guarantee does not hold for the packet layer, on which control packets may still be queued after this call. **Return** Returns zero on success, ``-ETIMEDOUT`` if the flush timed out and has been canceled as a result of the timeout, or ``-ESHUTDOWN`` if the packet and/or request transport layer has been shut down before this call. May also return ``-EINTR`` if the underlying packet transmission has been interrupted.”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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Mkhj‰ˆubj)�”}”(hhh]”(j)�”}”(hŒ0``struct ssh_rtl *rtl`` request transport layer ”h]”(j )�”}”(hŒ``struct ssh_rtl *rtl``”h]”j)�”}”(hj®ˆh]”hŒstruct ssh_rtl *rtl”…”�”}”(hj°ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Mhhj¨ˆubj))�”}”(hhh]”hþ)�”}”(hŒrequest transport layer”h]”hŒrequest transport layer”…”�”}”(hjLjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÈh´MhhjĈubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj¨ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÈh´Mhhj¥ˆubj)�”}”(hŒE``unsigned long timeout`` timeout for the flush operation in jiffies ”h]”(j )�”}”(hŒ``unsigned long timeout``”h]”j)�”}”(hjçˆh]”hŒunsigned long timeout”…”�”}”(hjéˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Mihjáˆubj))�”}”(hhh]”hþ)�”}”(hŒ*timeout for the flush operation in jiffies”h]”hŒ*timeout for the flush operation in jiffies”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jüˆh´Mihjýˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjáˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jüˆh´Mihj¥ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰ˆ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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Mkhj‰ˆubhþ)�”}”(hXMQueue a special flush request and wait for its completion. This request will be completed after all other currently queued and pending requests have been completed. Instead of a normal data packet, this request submits a special flush packet, meaning that upon completion, also the underlying packet transport layer has been flushed.”h]”hXMQueue a special flush request and wait for its completion. This request will be completed after all other currently queued and pending requests have been completed. Instead of a normal data packet, this request submits a special flush packet, meaning that upon completion, also the underlying packet transport layer has been flushed.”…”�”}”(hj8‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Mjhj‰ˆubhþ)�”}”(hŒìFlushing the request layer guarantees that all previously submitted requests have been fully completed before this call returns. Additionally, flushing blocks execution of all later submitted requests until the flush has been completed.”h]”hŒìFlushing the request layer guarantees that all previously submitted requests have been fully completed before this call returns. Additionally, flushing blocks execution of all later submitted requests until the flush has been completed.”…”�”}”(hjG‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Mphj‰ˆubhþ)�”}”(hX,If the caller ensures that no new requests are submitted after a call to this function, the request transport layer is guaranteed to have no remaining requests when this call returns. The same guarantee does not hold for the packet layer, on which control packets may still be queued after this call.”h]”hX,If the caller ensures that no new requests are submitted after a call to this function, the request transport layer is guaranteed to have no remaining requests when this call returns. The same guarantee does not hold for the packet layer, on which control packets may still be queued after this call.”…”�”}”(hjV‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´Muhj‰ˆubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjg‰h]”hŒReturn”…”�”}”(hji‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hje‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M{hj‰ˆubhþ)�”}”(hX+Returns zero on success, ``-ETIMEDOUT`` if the flush timed out and has been canceled as a result of the timeout, or ``-ESHUTDOWN`` if the packet and/or request transport layer has been shut down before this call. May also return ``-EINTR`` if the underlying packet transmission has been interrupted.”h]”(hŒReturns zero on success, ”…”�”}”(hj}‰h²hh³Nh´Nubj)�”}”(hŒ``-ETIMEDOUT``”h]”hŒ -ETIMEDOUT”…”�”}”(hj…‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}‰ubhŒM if the flush timed out and has been canceled as a result of the timeout, or ”…”�”}”(hj}‰h²hh³Nh´Nubj)�”}”(hŒ``-ESHUTDOWN``”h]”hŒ -ESHUTDOWN”…”�”}”(hj—‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}‰ubhŒc if the packet and/or request transport layer has been shut down before this call. May also return ”…”�”}”(hj}‰h²hh³Nh´Nubj)�”}”(hŒ ``-EINTR``”h]”hŒ-EINTR”…”�”}”(hj©‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}‰ubhŒ< if the underlying packet transmission has been interrupted.”…”�”}”(hj}‰h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M|hj‰ˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj#mh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_rtl_shutdown (C function)”Œc.ssh_rtl_shutdown”hNt”auh1jhj#mh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ+void ssh_rtl_shutdown (struct ssh_rtl *rtl)”h]”j1)�”}”(hŒ*void ssh_rtl_shutdown(struct ssh_rtl *rtl)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjâ‰h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÞ‰h²hh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M¡ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ‰h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÞ‰h²hh³jð‰h´M¡ubjZ)�”}”(hŒssh_rtl_shutdown”h]”j`)�”}”(hŒssh_rtl_shutdown”h]”hŒssh_rtl_shutdown”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÿ‰ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÞ‰h²hh³jð‰h´M¡ubj)�”}”(hŒ(struct ssh_rtl *rtl)”h]”j)�”}”(hŒstruct ssh_rtl *rtl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjŠubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Šh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŠubh)�”}”(hhh]”j`)�”}”(hŒssh_rtl”h]”hŒssh_rtl”…”�”}”(hj=Šh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj:Šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j?ŠŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjŠsbŒc.ssh_rtl_shutdown”†”asbuh1hhjŠubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Šh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŠubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjkŠh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjŠubj`)�”}”(hŒrtl”h]”hŒrtl”…”�”}”(hjxŠh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjŠubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÞ‰h²hh³jð‰h´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÚ‰h²hh³jð‰h´M¡ubah}”(h]”jÕ‰ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jð‰h´M¡hj׉h²hubjŒ)�”}”(h•šhh]”hþ)�”}”(hŒ"Shut down request transport layer.”h]”hŒ"Shut down request transport layer.”…”�”}”(hj¢Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M¡hjŸŠh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj׉h²hh³jð‰h´M¡ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jºŠj¯jºŠj°‰j±‰j²‰uh1j%h²hhj#mh³Nh´Nubj´)�”}”(hX!**Parameters** ``struct ssh_rtl *rtl`` The request transport layer. **Description** Shuts down the request transport layer, removing and canceling all queued and pending requests. Requests canceled by this operation will be completed with ``-ESHUTDOWN`` as status. Receiver and transmitter threads will be stopped, the lower-level packet layer will be shutdown. As a result of this function, the transport layer will be marked as shut down. Submission of requests after the transport layer has been shut down will fail with ``-ESHUTDOWN``.”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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M¥hj¾Šubj)�”}”(hhh]”j)�”}”(hŒ5``struct ssh_rtl *rtl`` The request transport layer. ”h]”(j )�”}”(hŒ``struct ssh_rtl *rtl``”h]”j)�”}”(hjãŠh]”hŒstruct ssh_rtl *rtl”…”�”}”(hjåŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjáŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M¢hjÝŠubj))�”}”(hhh]”hþ)�”}”(hŒThe request transport layer.”h]”hŒThe request transport layer.”…”�”}”(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&]”uh1jh³jøŠh´M¢hjÚŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾Š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³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M¤hj¾Šubhþ)�”}”(hXShuts down the request transport layer, removing and canceling all queued and pending requests. Requests canceled by this operation will be completed with ``-ESHUTDOWN`` as status. Receiver and transmitter threads will be stopped, the lower-level packet layer will be shutdown.”h]”(hŒ›Shuts down the request transport layer, removing and canceling all queued and pending requests. Requests canceled by this operation will be completed with ”…”�”}”(hj4‹h²hh³Nh´Nubj)�”}”(hŒ``-ESHUTDOWN``”h]”hŒ -ESHUTDOWN”…”�”}”(hj<‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4‹ubhŒl as status. Receiver and transmitter threads will be stopped, the lower-level packet layer will be shutdown.”…”�”}”(hj4‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M£hj¾Šubhþ)�”}”(hŒ±As a result of this function, the transport layer will be marked as shut down. Submission of requests after the transport layer has been shut down will fail with ``-ESHUTDOWN``.”h]”(hŒ¢As a result of this function, the transport layer will be marked as shut down. Submission of requests after the transport layer has been shut down will fail with ”…”�”}”(hjU‹h²hh³Nh´Nubj)�”}”(hŒ``-ESHUTDOWN``”h]”hŒ -ESHUTDOWN”…”�”}”(hj]‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU‹ubhŒ.”…”�”}”(hjU‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ’/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:36: ./drivers/platform/surface/aggregator/ssh_request_layer.c”h´M¨hj¾Šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj#mh²hh³Nh´Nubeh}”(h]”jSah ]”h"]”Œrequest transport layer”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Controller”h]”hŒ Controller”…”�”}”(hj‡‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjouh1hÍhj„‹h²hh³hÇh´K)ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_seq_counter (C struct)”Œc.ssh_seq_counter”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒssh_seq_counter”h]”j1)�”}”(hŒstruct ssh_seq_counter”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj®‹h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjª‹h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼‹h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjª‹h²hh³j»‹h´KubjZ)�”}”(hŒssh_seq_counter”h]”j`)�”}”(hj¨‹h]”hŒssh_seq_counter”…”�”}”(hj΋h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÊ‹ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjª‹h²hh³j»‹h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj¦‹h²hh³j»‹h´Kubah}”(h]”j¡‹ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j»‹h´Khj£‹h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ"Safe counter for SSH sequence IDs.”h]”hŒ"Safe counter for SSH sequence IDs.”…”�”}”(hjð‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Khjí‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj£‹h²hh³j»‹h´Kubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®jŒj¯jŒj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒv**Definition**:: struct ssh_seq_counter { u8 value; }; **Members** ``value`` The current counter value.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K#hj ŒubjÙ)�”}”(hŒ)struct ssh_seq_counter { u8 value; };”h]”hŒ)struct ssh_seq_counter { u8 value; };”…”�”}”hj-Œsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K)hj Œubj)�”}”(hhh]”j)�”}”(hŒ$``value`` The current counter value.”h]”(j )�”}”(hŒ ``value``”h]”j)�”}”(hj]Œh]”hŒvalue”…”�”}”(hj_Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K hjWŒubj))�”}”(hhh]”hþ)�”}”(hŒThe current counter value.”h]”hŒThe current counter value.”…”�”}”(hjvŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K!hjsŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjWŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jrŒh´K hjTŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssh_rqid_counter (C struct)”Œc.ssh_rqid_counter”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒssh_rqid_counter”h]”j1)�”}”(hŒstruct ssh_rqid_counter”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj·Œh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj³Œh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K'ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅŒh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj³Œh²hh³jÄŒh´K'ubjZ)�”}”(hŒssh_rqid_counter”h]”j`)�”}”(hj±Œh]”hŒssh_rqid_counter”…”�”}”(hj׌h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÓŒubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj³Œh²hh³jÄŒh´K'ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj¯Œh²hh³jÄŒh´K'ubah}”(h]”jªŒah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÄŒh´K'hj¬Œh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ!Safe counter for SSH request IDs.”h]”hŒ!Safe counter for SSH request IDs.”…”�”}”(hjùŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K'hjöŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¬Œh²hh³jÄŒh´K'ubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®j�j¯j�j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒx**Definition**:: struct ssh_rqid_counter { u16 value; }; **Members** ``value`` The current counter value.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K+hj�ubjÙ)�”}”(hŒ+struct ssh_rqid_counter { u16 value; };”h]”hŒ+struct ssh_rqid_counter { u16 value; };”…”�”}”hj6�sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K-hj�ubhþ)�”}”(hŒ **Members**”h]”j¾)�”}”(hjG�h]”hŒMembers”…”�”}”(hjI�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjE�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K1hj�ubj)�”}”(hhh]”j)�”}”(hŒ$``value`` The current counter value.”h]”(j )�”}”(hŒ ``value``”h]”j)�”}”(hjf�h]”hŒvalue”…”�”}”(hjh�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K(hj`�ubj))�”}”(hhh]”hþ)�”}”(hŒThe current counter value.”h]”hŒThe current counter value.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K)hj|�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj`�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j{�h´K(hj]�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_nf_head (C struct)”Œc.ssam_nf_head”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ ssam_nf_head”h]”j1)�”}”(hŒstruct ssam_nf_head”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÀ�h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj¼�h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K/ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ�h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¼�h²hh³jÍ�h´K/ubjZ)�”}”(hŒ ssam_nf_head”h]”j`)�”}”(hjº�h]”hŒ ssam_nf_head”…”�”}”(hjà�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÜ�ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¼�h²hh³jÍ�h´K/ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj¸�h²hh³jÍ�h´K/ubah}”(h]”j³�ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÍ�h´K/hjµ�h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒNotifier head for SSAM events.”h]”hŒNotifier head for SSAM events.”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K2hjÿ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjµ�h²hh³jÍ�h´K/ubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®jŽj¯jŽj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒî**Definition**:: struct ssam_nf_head { struct srcu_struct srcu; struct list_head head; }; **Members** ``srcu`` The SRCU struct for synchronization. ``head`` List-head for notifier blocks registered under this head.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K6hjŽubjÙ)�”}”(hŒPstruct ssam_nf_head { struct srcu_struct srcu; struct list_head head; };”h]”hŒPstruct ssam_nf_head { struct srcu_struct srcu; struct list_head head; };”…”�”}”hj?Žsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K8hjŽubhþ)�”}”(hŒ **Members**”h]”j¾)�”}”(hjPŽh]”hŒMembers”…”�”}”(hjRŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjNŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K=hjŽubj)�”}”(hhh]”(j)�”}”(hŒ.``srcu`` The SRCU struct for synchronization. ”h]”(j )�”}”(hŒ``srcu``”h]”j)�”}”(hjoŽh]”hŒsrcu”…”�”}”(hjqŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K4hjiŽubj))�”}”(hhh]”hþ)�”}”(hŒ$The SRCU struct for synchronization.”h]”hŒ$The SRCU struct for synchronization.”…”�”}”(hjˆŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j„Žh´K4hj…Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjiŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j„Žh´K4hjfŽubj)�”}”(hŒB``head`` List-head for notifier blocks registered under this head.”h]”(j )�”}”(hŒ``head``”h]”j)�”}”(hj¨Žh]”hŒhead”…”�”}”(hjªŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K4hj¢Žubj))�”}”(hhh]”hþ)�”}”(hŒ9List-head for notifier blocks registered under this head.”h]”hŒ9List-head for notifier blocks registered under this head.”…”�”}”(hjÁŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K5hj¾Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj¢Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j½Žh´K4hjfŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_nf (C struct)”Œ c.ssam_nf”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒssam_nf”h]”j1)�”}”(hŒstruct ssam_nf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjþŽh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K;ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjþŽh²hh³j�h´K;ubjZ)�”}”(hŒssam_nf”h]”j`)�”}”(hjüŽh]”hŒssam_nf”…”�”}”(hj"�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj�ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjþŽh²hh³j�h´K;ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjúŽh²hh³j�h´K;ubah}”(h]”jõŽah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j�h´K;hj÷Žh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ;Notifier callback- and activation-registry for SSAM events.”h]”hŒ;Notifier callback- and activation-registry for SSAM events.”…”�”}”(hjD�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KhjÇ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj«�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÆ�h´K@hj¨�ubj)�”}”(hŒ_``refcount`` The root of the RB-tree used for reference-counting enabled events/notifications. ”h]”(j )�”}”(hŒ ``refcount``”h]”j)�”}”(hjë�h]”hŒrefcount”…”�”}”(hjí�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjé�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KBhjå�ubj))�”}”(hhh]”hþ)�”}”(hŒQThe root of the RB-tree used for reference-counting enabled events/notifications.”h]”hŒQThe root of the RB-tree used for reference-counting enabled events/notifications.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KAhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjå�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�h´KBhj¨�ubj)�”}”(hŒE``head`` The list of notifier heads for event/notification callbacks.”h]”(j )�”}”(hŒ``head``”h]”j)�”}”(hj%�h]”hŒhead”…”�”}”(hj'�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KBhj�ubj))�”}”(hhh]”hþ)�”}”(hŒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KChj;�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j:�h´KBhj¨�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj`�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_event_item (C struct)”Œc.ssam_event_item”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒssam_event_item”h]”j1)�”}”(hŒstruct ssam_event_item”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj{�h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KIubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj{�h²hh³jŒ�h´KIubjZ)�”}”(hŒssam_event_item”h]”j`)�”}”(hjy�h]”hŒssam_event_item”…”�”}”(hjŸ�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj›�ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj{�h²hh³jŒ�h´KIubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjw�h²hh³jŒ�h´KIubah}”(h]”jr�ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jŒ�h´KIhjt�h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ(Struct for event queuing and completion.”h]”hŒ(Struct for event queuing and completion.”…”�”}”(hjÁ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KPhj¾�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjt�h²hh³jŒ�h´KIubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®jÙ�j¯jÙ�j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX§**Definition**:: struct ssam_event_item { struct list_head node; u16 rqid; struct { void (*free)(struct ssam_event_item *event); } ops; struct ssam_event event; }; **Members** ``node`` The node in the queue. ``rqid`` The request ID of the event. ``ops`` Instance specific functions. ``ops.free`` Callback for freeing this event item. ``event`` Actual event data.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KThjÝ�ubjÙ)�”}”(hŒ®struct ssam_event_item { struct list_head node; u16 rqid; struct { void (*free)(struct ssam_event_item *event); } ops; struct ssam_event event; };”h]”hŒ®struct ssam_event_item { struct list_head node; u16 rqid; struct { void (*free)(struct ssam_event_item *event); } ops; struct ssam_event event; };”…”�”}”hjþ�sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KVhjÝ�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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K_hjÝ�ubj)�”}”(hhh]”(j)�”}”(hŒ ``node`` The node in the queue. ”h]”(j )�”}”(hŒ``node``”h]”j)�”}”(hj.‘h]”hŒnode”…”�”}”(hj0‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KRhj(‘ubj))�”}”(hhh]”hþ)�”}”(hŒThe node in the queue.”h]”hŒThe node in the queue.”…”�”}”(hjG‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jC‘h´KRhjD‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj(‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jC‘h´KRhj%‘ubj)�”}”(hŒ&``rqid`` The request ID of the event. ”h]”(j )�”}”(hŒ``rqid``”h]”j)�”}”(hjg‘h]”hŒrqid”…”�”}”(hji‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhje‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KShja‘ubj))�”}”(hhh]”hþ)�”}”(hŒThe request ID of the event.”h]”hŒThe request ID of the event.”…”�”}”(hj€‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j|‘h´KShj}‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hja‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j|‘h´KShj%‘ubj)�”}”(hŒ%``ops`` Instance specific functions. ”h]”(j )�”}”(hŒ``ops``”h]”j)�”}”(hj ‘h]”hŒops”…”�”}”(hj¢‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjž‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KThjš‘ubj))�”}”(hhh]”hþ)�”}”(hŒInstance specific functions.”h]”hŒInstance specific functions.”…”�”}”(hj¹‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jµ‘h´KThj¶‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjš‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jµ‘h´KThj%‘ubj)�”}”(hŒ3``ops.free`` Callback for freeing this event item. ”h]”(j )�”}”(hŒ ``ops.free``”h]”j)�”}”(hjÙ‘h]”hŒops.free”…”�”}”(hjÛ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjבubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KUhjÓ‘ubj))�”}”(hhh]”hþ)�”}”(hŒ%Callback for freeing this event item.”h]”hŒ%Callback for freeing this event item.”…”�”}”(hjò‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jî‘h´KUhjï‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÓ‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jî‘h´KUhj%‘ubj)�”}”(hŒ``event`` Actual event data.”h]”(j )�”}”(hŒ ``event``”h]”j)�”}”(hj’h]”hŒevent”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KUhj ’ubj))�”}”(hhh]”hþ)�”}”(hŒActual event data.”h]”hŒActual event data.”…”�”}”(hj+’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KVhj(’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj ’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j'’h´KUhj%‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_event_queue (C struct)”Œc.ssam_event_queue”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒssam_event_queue”h]”j1)�”}”(hŒstruct ssam_event_queue”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjl’h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjh’h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K\ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz’h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjh’h²hh³jy’h´K\ubjZ)�”}”(hŒssam_event_queue”h]”j`)�”}”(hjf’h]”hŒssam_event_queue”…”�”}”(hjŒ’h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjˆ’ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjh’h²hh³jy’h´K\ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjd’h²hh³jy’h´K\ubah}”(h]”j_’ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jy’h´K\hja’h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ%Queue for completing received events.”h]”hŒ%Queue for completing received events.”…”�”}”(hj®’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Kchj«’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hja’h²hh³jy’h´K\ubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®jÆ’j¯jÆ’j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hXÁ**Definition**:: struct ssam_event_queue { struct ssam_cplt *cplt; spinlock_t lock; struct list_head head; struct work_struct work; }; **Members** ``cplt`` Reference to the completion system on which this queue is active. ``lock`` The lock for any operation on the queue. ``head`` The list-head of the queue. ``work`` The :c:type:`struct work_struct ` performing completion work for this queue.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KghjÊ’ubjÙ)�”}”(hŒ…struct ssam_event_queue { struct ssam_cplt *cplt; spinlock_t lock; struct list_head head; struct work_struct work; };”h]”hŒ…struct ssam_event_queue { struct ssam_cplt *cplt; spinlock_t lock; struct list_head head; struct work_struct work; };”…”�”}”hjë’sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KihjÊ’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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KphjÊ’ubj)�”}”(hhh]”(j)�”}”(hŒK``cplt`` Reference to the completion system on which this queue is active. ”h]”(j )�”}”(hŒ``cplt``”h]”j)�”}”(hj“h]”hŒcplt”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Kehj“ubj))�”}”(hhh]”hþ)�”}”(hŒAReference to the completion system on which this queue is active.”h]”hŒAReference to the completion system on which this queue is active.”…”�”}”(hj4“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j0“h´Kehj1“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j0“h´Kehj“ubj)�”}”(hŒ2``lock`` The lock for any operation on the queue. ”h]”(j )�”}”(hŒ``lock``”h]”j)�”}”(hjT“h]”hŒlock”…”�”}”(hjV“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjR“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KfhjN“ubj))�”}”(hhh]”hþ)�”}”(hŒ(The lock for any operation on the queue.”h]”hŒ(The lock for any operation on the queue.”…”�”}”(hjm“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ji“h´Kfhjj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjN“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³ji“h´Kfhj“ubj)�”}”(hŒ%``head`` The list-head of the queue. ”h]”(j )�”}”(hŒ``head``”h]”j)�”}”(hj�“h]”hŒhead”…”�”}”(hj�“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Kghj‡“ubj))�”}”(hhh]”hþ)�”}”(hŒThe list-head of the queue.”h]”hŒThe list-head of the queue.”…”�”}”(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&]”uh1jh³j¢“h´Kghj“ubj)�”}”(hŒb``work`` The :c:type:`struct work_struct ` performing completion work for this queue.”h]”(j )�”}”(hŒ``work``”h]”j)�”}”(hjÆ“h]”hŒwork”…”�”}”(hjÈ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KghjÀ“ubj))�”}”(hhh]”hþ)�”}”(hŒYThe :c:type:`struct work_struct ` performing completion work for this queue.”h]”(hŒThe ”…”�”}”(hjß“h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct work_struct `”h]”j)�”}”(hjé“h]”hŒstruct work_struct”…”�”}”(hjë“h²hh³Nh´Nubah}”(h]”h ]”(jU:j¨Œc-type”eh"]”h$]”h&]”uh1jhjç“ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”ja:Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j\jwwjn:Œ work_struct”uh1hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Khhjß“ubhŒ+ performing completion work for this queue.”…”�”}”(hjß“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j”h´KhhjÜ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÀ“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÛ“h´Kghj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊ’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_event_target (C struct)”Œc.ssam_event_target”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒssam_event_target”h]”j1)�”}”(hŒstruct ssam_event_target”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjC”h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj?”h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KnubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ”h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj?”h²hh³jP”h´KnubjZ)�”}”(hŒssam_event_target”h]”j`)�”}”(hj=”h]”hŒssam_event_target”…”�”}”(hjc”h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj_”ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj?”h²hh³jP”h´Knubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj;”h²hh³jP”h´Knubah}”(h]”j6”ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jP”h´Knhj8”h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ)Set of queues for a single SSH target ID.”h]”hŒ)Set of queues for a single SSH target ID.”…”�”}”(hj…”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Krhj‚”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj8”h²hh³jP”h´Knubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®j�”j¯j�”j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒ¯**Definition**:: struct ssam_event_target { struct ssam_event_queue queue[SSH_NUM_EVENTS]; }; **Members** ``queue`` The array of queues, one queue per event ID.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Kvhj¡”ubjÙ)�”}”(hŒPstruct ssam_event_target { struct ssam_event_queue queue[SSH_NUM_EVENTS]; };”h]”hŒPstruct ssam_event_target { struct ssam_event_queue queue[SSH_NUM_EVENTS]; };”…”�”}”hj”sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Kxhj¡”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K|hj¡”ubj)�”}”(hhh]”j)�”}”(hŒ6``queue`` The array of queues, one queue per event ID.”h]”(j )�”}”(hŒ ``queue``”h]”j)�”}”(hjò”h]”hŒqueue”…”�”}”(hjô”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjð”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Kshjì”ubj))�”}”(hhh]”hþ)�”}”(hŒ,The array of queues, one queue per event ID.”h]”hŒ,The array of queues, one queue per event ID.”…”�”}”(hj •h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Kthj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjì”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j•h´Kshjé”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_cplt (C struct)”Œ c.ssam_cplt”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ ssam_cplt”h]”j1)�”}”(hŒstruct ssam_cplt”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjL•h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjH•h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KzubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ•h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjH•h²hh³jY•h´KzubjZ)�”}”(hŒ ssam_cplt”h]”j`)�”}”(hjF•h]”hŒ ssam_cplt”…”�”}”(hjl•h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjh•ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjH•h²hh³jY•h´Kzubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjD•h²hh³jY•h´Kzubah}”(h]”j?•ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jY•h´KzhjA•h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ+SSAM event/async request completion system.”h]”hŒ+SSAM event/async request completion system.”…”�”}”(hjŽ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Kzhj‹•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjA•h²hh³jY•h´Kzubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®j¦•j¯j¦•j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX›**Definition**:: struct ssam_cplt { struct device *dev; struct workqueue_struct *wq; struct { struct ssam_event_target target[SSH_NUM_TARGETS]; struct ssam_nf notif; } event; }; **Members** ``dev`` The device with which this system is associated. Only used for logging. ``wq`` The :c:type:`struct workqueue_struct ` on which all completion work items are queued. ``event`` Event completion management. ``event.target`` Array of :c:type:`struct ssam_event_target `, one for each target. ``event.notif`` Notifier callbacks and event activation reference counting.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K~hjª•ubjÙ)�”}”(hŒÀstruct ssam_cplt { struct device *dev; struct workqueue_struct *wq; struct { struct ssam_event_target target[SSH_NUM_TARGETS]; struct ssam_nf notif; } event; };”h]”hŒÀstruct ssam_cplt { struct device *dev; struct workqueue_struct *wq; struct { struct ssam_event_target target[SSH_NUM_TARGETS]; struct ssam_nf notif; } event; };”…”�”}”hjË•sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K‰hjª•ubj)�”}”(hhh]”(j)�”}”(hŒP``dev`` The device with which this system is associated. Only used for logging. ”h]”(j )�”}”(hŒ``dev``”h]”j)�”}”(hjû•h]”hŒdev”…”�”}”(hjý•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjù•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K}hjõ•ubj))�”}”(hhh]”hþ)�”}”(hŒGThe device with which this system is associated. Only used for logging.”h]”hŒGThe device with which this system is associated. Only used for logging.”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K|hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjõ•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j–h´K}hjò•ubj)�”}”(hŒo``wq`` The :c:type:`struct workqueue_struct ` on which all completion work items are queued. ”h]”(j )�”}”(hŒ``wq``”h]”j)�”}”(hj5–h]”hŒwq”…”�”}”(hj7–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Khj/–ubj))�”}”(hhh]”hþ)�”}”(hŒgThe :c:type:`struct workqueue_struct ` on which all completion work items are queued.”h]”(hŒThe ”…”�”}”(hjN–h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct workqueue_struct `”h]”j)�”}”(hjX–h]”hŒstruct workqueue_struct”…”�”}”(hjZ–h²hh³Nh´Nubah}”(h]”h ]”(jU:j¨Œc-type”eh"]”h$]”h&]”uh1jhjV–ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”ja:Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j\jwwjn:Œworkqueue_struct”uh1hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K~hjN–ubhŒ/ on which all completion work items are queued.”…”�”}”(hjN–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ju–h´K~hjK–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj/–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jJ–h´Khjò•ubj)�”}”(hŒ'``event`` Event completion management. ”h]”(j )�”}”(hŒ ``event``”h]”j)�”}”(hj’–h]”hŒevent”…”�”}”(hj”–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K€hjŒ–ubj))�”}”(hhh]”hþ)�”}”(hŒEvent completion management.”h]”hŒEvent completion management.”…”�”}”(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&]”uh1jh³j§–h´K€hjò•ubj)�”}”(hŒg``event.target`` Array of :c:type:`struct ssam_event_target `, one for each target. ”h]”(j )�”}”(hŒ``event.target``”h]”j)�”}”(hjË–h]”hŒ event.target”…”�”}”(hjÍ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K�hjÅ–ubj))�”}”(hhh]”hþ)�”}”(hŒUArray of :c:type:`struct ssam_event_target `, one for each target.”h]”(hŒ Array of ”…”�”}”(hjä–h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct ssam_event_target `”h]”j)�”}”(hjî–h]”hŒstruct ssam_event_target”…”�”}”(hjð–h²hh³Nh´Nubah}”(h]”h ]”(jU:j¨Œc-type”eh"]”h$]”h&]”uh1jhjì–ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”ja:Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j\jwwjn:Œssam_event_target”uh1hh³jà–h´K�hjä–ubhŒ, one for each target.”…”�”}”(hjä–h²hh³Nh´Nubeh}”(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&]”uh1jh³jà–h´K�hjò•ubj)�”}”(hŒK``event.notif`` Notifier callbacks and event activation reference counting.”h]”(j )�”}”(hŒ``event.notif``”h]”j)�”}”(hj'—h]”hŒ event.notif”…”�”}”(hj)—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K�hj!—ubj))�”}”(hhh]”hþ)�”}”(hŒ;Notifier callbacks and event activation reference counting.”h]”hŒ;Notifier callbacks and event activation reference counting.”…”�”}”(hj@—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K‚hj=—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj!—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j<—h´K�hjò•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjª•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_controller_state (C enum)”Œc.ssam_controller_state”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒssam_controller_state”h]”j1)�”}”(hŒenum ssam_controller_state”h]”(j7)�”}”(hjþ9h]”hŒenum”…”�”}”(hj�—h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj}—h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´KˆubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�—h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj}—h²hh³jŽ—h´KˆubjZ)�”}”(hŒssam_controller_state”h]”j`)�”}”(hj{—h]”hŒssam_controller_state”…”�”}”(hj¡—h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj�—ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj}—h²hh³jŽ—h´Kˆubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjy—h²hh³jŽ—h´Kˆubah}”(h]”jt—ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jŽ—h´Kˆhjv—h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒDState values for :c:type:`struct ssam_controller `.”h]”(hŒState values for ”…”�”}”(hj×h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct ssam_controller `”h]”j)�”}”(hjÍ—h]”hŒstruct ssam_controller”…”�”}”(hjÏ—h²hh³Nh´Nubah}”(h]”h ]”(jU:j¨Œc-type”eh"]”h$]”h&]”uh1jhjË—ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”ja:Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j\j_)�”}”jb]”je)�”}”jXj{—sbŒc.ssam_controller_state”†”asbjn:Œssam_controller”uh1hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´Khj×ubhŒ.”…”�”}”(hj×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K‘hjÀ—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjv—h²hh³jŽ—h´Kˆubeh}”(h]”h ]”(j¨Œenum”eh"]”h$]”h&]”j­j¨j®j˜j¯j˜j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX±**Constants** ``SSAM_CONTROLLER_UNINITIALIZED`` The controller has not been initialized yet or has been deinitialized. ``SSAM_CONTROLLER_INITIALIZED`` The controller is initialized, but has not been started yet. ``SSAM_CONTROLLER_STARTED`` The controller has been started and is ready to use. ``SSAM_CONTROLLER_STOPPED`` The controller has been stopped. ``SSAM_CONTROLLER_SUSPENDED`` The controller has been suspended.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K•hj ˜ubj)�”}”(hhh]”(j)�”}”(hŒi``SSAM_CONTROLLER_UNINITIALIZED`` The controller has not been initialized yet or has been deinitialized. ”h]”(j )�”}”(hŒ!``SSAM_CONTROLLER_UNINITIALIZED``”h]”j)�”}”(hj/˜h]”hŒSSAM_CONTROLLER_UNINITIALIZED”…”�”}”(hj1˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K˜hj)˜ubj))�”}”(hhh]”hþ)�”}”(hŒFThe controller has not been initialized yet or has been deinitialized.”h]”hŒFThe controller has not been initialized yet or has been deinitialized.”…”�”}”(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&]”uh1jh³jD˜h´K˜hj&˜ubj)�”}”(hŒ]``SSAM_CONTROLLER_INITIALIZED`` The controller is initialized, but has not been started yet. ”h]”(j )�”}”(hŒ``SSAM_CONTROLLER_INITIALIZED``”h]”j)�”}”(hjh˜h]”hŒSSAM_CONTROLLER_INITIALIZED”…”�”}”(hjj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:43: ./drivers/platform/surface/aggregator/controller.h”h´K›hjb˜ubj))�”}”(hhh]”hþ)�”}”(hŒ¨h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjã§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjß§ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj‘§h²hh³j¹§h´KOubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj�§h²hh³j¹§h´KOubah}”(h]”jˆ§ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j¹§h´KOhjЧh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒGet next request ID.”h]”hŒGet next request ID.”…”�”}”(hjg¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KOhjd¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjЧh²hh³j¹§h´KOubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j¨j¯j¨j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒ³**Parameters** ``struct ssh_rqid_counter *c`` The counter providing the request IDs. **Return** Returns the next request ID of the counter, skipping any reserved request IDs.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KShjƒ¨ubj)�”}”(hhh]”j)�”}”(hŒF``struct ssh_rqid_counter *c`` The counter providing the request IDs. ”h]”(j )�”}”(hŒ``struct ssh_rqid_counter *c``”h]”j)�”}”(hj¨¨h]”hŒstruct ssh_rqid_counter *c”…”�”}”(hjª¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KPhj¢¨ubj))�”}”(hhh]”hþ)�”}”(hŒ&The counter providing the request IDs.”h]”hŒ&The counter providing the request IDs.”…”�”}”(hjÁ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j½¨h´KPhj¾¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj¢¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j½¨h´KPhjŸ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒ¨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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KRhjƒ¨ubhþ)�”}”(hŒNReturns the next request ID of the counter, skipping any reserved request IDs.”h]”hŒNReturns the next request ID of the counter, skipping any reserved request IDs.”…”�”}”(hjù¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KRhjƒ¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ(ssam_event_matches_notifier (C function)”Œc.ssam_event_matches_notifier”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒfbool ssam_event_matches_notifier (const struct ssam_event_notifier *n, const struct ssam_event *event)”h]”j1)�”}”(hŒebool ssam_event_matches_notifier(const struct ssam_event_notifier *n, const struct ssam_event *event)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hj(©h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj$©h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KoubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6©h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj$©h²hh³j5©h´KoubjZ)�”}”(hŒssam_event_matches_notifier”h]”j`)�”}”(hŒssam_event_matches_notifier”h]”hŒssam_event_matches_notifier”…”�”}”(hjH©h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjD©ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj$©h²hh³j5©h´Koubj)�”}”(hŒE(const struct ssam_event_notifier *n, const struct ssam_event *event)”h]”(j)�”}”(hŒ#const struct ssam_event_notifier *n”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjd©h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj`©ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq©h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj`©ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj`©ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ©h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj`©ubh)�”}”(hhh]”j`)�”}”(hŒssam_event_notifier”h]”hŒssam_event_notifier”…”�”}”(hj�©h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjš©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jŸ©Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjJ©sbŒc.ssam_event_matches_notifier”†”asbuh1hhj`©ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½©h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj`©ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjË©h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj`©ubj`)�”}”(hjkh]”hŒn”…”�”}”(hjØ©h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj`©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj\©ubj)�”}”(hŒconst struct ssam_event *event”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjð©h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjì©ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý©h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjì©ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hj ªh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjì©ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjì©ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_event”h]”hŒ ssam_event”…”�”}”(hj)ªh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj&ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j+ªŒmodname”NŒ classname”Nj\j_)�”}”jb]”j¹©Œc.ssam_event_matches_notifier”†”asbuh1hhjì©ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGªh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjì©ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjUªh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjì©ubj`)�”}”(hŒevent”h]”hŒevent”…”�”}”(hjbªh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjì©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj\©ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj$©h²hh³j5©h´Koubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj ©h²hh³j5©h´Koubah}”(h]”j©ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j5©h´Kohj©h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ$Test if an event matches a notifier.”h]”hŒ$Test if an event matches a notifier.”…”�”}”(hjŒªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kohj‰ªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj©h²hh³j5©h´Koubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j¤ªj¯j¤ªj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX0**Parameters** ``const struct ssam_event_notifier *n`` The event notifier to test against. ``const struct ssam_event *event`` The event to test. **Return** Returns ``true`` if the given event matches the given notifier according to the rules set in the notifier's event mask, ``false`` otherwise.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kshj¨ªubj)�”}”(hhh]”(j)�”}”(hŒL``const struct ssam_event_notifier *n`` The event notifier to test against. ”h]”(j )�”}”(hŒ'``const struct ssam_event_notifier *n``”h]”j)�”}”(hjͪh]”hŒ#const struct ssam_event_notifier *n”…”�”}”(hjϪh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˪ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KphjǪubj))�”}”(hhh]”hþ)�”}”(hŒ#The event notifier to test against.”h]”hŒ#The event notifier to test against.”…”�”}”(hjæªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jâªh´Kphjãªubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjǪubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jâªh´KphjĪubj)�”}”(hŒ6``const struct ssam_event *event`` The event to test. ”h]”(j )�”}”(hŒ"``const struct ssam_event *event``”h]”j)�”}”(hj«h]”hŒconst struct ssam_event *event”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kqhj«ubj))�”}”(hhh]”hþ)�”}”(hŒThe event to test.”h]”hŒThe event to test.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j«h´Kqhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j«h´KqhjĪubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨ªubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjA«h]”hŒReturn”…”�”}”(hjC«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj?«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kshj¨ªubhþ)�”}”(hŒŒReturns ``true`` if the given event matches the given notifier according to the rules set in the notifier's event mask, ``false`` otherwise.”h]”(hŒReturns ”…”�”}”(hjW«h²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj_«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjW«ubhŒj if the given event matches the given notifier according to the rules set in the notifier’s event mask, ”…”�”}”(hjW«h²hh³Nh´Nubj)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjq«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjW«ubhŒ otherwise.”…”�”}”(hjW«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kshj¨ªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ"ssam_nfblk_call_chain (C function)”Œc.ssam_nfblk_call_chain”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒMint ssam_nfblk_call_chain (struct ssam_nf_head *nh, struct ssam_event *event)”h]”j1)�”}”(hŒLint ssam_nfblk_call_chain(struct ssam_nf_head *nh, struct ssam_event *event)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjª«h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj¦«h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K…ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹«h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¦«h²hh³j¸«h´K…ubjZ)�”}”(hŒssam_nfblk_call_chain”h]”j`)�”}”(hŒssam_nfblk_call_chain”h]”hŒssam_nfblk_call_chain”…”�”}”(hjË«h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÇ«ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¦«h²hh³j¸«h´K…ubj)�”}”(hŒ3(struct ssam_nf_head *nh, struct ssam_event *event)”h]”(j)�”}”(hŒstruct ssam_nf_head *nh”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjç«h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjã«ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô«h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjã«ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_nf_head”h]”hŒ ssam_nf_head”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¬Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjÍ«sbŒc.ssam_nfblk_call_chain”†”asbuh1hhjã«ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%¬h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjã«ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj3¬h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjã«ubj`)�”}”(hŒnh”h]”hŒnh”…”�”}”(hj@¬h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjã«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjß«ubj)�”}”(hŒstruct ssam_event *event”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjY¬h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjU¬ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf¬h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjU¬ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_event”h]”hŒ ssam_event”…”�”}”(hjw¬h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjt¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jy¬Œmodname”NŒ classname”Nj\j_)�”}”jb]”j!¬Œc.ssam_nfblk_call_chain”†”asbuh1hhjU¬ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•¬h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjU¬ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj£¬h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjU¬ubj`)�”}”(hŒevent”h]”hŒevent”…”�”}”(hj°¬h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjU¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjß«ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj¦«h²hh³j¸«h´K…ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj¢«h²hh³j¸«h´K…ubah}”(h]”j�«ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j¸«h´K…hjŸ«h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ1Call event notifier callbacks of the given chain.”h]”hŒ1Call event notifier callbacks of the given chain.”…”�”}”(hjÚ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K…hj׬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjŸ«h²hh³j¸«h´K…ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jò¬j¯jò¬j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX**Parameters** ``struct ssam_nf_head *nh`` The notifier head for which the notifier callbacks should be called. ``struct ssam_event *event`` The event data provided to the callbacks. **Description** Call all registered notifier callbacks in order of their priority until either no notifier is left or a notifier returns a value with the ``SSAM_NOTIF_STOP`` bit set. Note that this bit is automatically set via ssam_notifier_from_errno() on any non-zero error value. **Return** Returns the notifier status value, which contains the notifier status bits (``SSAM_NOTIF_HANDLED`` and ``SSAM_NOTIF_STOP``) as well as a potential error value returned from the last executed notifier callback. Use ssam_notifier_to_errno() to convert this value to the original error value.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K‰hjö¬ubj)�”}”(hhh]”(j)�”}”(hŒa``struct ssam_nf_head *nh`` The notifier head for which the notifier callbacks should be called. ”h]”(j )�”}”(hŒ``struct ssam_nf_head *nh``”h]”j)�”}”(hj­h]”hŒstruct ssam_nf_head *nh”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K†hj­ubj))�”}”(hhh]”hþ)�”}”(hŒDThe notifier head for which the notifier callbacks should be called.”h]”hŒDThe notifier head for which the notifier callbacks should be called.”…”�”}”(hj4­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j0­h´K†hj1­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j0­h´K†hj­ubj)�”}”(hŒG``struct ssam_event *event`` The event data provided to the callbacks. ”h]”(j )�”}”(hŒ``struct ssam_event *event``”h]”j)�”}”(hjT­h]”hŒstruct ssam_event *event”…”�”}”(hjV­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjR­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K‡hjN­ubj))�”}”(hhh]”hþ)�”}”(hŒ)The event data provided to the callbacks.”h]”hŒ)The event data provided to the callbacks.”…”�”}”(hjm­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ji­h´K‡hjj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjN­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³ji­h´K‡hj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjö¬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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K‰hjö¬ubhþ)�”}”(hX Call all registered notifier callbacks in order of their priority until either no notifier is left or a notifier returns a value with the ``SSAM_NOTIF_STOP`` bit set. Note that this bit is automatically set via ssam_notifier_from_errno() on any non-zero error value.”h]”(hŒŠCall all registered notifier callbacks in order of their priority until either no notifier is left or a notifier returns a value with the ”…”�”}”(hj¥­h²hh³Nh´Nubj)�”}”(hŒ``SSAM_NOTIF_STOP``”h]”hŒSSAM_NOTIF_STOP”…”�”}”(hj­­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥­ubhŒm bit set. Note that this bit is automatically set via ssam_notifier_from_errno() on any non-zero error value.”…”�”}”(hj¥­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kˆ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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K�hjö¬ubhþ)�”}”(hX!Returns the notifier status value, which contains the notifier status bits (``SSAM_NOTIF_HANDLED`` and ``SSAM_NOTIF_STOP``) as well as a potential error value returned from the last executed notifier callback. Use ssam_notifier_to_errno() to convert this value to the original error value.”h]”(hŒLReturns the notifier status value, which contains the notifier status bits (”…”�”}”(hjÞ­h²hh³Nh´Nubj)�”}”(hŒ``SSAM_NOTIF_HANDLED``”h]”hŒSSAM_NOTIF_HANDLED”…”�”}”(hjæ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞ­ubhŒ and ”…”�”}”(hjÞ­h²hh³Nh´Nubj)�”}”(hŒ``SSAM_NOTIF_STOP``”h]”hŒSSAM_NOTIF_STOP”…”�”}”(hjø­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞ­ubhŒ§) as well as a potential error value returned from the last executed notifier callback. Use ssam_notifier_to_errno() to convert this value to the original error value.”…”�”}”(hjÞ­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KŽhjö¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_nfblk_insert (C function)”Œc.ssam_nfblk_insert”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒOint ssam_nfblk_insert (struct ssam_nf_head *nh, struct ssam_notifier_block *nb)”h]”j1)�”}”(hŒNint ssam_nfblk_insert(struct ssam_nf_head *nh, struct ssam_notifier_block *nb)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hj1®h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj-®h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K©ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@®h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj-®h²hh³j?®h´K©ubjZ)�”}”(hŒssam_nfblk_insert”h]”j`)�”}”(hŒssam_nfblk_insert”h]”hŒssam_nfblk_insert”…”�”}”(hjR®h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjN®ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj-®h²hh³j?®h´K©ubj)�”}”(hŒ9(struct ssam_nf_head *nh, struct ssam_notifier_block *nb)”h]”(j)�”}”(hŒstruct ssam_nf_head *nh”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjn®h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjj®ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{®h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjj®ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_nf_head”h]”hŒ ssam_nf_head”…”�”}”(hjŒ®h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj‰®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jŽ®Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjT®sbŒc.ssam_nfblk_insert”†”asbuh1hhjj®ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬®h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjj®ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjº®h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjj®ubj`)�”}”(hŒnh”h]”hŒnh”…”�”}”(hjÇ®h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjj®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjf®ubj)�”}”(hŒstruct ssam_notifier_block *nb”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjà®h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÜ®ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí®h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÜ®ubh)�”}”(hhh]”j`)�”}”(hŒssam_notifier_block”h]”hŒssam_notifier_block”…”�”}”(hjþ®h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjû®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¯Œmodname”NŒ classname”Nj\j_)�”}”jb]”j¨®Œc.ssam_nfblk_insert”†”asbuh1hhjÜ®ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÜ®ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj*¯h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÜ®ubj`)�”}”(hŒnb”h]”hŒnb”…”�”}”(hj7¯h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÜ®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjf®ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj-®h²hh³j?®h´K©ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj)®h²hh³j?®h´K©ubah}”(h]”j$®ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j?®h´K©hj&®h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ9Insert a new notifier block into the given notifier list.”h]”hŒ9Insert a new notifier block into the given notifier list.”…”�”}”(hja¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K©hj^¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj&®h²hh³j?®h´K©ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jy¯j¯jy¯j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX¦**Parameters** ``struct ssam_nf_head *nh`` The notifier head into which the block should be inserted. ``struct ssam_notifier_block *nb`` The notifier block to add. **Note** This function must be synchronized by the caller with respect to other insert, find, and/or remove calls by holding ``struct ssam_nf.lock``. **Return** Returns zero on success, ``-EEXIST`` if the notifier block has already been registered.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K­hj}¯ubj)�”}”(hhh]”(j)�”}”(hŒW``struct ssam_nf_head *nh`` The notifier head into which the block should be inserted. ”h]”(j )�”}”(hŒ``struct ssam_nf_head *nh``”h]”j)�”}”(hj¢¯h]”hŒstruct ssam_nf_head *nh”…”�”}”(hj¤¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K«hjœ¯ubj))�”}”(hhh]”hþ)�”}”(hŒ:The notifier head into which the block should be inserted.”h]”hŒ:The notifier head into which the block should be inserted.”…”�”}”(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&]”uh1jh³j·¯h´K«hj™¯ubj)�”}”(hŒ>``struct ssam_notifier_block *nb`` The notifier block to add. ”h]”(j )�”}”(hŒ"``struct ssam_notifier_block *nb``”h]”j)�”}”(hjÛ¯h]”hŒstruct ssam_notifier_block *nb”…”�”}”(hjݯh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K¬hjÕ¯ubj))�”}”(hhh]”hþ)�”}”(hŒThe notifier block to add.”h]”hŒThe notifier block to add.”…”�”}”(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&]”uh1jh³jð¯h´K¬hj™¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj}¯ubhþ)�”}”(hŒ**Note**”h]”j¾)�”}”(hj°h]”hŒNote”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K®hj}¯ubhþ)�”}”(hŒŒThis function must be synchronized by the caller with respect to other insert, find, and/or remove calls by holding ``struct ssam_nf.lock``.”h]”(hŒtThis function must be synchronized by the caller with respect to other insert, find, and/or remove calls by holding ”…”�”}”(hj,°h²hh³Nh´Nubj)�”}”(hŒ``struct ssam_nf.lock``”h]”hŒstruct ssam_nf.lock”…”�”}”(hj4°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,°ubhŒ.”…”�”}”(hj,°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K®hj}¯ubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjO°h]”hŒReturn”…”�”}”(hjQ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjM°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K±hj}¯ubhþ)�”}”(hŒWReturns zero on success, ``-EEXIST`` if the notifier block has already been registered.”•xh]”(hŒReturns zero on success, ”…”�”}”(hje°h²hh³Nh´Nubj)�”}”(hŒ ``-EEXIST``”h]”hŒ-EEXIST”…”�”}”(hjm°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhje°ubhŒ3 if the notifier block has already been registered.”…”�”}”(hje°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´K±hj}¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_nfblk_find (C function)”Œc.ssam_nfblk_find”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒNbool ssam_nfblk_find (struct ssam_nf_head *nh, struct ssam_notifier_block *nb)”h]”j1)�”}”(hŒMbool ssam_nfblk_find(struct ssam_nf_head *nh, struct ssam_notifier_block *nb)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hj¦°h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj¢°h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KËubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´°h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¢°h²hh³j³°h´KËubjZ)�”}”(hŒssam_nfblk_find”h]”j`)�”}”(hŒssam_nfblk_find”h]”hŒssam_nfblk_find”…”�”}”(hjưh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj°ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¢°h²hh³j³°h´KËubj)�”}”(hŒ9(struct ssam_nf_head *nh, struct ssam_notifier_block *nb)”h]”(j)�”}”(hŒstruct ssam_nf_head *nh”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjâ°h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÞ°ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï°h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÞ°ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_nf_head”h]”hŒ ssam_nf_head”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjý°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j±Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjȰsbŒc.ssam_nfblk_find”†”asbuh1hhjÞ°ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ±h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÞ°ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj.±h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÞ°ubj`)�”}”(hŒnh”h]”hŒnh”…”�”}”(hj;±h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÞ°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÚ°ubj)�”}”(hŒstruct ssam_notifier_block *nb”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjT±h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjP±ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja±h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjP±ubh)�”}”(hhh]”j`)�”}”(hŒssam_notifier_block”h]”hŒssam_notifier_block”…”�”}”(hjr±h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjo±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jt±Œmodname”NŒ classname”Nj\j_)�”}”jb]”j±Œc.ssam_nfblk_find”†”asbuh1hhjP±ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�±h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjP±ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjž±h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjP±ubj`)�”}”(hŒnb”h]”hŒnb”…”�”}”(hj«±h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjP±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÚ°ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj¢°h²hh³j³°h´KËubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjž°h²hh³j³°h´KËubah}”(h]”j™°ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j³°h´KËhj›°h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒICheck if a notifier block is registered on the given notifier head. list.”h]”hŒICheck if a notifier block is registered on the given notifier head. list.”…”�”}”(hjÕ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KËhjÒ±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj›°h²hh³j³°h´KËubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jí±j¯jí±j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX¤**Parameters** ``struct ssam_nf_head *nh`` The notifier head on which to search. ``struct ssam_notifier_block *nb`` The notifier block to search for. **Note** This function must be synchronized by the caller with respect to other insert, find, and/or remove calls by holding ``struct ssam_nf.lock``. **Return** Returns true if the given notifier block is registered on the given notifier head, false otherwise.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KÏhjñ±ubj)�”}”(hhh]”(j)�”}”(hŒB``struct ssam_nf_head *nh`` The notifier head on which to search. ”h]”(j )�”}”(hŒ``struct ssam_nf_head *nh``”h]”j)�”}”(hj²h]”hŒstruct ssam_nf_head *nh”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KÎhj²ubj))�”}”(hhh]”hþ)�”}”(hŒ%The notifier head on which to search.”h]”hŒ%The notifier head on which to search.”…”�”}”(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&]”uh1jh³j+²h´KÎhj ²ubj)�”}”(hŒE``struct ssam_notifier_block *nb`` The notifier block to search for. ”h]”(j )�”}”(hŒ"``struct ssam_notifier_block *nb``”h]”j)�”}”(hjO²h]”hŒstruct ssam_notifier_block *nb”…”�”}”(hjQ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KÏhjI²ubj))�”}”(hhh]”hþ)�”}”(hŒ!The notifier block to search for.”h]”hŒ!The notifier block to search for.”…”�”}”(hjh²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jd²h´KÏhje²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjI²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jd²h´KÏhj ²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjñ±ubhþ)�”}”(hŒ**Note**”h]”j¾)�”}”(hjвh]”hŒNote”…”�”}”(hjŒ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjˆ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KÑhjñ±ubhþ)�”}”(hŒŒThis function must be synchronized by the caller with respect to other insert, find, and/or remove calls by holding ``struct ssam_nf.lock``.”h]”(hŒtThis function must be synchronized by the caller with respect to other insert, find, and/or remove calls by holding ”…”�”}”(hj ²h²hh³Nh´Nubj)�”}”(hŒ``struct ssam_nf.lock``”h]”hŒstruct ssam_nf.lock”…”�”}”(hj¨²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ²ubhŒ.”…”�”}”(hj ²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KÑ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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KÔhjñ±ubhþ)�”}”(hŒcReturns true if the given notifier block is registered on the given notifier head, false otherwise.”h]”hŒcReturns true if the given notifier block is registered on the given notifier head, false otherwise.”…”�”}”(hjÙ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KÔhjñ±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_nfblk_remove (C function)”Œc.ssam_nfblk_remove”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ7void ssam_nfblk_remove (struct ssam_notifier_block *nb)”h]”j1)�”}”(hŒ6void ssam_nfblk_remove(struct ssam_notifier_block *nb)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj³h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KåubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj³h²hh³j³h´KåubjZ)�”}”(hŒssam_nfblk_remove”h]”j`)�”}”(hŒssam_nfblk_remove”h]”hŒssam_nfblk_remove”…”�”}”(hj)³h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj%³ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj³h²hh³j³h´Kåubj)�”}”(hŒ (struct ssam_notifier_block *nb)”h]”j)�”}”(hŒstruct ssam_notifier_block *nb”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjE³h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjA³ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR³h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjA³ubh)�”}”(hhh]”j`)�”}”(hŒssam_notifier_block”h]”hŒssam_notifier_block”…”�”}”(hjc³h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj`³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”je³Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj+³sbŒc.ssam_nfblk_remove”†”asbuh1hhjA³ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ³h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjA³ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj‘³h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjA³ubj`)�”}”(hŒnb”h]”hŒnb”…”�”}”(hjž³h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjA³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj=³ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj³h²hh³j³h´Kåubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj³h²hh³j³h´Kåubah}”(h]”jû²ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j³h´Kåhjý²h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ/Remove a notifier block from its notifier list.”h]”hŒ/Remove a notifier block from its notifier list.”…”�”}”(hjȳh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kåhjųh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjý²h²hh³j³h´Kåubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jà³j¯jà³j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX¿**Parameters** ``struct ssam_notifier_block *nb`` The notifier block to be removed. **Note** This function must be synchronized by the caller with respect to other insert, find, and/or remove calls by holding ``struct ssam_nf.lock``. Furthermore, the caller _must_ ensure SRCU synchronization by calling synchronize_srcu() with ``nh->srcu`` after leaving the critical section, to ensure that the removed notifier block is not in use any more.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kéhjä³ubj)�”}”(hhh]”j)�”}”(hŒE``struct ssam_notifier_block *nb`` The notifier block to be removed. ”h]”(j )�”}”(hŒ"``struct ssam_notifier_block *nb``”h]”j)�”}”(hj ´h]”hŒstruct ssam_notifier_block *nb”…”�”}”(hj ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kæhj´ubj))�”}”(hhh]”hþ)�”}”(hŒ!The notifier block to be removed.”h]”hŒ!The notifier block to be removed.”…”�”}”(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&]”uh1jh³j´h´Kæhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjä³ubhþ)�”}”(hŒ**Note**”h]”j¾)�”}”(hjD´h]”hŒNote”…”�”}”(hjF´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjB´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kèhjä³ubhþ)�”}”(hX]This function must be synchronized by the caller with respect to other insert, find, and/or remove calls by holding ``struct ssam_nf.lock``. Furthermore, the caller _must_ ensure SRCU synchronization by calling synchronize_srcu() with ``nh->srcu`` after leaving the critical section, to ensure that the removed notifier block is not in use any more.”h]”(hŒtThis function must be synchronized by the caller with respect to other insert, find, and/or remove calls by holding ”…”�”}”(hjZ´h²hh³Nh´Nubj)�”}”(hŒ``struct ssam_nf.lock``”h]”hŒstruct ssam_nf.lock”…”�”}”(hjb´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZ´ubhŒ`. Furthermore, the caller _must_ ensure SRCU synchronization by calling synchronize_srcu() with ”…”�”}”(hjZ´h²hh³Nh´Nubj)�”}”(hŒ ``nh->srcu``”h]”hŒnh->srcu”…”�”}”(hjt´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZ´ubhŒf after leaving the critical section, to ensure that the removed notifier block is not in use any more.”…”�”}”(hjZ´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kèhjä³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_nf_head_init (C function)”Œc.ssam_nf_head_init”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ/int ssam_nf_head_init (struct ssam_nf_head *nh)”h]”j1)�”}”(hŒ.int ssam_nf_head_init(struct ssam_nf_head *nh)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hj­´h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj©´h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´KôubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼´h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj©´h²hh³j»´h´KôubjZ)�”}”(hŒssam_nf_head_init”h]”j`)�”}”(hŒssam_nf_head_init”h]”hŒssam_nf_head_init”…”�”}”(hjδh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÊ´ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj©´h²hh³j»´h´Kôubj)�”}”(hŒ(struct ssam_nf_head *nh)”h]”j)�”}”(hŒstruct ssam_nf_head *nh”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjê´h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjæ´ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷´h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjæ´ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_nf_head”h]”hŒ ssam_nf_head”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j µŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjдsbŒc.ssam_nf_head_init”†”asbuh1hhjæ´ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(µh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjæ´ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj6µh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjæ´ubj`)�”}”(hŒnh”h]”hŒnh”…”�”}”(hjCµh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjæ´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjâ´ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj©´h²hh³j»´h´Kôubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj¥´h²hh³j»´h´Kôubah}”(h]”j ´ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j»´h´Kôhj¢´h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ#Initialize the given notifier head.”h]”hŒ#Initialize the given notifier head.”…”�”}”(hjmµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kôhjjµh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¢´h²hh³j»´h´Kôubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j…µj¯j…µj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒN**Parameters** ``struct ssam_nf_head *nh`` The notifier head to initialize.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Køhj‰µubj)�”}”(hhh]”j)�”}”(hŒ<``struct ssam_nf_head *nh`` The notifier head to initialize.”h]”(j )�”}”(hŒ``struct ssam_nf_head *nh``”h]”j)�”}”(hj®µh]”hŒstruct ssam_nf_head *nh”…”�”}”(hj°µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬µubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kúhj¨µubj))�”}”(hhh]”hþ)�”}”(hŒ The notifier head to initialize.”h]”hŒ The notifier head to initialize.”…”�”}”(hjǵh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Kõhjĵubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj¨µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jõh´Kúhj¥µubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰µubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ!ssam_nf_head_destroy (C function)”Œc.ssam_nf_head_destroy”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ3void ssam_nf_head_destroy (struct ssam_nf_head *nh)”h]”j1)�”}”(hŒ2void ssam_nf_head_destroy(struct ssam_nf_head *nh)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj¶h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¶h²hh³j¶h´MubjZ)�”}”(hŒssam_nf_head_destroy”h]”j`)�”}”(hŒssam_nf_head_destroy”h]”hŒssam_nf_head_destroy”…”�”}”(hj)¶h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj%¶ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¶h²hh³j¶h´Mubj)�”}”(hŒ(struct ssam_nf_head *nh)”h]”j)�”}”(hŒstruct ssam_nf_head *nh”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjE¶h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjA¶ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR¶h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjA¶ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_nf_head”h]”hŒ ssam_nf_head”…”�”}”(hjc¶h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj`¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”je¶Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj+¶sbŒc.ssam_nf_head_destroy”†”asbuh1hhjA¶ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ¶h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjA¶ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj‘¶h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjA¶ubj`)�”}”(hŒnh”h]”hŒnh”…”�”}”(hjž¶h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjA¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj=¶ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj¶h²hh³j¶h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj¶h²hh³j¶h´Mubah}”(h]”jûµah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j¶h´Mhjýµh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ%Deinitialize the given notifier head.”h]”hŒ%Deinitialize the given notifier head.”…”�”}”(hjȶh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MhjŶh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjýµh²hh³j¶h´Mubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jà¶j¯jà¶j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒP**Parameters** ``struct ssam_nf_head *nh`` The notifier head to deinitialize.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mhjä¶ubj)�”}”(hhh]”j)�”}”(hŒ>``struct ssam_nf_head *nh`` The notifier head to deinitialize.”h]”(j )�”}”(hŒ``struct ssam_nf_head *nh``”h]”j)�”}”(hj ·h]”hŒstruct ssam_nf_head *nh”…”�”}”(hj ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hj·ubj))�”}”(hhh]”hþ)�”}”(hŒ"The notifier head to deinitialize.”h]”hŒ"The notifier head to deinitialize.”…”�”}”(hj"·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j·h´M hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjä¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_nf_refcount_key (C struct)”Œc.ssam_nf_refcount_key”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒssam_nf_refcount_key”h]”j1)�”}”(hŒstruct ssam_nf_refcount_key”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjc·h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj_·h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq·h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj_·h²hh³jp·h´M ubjZ)�”}”(hŒssam_nf_refcount_key”h]”j`)�”}”(hj]·h]”hŒssam_nf_refcount_key”…”�”}”(hjƒ·h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj·ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj_·h²hh³jp·h´M ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj[·h²hh³jp·h´M ubah}”(h]”jV·ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jp·h´M hjX·h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ1Key used for event activation reference counting.”h]”hŒ1Key used for event activation reference counting.”…”�”}”(hj¥·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mhj¢·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjX·h²hh³jp·h´M ubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®j½·j¯j½·j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒù**Definition**:: struct ssam_nf_refcount_key { struct ssam_event_registry reg; struct ssam_event_id id; }; **Members** ``reg`` The registry via which the event is enabled/disabled. ``id`` The ID uniquely describing the event.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MhjÁ·ubjÙ)�”}”(hŒastruct ssam_nf_refcount_key { struct ssam_event_registry reg; struct ssam_event_id id; };”h]”hŒastruct ssam_nf_refcount_key { struct ssam_event_registry reg; struct ssam_event_id id; };”…”�”}”hjâ·sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MhjÁ·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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MhjÁ·ubj)�”}”(hhh]”(j)�”}”(hŒ>``reg`` The registry via which the event is enabled/disabled. ”h]”(j )�”}”(hŒ``reg``”h]”j)�”}”(hj¸h]”hŒreg”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mhj ¸ubj))�”}”(hhh]”hþ)�”}”(hŒ5The registry via which the event is enabled/disabled.”h]”hŒ5The registry via which the event is enabled/disabled.”…”�”}”(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&]”uh1jh³j'¸h´Mhj ¸ubj)�”}”(hŒ,``id`` The ID uniquely describing the event.”h]”(j )�”}”(hŒ``id``”h]”j)�”}”(hjK¸h]”hŒid”…”�”}”(hjM¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjI¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MhjE¸ubj))�”}”(hhh]”hþ)�”}”(hŒ%The ID uniquely describing the event.”h]”hŒ%The ID uniquely describing the event.”…”�”}”(hjd¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mhja¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjE¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j`¸h´Mhj ¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁ·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ!ssam_nf_refcount_entry (C struct)”Œc.ssam_nf_refcount_entry”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒssam_nf_refcount_entry”h]”j1)�”}”(hŒstruct ssam_nf_refcount_entry”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj¥¸h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj¡¸h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³¸h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¡¸h²hh³j²¸h´MubjZ)�”}”(hŒssam_nf_refcount_entry”h]”j`)�”}”(hjŸ¸h]”hŒssam_nf_refcount_entry”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÁ¸ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¡¸h²hh³j²¸h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj�¸h²hh³j²¸h´Mubah}”(h]”j˜¸ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j²¸h´Mhjš¸h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ7RB-tree entry for reference counting event activations.”h]”hŒ7RB-tree entry for reference counting event activations.”…”�”}”(hjç¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mhjä¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjš¸h²hh³j²¸h´Mubeh}”(h]”h ]”(j¨Œstruct”eh"]”h$]”h&]”j­j¨j®jÿ¸j¯jÿ¸j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hXf**Definition**:: struct ssam_nf_refcount_entry { struct rb_node node; struct ssam_nf_refcount_key key; int refcount; u8 flags; }; **Members** ``node`` The node of this entry in the rb-tree. ``key`` The key of the event. ``refcount`` The reference-count of the event. ``flags`` The flags used when enabling the event.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mhj¹ubjÙ)�”}”(hŒ€struct ssam_nf_refcount_entry { struct rb_node node; struct ssam_nf_refcount_key key; int refcount; u8 flags; };”h]”hŒ€struct ssam_nf_refcount_entry { struct rb_node node; struct ssam_nf_refcount_key key; int refcount; u8 flags; };”…”�”}”hj$¹sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jØh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M!hj¹ubhþ)�”}”(hŒ **Members**”h]”j¾)�”}”(hj5¹h]”hŒMembers”…”�”}”(hj7¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj3¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M(hj¹ubj)�”}”(hhh]”(j)�”}”(hŒ0``node`` The node of this entry in the rb-tree. ”h]”(j )�”}”(hŒ``node``”h]”j)�”}”(hjT¹h]”hŒnode”…”�”}”(hjV¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjR¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MhjN¹ubj))�”}”(hhh]”hþ)�”}”(hŒ&The node of this entry in the rb-tree.”h]”hŒ&The node of this entry in the rb-tree.”…”�”}”(hjm¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ji¹h´Mhjj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjN¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³ji¹h´MhjK¹ubj)�”}”(hŒ``key`` The key of the event. ”h]”(j )�”}”(hŒ``key``”h]”j)�”}”(hj�¹h]”hŒkey”…”�”}”(hj�¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mhj‡¹ubj))�”}”(hhh]”hþ)�”}”(hŒThe key of the event.”h]”hŒThe key of the event.”…”�”}”(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&]”uh1jh³j¢¹h´MhjK¹ubj)�”}”(hŒ/``refcount`` The reference-count of the event. ”h]”(j )�”}”(hŒ ``refcount``”h]”j)�”}”(hjƹh]”hŒrefcount”…”�”}”(hjȹh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjĹubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hjÀ¹ubj))�”}”(hhh]”hþ)�”}”(hŒ!The reference-count of the event.”h]”hŒ!The reference-count of the event.”…”�”}”(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&]”uh1jh³jÛ¹h´M hjK¹ubj)�”}”(hŒ1``flags`` The flags used when enabling the event.”h]”(j )�”}”(hŒ ``flags``”h]”j)�”}”(hjÿ¹h]”hŒflags”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjý¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hjù¹ubj))�”}”(hhh]”hþ)�”}”(hŒ'The flags used when enabling the event.”h]”hŒ'The flags used when enabling the event.”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M!hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjù¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jºh´M hjK¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ!ssam_nf_refcount_inc (C function)”Œc.ssam_nf_refcount_inc”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ‚struct ssam_nf_refcount_entry * ssam_nf_refcount_inc (struct ssam_nf *nf, struct ssam_event_registry reg, struct ssam_event_id id)”h]”j1)�”}”(hŒ€struct ssam_nf_refcount_entry *ssam_nf_refcount_inc(struct ssam_nf *nf, struct ssam_event_registry reg, struct ssam_event_id id)”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjYºh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjUºh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M*ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgºh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjUºh²hh³jfºh´M*ubh)�”}”(hhh]”j`)�”}”(hŒssam_nf_refcount_entry”h]”hŒssam_nf_refcount_entry”…”�”}”(hjxºh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjuºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jzºŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssam_nf_refcount_inc”sbŒc.ssam_nf_refcount_inc”†”asbuh1hhjUºh²hh³jfºh´M*ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™ºh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjUºh²hh³jfºh´M*ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj§ºh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjUºh²hh³jfºh´M*ubjZ)�”}”(hŒssam_nf_refcount_inc”h]”j`)�”}”(hj–ºh]”hŒssam_nf_refcount_inc”…”�”}”(hj¸ºh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj´ºubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjUºh²hh³jfºh´M*ubj)�”}”(hŒM(struct ssam_nf *nf, struct ssam_event_registry reg, struct ssam_event_id id)”h]”(j)�”}”(hŒstruct ssam_nf *nf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÓºh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjϺubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàºh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjϺubh)�”}”(hhh]”j`)�”}”(hŒssam_nf”h]”hŒssam_nf”…”�”}”(hjñºh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjîºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jóºŒmodname”NŒ classname”Nj\j_)�”}”jb]”j”ºŒc.ssam_nf_refcount_inc”†”asbuh1hhjϺubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjϺubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjϺubj`)�”}”(hŒnf”h]”hŒnf”…”�”}”(hj*»h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjϺubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj˺ubj)�”}”(hŒstruct ssam_event_registry reg”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjC»h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj?»ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP»h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj?»ubh)�”}”(hhh]”j`)�”}”(hŒssam_event_registry”h]”hŒssam_event_registry”…”�”}”(hja»h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj^»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jc»Œmodname”NŒ classname”Nj\j_)�”}”jb]”j”ºŒc.ssam_nf_refcount_inc”†”asbuh1hhj?»ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj?»ubj`)�”}”(hŒreg”h]”hŒreg”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj?»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj˺ubj)�”}”(hŒstruct ssam_event_id id”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj¦»h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj¢»ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³»h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¢»ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_event_id”h]”hŒ ssam_event_id”…”�”}”(hjÄ»h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÁ»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÆ»Œmodname”NŒ classname”Nj\j_)�”}”jb]”j”ºŒc.ssam_nf_refcount_inc”†”asbuh1hhj¢»ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ»h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¢»ubj`)�”}”(hŒid”h]”hŒid”…”�”}”(hjð»h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¢»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj˺ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjUºh²hh³jfºh´M*ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjQºh²hh³jfºh´M*ubah}”(h]”jLºah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jfºh´M*hjNºh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ9Increment reference-/activation-count of the given event.”h]”hŒ9Increment reference-/activation-count of the given event.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M*hj¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjNºh²hh³jfºh´M*ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j2¼j¯j2¼j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hXÉ**Parameters** ``struct ssam_nf *nf`` The notifier system reference. ``struct ssam_event_registry reg`` The registry used to enable/disable the event. ``struct ssam_event_id id`` The event ID. **Description** Increments the reference-/activation-count associated with the specified event type/ID, allocating a new entry for this event ID if necessary. A newly allocated entry will have a refcount of one. **Note** ``nf->lock`` must be held when calling this function. **Return** Returns the refcount entry on success. Returns an error pointer with ``-ENOSPC`` if there have already been ``INT_MAX`` events of the specified ID and type registered, or ``-ENOMEM`` if the entry could not be allocated.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M.hj6¼ubj)�”}”(hhh]”(j)�”}”(hŒ6``struct ssam_nf *nf`` The notifier system reference. ”h]”(j )�”}”(hŒ``struct ssam_nf *nf``”h]”j)�”}”(hj[¼h]”hŒstruct ssam_nf *nf”…”�”}”(hj]¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjY¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M,hjU¼ubj))�”}”(hhh]”hþ)�”}”(hŒThe notifier system reference.”h]”hŒThe notifier system reference.”…”�”}”(hjt¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jp¼h´M,hjq¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjU¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jp¼h´M,hjR¼ubj)�”}”(hŒR``struct ssam_event_registry reg`` The registry used to enable/disable the event. ”h]”(j )�”}”(hŒ"``struct ssam_event_registry reg``”h]”j)�”}”(hj”¼h]”hŒstruct ssam_event_registry reg”…”�”}”(hj–¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M-hj޼ubj))�”}”(hhh]”hþ)�”}”(hŒ.The registry used to enable/disable the event.”h]”hŒ.The registry used to enable/disable the event.”…”�”}”(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&]”uh1jh³j©¼h´M-hjR¼ubj)�”}”(hŒ*``struct ssam_event_id id`` The event ID. ”h]”(j )�”}”(hŒ``struct ssam_event_id id``”h]”j)�”}”(hjͼh]”hŒstruct ssam_event_id id”…”�”}”(hjϼh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M.hjǼubj))�”}”(hhh]”hþ)�”}”(hŒ The event ID.”h]”hŒ The event 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&]”uh1jh³jâ¼h´M.hjR¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj6¼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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M0hj6¼ubhþ)�”}”(hŒÃIncrements the reference-/activation-count associated with the specified event type/ID, allocating a new entry for this event ID if necessary. A newly allocated entry will have a refcount of one.”h]”hŒÃIncrements the reference-/activation-count associated with the specified event type/ID, allocating a new entry for this event ID if necessary. A newly allocated entry will have a refcount of one.”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M/hj6¼ubhþ)�”}”(hŒ**Note**”h]”j¾)�”}”(hj/½h]”hŒNote”…”�”}”(hj1½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj-½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M3hj6¼ubhþ)�”}”(hŒ5``nf->lock`` must be held when calling this function.”h]”(j)�”}”(hŒ ``nf->lock``”h]”hŒnf->lock”…”�”}”(hjI½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjE½ubhŒ) must be held when calling this function.”…”�”}”(hjE½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M4hj6¼ubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjd½h]”hŒReturn”…”�”}”(hjf½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjb½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M6hj6¼ubhþ)�”}”(hŒÛReturns the refcount entry on success. Returns an error pointer with ``-ENOSPC`` if there have already been ``INT_MAX`` events of the specified ID and type registered, or ``-ENOMEM`` if the entry could not be allocated.”h]”(hŒEReturns the refcount entry on success. Returns an error pointer with ”…”�”}”(hjz½h²hh³Nh´Nubj)�”}”(hŒ ``-ENOSPC``”h]”hŒ-ENOSPC”…”�”}”(hj‚½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz½ubhŒ if there have already been ”…”�”}”(hjz½h²hh³Nh´Nubj)�”}”(hŒ ``INT_MAX``”h]”hŒINT_MAX”…”�”}”(hj”½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz½ubhŒ4 events of the specified ID and type registered, or ”…”�”}”(hjz½h²hh³Nh´Nubj)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hj¦½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz½ubhŒ% if the entry could not be allocated.”…”�”}”(hjz½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M6hj6¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ!ssam_nf_refcount_dec (C function)”Œc.ssam_nf_refcount_dec”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ‚struct ssam_nf_refcount_entry * ssam_nf_refcount_dec (struct ssam_nf *nf, struct ssam_event_registry reg, struct ssam_event_id id)”h]”j1)�”}”(hŒ€struct ssam_nf_refcount_entry *ssam_nf_refcount_dec(struct ssam_nf *nf, struct ssam_event_registry reg, struct ssam_event_id id)”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjß½h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÛ½h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MiubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí½h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÛ½h²hh³jì½h´Miubh)�”}”(hhh]”j`)�”}”(hŒssam_nf_refcount_entry”h]”hŒssam_nf_refcount_entry”…”�”}”(hjþ½h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjû½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¾Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssam_nf_refcount_dec”sbŒc.ssam_nf_refcount_dec”†”asbuh1hhjÛ½h²hh³jì½h´MiubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÛ½h²hh³jì½h´Miubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj-¾h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÛ½h²hh³jì½h´MiubjZ)�”}”(hŒssam_nf_refcount_dec”h]”j`)�”}”(hj¾h]”hŒssam_nf_refcount_dec”…”�”}”(hj>¾h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj:¾ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÛ½h²hh³jì½h´Miubj)�”}”(hŒM(struct ssam_nf *nf, struct ssam_event_registry reg, struct ssam_event_id id)”h]”(j)�”}”(hŒstruct ssam_nf *nf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjY¾h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjU¾ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf¾h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjU¾ubh)�”}”(hhh]”j`)�”}”(hŒssam_nf”h]”hŒssam_nf”…”�”}”(hjw¾h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjt¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jy¾Œmodname”NŒ classname”Nj\j_)�”}”jb]”j¾Œc.ssam_nf_refcount_dec”†”asbuh1hhjU¾ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•¾h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjU¾ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj£¾h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjU¾ubj`)�”}”(hŒnf”h]”hŒnf”…”�”}”(hj°¾h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjU¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjQ¾ubj)�”}”(hŒstruct ssam_event_registry reg”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjɾh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjžubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ¾h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjžubh)�”}”(hhh]”j`)�”}”(hŒssam_event_registry”h]”hŒssam_event_registry”…”�”}”(hjç¾h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjä¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j龌modname”NŒ classname”Nj\j_)�”}”jb]”j¾Œc.ssam_nf_refcount_dec”†”asbuh1hhjžubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjžubj`)�”}”(hŒreg”h]”hŒreg”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjQ¾ubj)�”}”(hŒstruct ssam_event_id id”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj,¿h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj(¿ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9¿h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj(¿ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_event_id”h]”hŒ ssam_event_id”…”�”}”(hjJ¿h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjG¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jL¿Œmodname”NŒ classname”Nj\j_)�”}”jb]”j¾Œc.ssam_nf_refcount_dec”†”asbuh1hhj(¿ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh¿h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj(¿ubj`)�”}”(hŒid”h]”hŒid”…”�”}”(hjv¿h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj(¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjQ¾ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÛ½h²hh³jì½h´Miubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj×½h²hh³jì½h´Miubah}”(h]”jÒ½ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jì½h´MihjÔ½h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ9Decrement reference-/activation-count of the given event.”h]”hŒ9Decrement reference-/activation-count of the given event.”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mihj�¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÔ½h²hh³jì½h´Miubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j¸¿j¯j¸¿j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX:**Parameters** ``struct ssam_nf *nf`` The notifier system reference. ``struct ssam_event_registry reg`` The registry used to enable/disable the event. ``struct ssam_event_id id`` The event ID. **Description** Decrements the reference-/activation-count of the specified event, returning its entry. If the returned entry has a refcount of zero, the caller is responsible for freeing it using kfree(). **Note** ``nf->lock`` must be held when calling this function. **Return** Returns the refcount entry on success or ``NULL`` if the entry has not been found.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mmhj¼¿ubj)�”}”(hhh]”(j)�”}”(hŒ6``struct ssam_nf *nf`` The notifier system reference. ”h]”(j )�”}”(hŒ``struct ssam_nf *nf``”h]”j)�”}”(hjá¿h]”hŒstruct ssam_nf *nf”…”�”}”(hjã¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjß¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MkhjÛ¿ubj))�”}”(hhh]”hþ)�”}”(hŒThe notifier system reference.”h]”hŒThe notifier system reference.”…”�”}”(hjú¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jö¿h´Mkhj÷¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÛ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jö¿h´MkhjØ¿ubj)�”}”(hŒR``struct ssam_event_registry reg`` The registry used to enable/disable the event. ”h]”(j )�”}”(hŒ"``struct ssam_event_registry reg``”h]”j)�”}”(hjÀh]”hŒstruct ssam_event_registry reg”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MlhjÀubj))�”}”(hhh]”hþ)�”}”(hŒ.The registry used to enable/disable the event.”h]”hŒ.The registry used to enable/disable the event.”…”�”}”(hj3Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j/Àh´Mlhj0Àubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j/Àh´MlhjØ¿ubj)�”}”(hŒ*``struct ssam_event_id id`` The event ID. ”h]”(j )�”}”(hŒ``struct ssam_event_id id``”h]”j)�”}”(hjSÀh]”hŒstruct ssam_event_id id”…”�”}”(hjUÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MmhjMÀubj))�”}”(hhh]”hþ)�”}”(hŒ The event ID.”h]”hŒ The event ID.”…”�”}”(hjlÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jhÀh´MmhjiÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjMÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jhÀh´MmhjØ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼¿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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mohj¼¿ubhþ)�”}”(hŒ½Decrements the reference-/activation-count of the specified event, returning its entry. If the returned entry has a refcount of zero, the caller is responsible for freeing it using kfree().”h]”hŒ½Decrements the reference-/activation-count of the specified event, returning its entry. If the returned entry has a refcount of zero, the caller is responsible for freeing it using kfree().”…”�”}”(hj¤Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mnhj¼¿ubhþ)�”}”(hŒ**Note**”h]”j¾)�”}”(hjµÀh]”hŒNote”…”�”}”(hj·Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj³Àubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mrhj¼¿ubhþ)�”}”(hŒ5``nf->lock`` must be held when calling this function.”h]”(j)�”}”(hŒ ``nf->lock``”h]”hŒnf->lock”…”�”}”(hjÏÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjËÀubhŒ) must be held when calling this function.”…”�”}”(hjËÀh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mshj¼¿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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Muhj¼¿ubhþ)�”}”(hŒRReturns the refcount entry on success or ``NULL`` if the entry has not been found.”h]”(hŒ)Returns the refcount entry on success or ”…”�”}”(hjÁh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁubhŒ! if the entry has not been found.”…”�”}”(hjÁh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Muhj¼¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ&ssam_nf_refcount_dec_free (C function)”Œc.ssam_nf_refcount_dec_free”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒlvoid ssam_nf_refcount_dec_free (struct ssam_nf *nf, struct ssam_event_registry reg, struct ssam_event_id id)”h]”j1)�”}”(hŒkvoid ssam_nf_refcount_dec_free(struct ssam_nf *nf, struct ssam_event_registry reg, struct ssam_event_id id)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjAÁh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj=Áh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M›ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPÁh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj=Áh²hh³jOÁh´M›ubjZ)�”}”(hŒssam_nf_refcount_dec_free”h]”j`)�”}”(hŒssam_nf_refcount_dec_free”h]”hŒssam_nf_refcount_dec_free”…”�”}”(hjbÁh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj^Áubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj=Áh²hh³jOÁh´M›ubj)�”}”(hŒM(struct ssam_nf *nf, struct ssam_event_registry reg, struct ssam_event_id id)”h]”(j)�”}”(hŒstruct ssam_nf *nf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj~Áh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjzÁubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Áh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjzÁubh)�”}”(hhh]”j`)�”}”(hŒssam_nf”h]”hŒssam_nf”…”�”}”(hjœÁh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj™Áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jžÁŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjdÁsbŒc.ssam_nf_refcount_dec_free”†”asbuh1hhjzÁubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Áh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjzÁubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÊÁh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjzÁubj`)�”}”(hŒnf”h]”hŒnf”…”�”}”(hj×Áh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjzÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjvÁubj)�”}”(hŒstruct ssam_event_registry reg”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjðÁh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjìÁubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýÁh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjìÁubh)�”}”(hhh]”j`)�”}”(hŒssam_event_registry”h]”hŒssam_event_registry”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj Âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÂŒmodname”NŒ classname”Nj\j_)�”}”jb]”j¸ÁŒc.ssam_nf_refcount_dec_free”†”asbuh1hhjìÁubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Âh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjìÁubj`)�”}”(hŒreg”h]”hŒreg”…”�”}”(hj:Âh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjìÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjvÁubj)�”}”(hŒstruct ssam_event_id id”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjSÂh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjOÂubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Âh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjOÂubh)�”}”(hhh]”j`)�”}”(hŒ ssam_event_id”h]”hŒ ssam_event_id”…”�”}”(hjqÂh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjnÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jsÂŒmodname”NŒ classname”Nj\j_)�”}”jb]”j¸ÁŒc.ssam_nf_refcount_dec_free”†”asbuh1hhjOÂubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjOÂubj`)�”}”(hŒid”h]”hŒid”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjOÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjvÁubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj=Áh²hh³jOÁh´M›ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj9Áh²hh³jOÁh´M›ubah}”(h]”j4Áah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jOÁh´M›hj6Áh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒpDecrement reference-/activation-count of the given event and free its entry if the reference count reaches zero.”h]”hŒpDecrement reference-/activation-count of the given event and free its entry if the reference count reaches zero.”…”�”}”(hjÇÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M›hjÄÂh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj6Áh²hh³jOÁh´M›ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jßÂj¯jßÂj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX…**Parameters** ``struct ssam_nf *nf`` The notifier system reference. ``struct ssam_event_registry reg`` The registry used to enable/disable the event. ``struct ssam_event_id id`` The event ID. **Description** Decrements the reference-/activation-count of the specified event, freeing its entry if it reaches zero. **Note** ``nf->lock`` must be held when calling this function.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MŸhjãÂubj)�”}”(hhh]”(j)�”}”(hŒ6``struct ssam_nf *nf`` The notifier system reference. ”h]”(j )�”}”(hŒ``struct ssam_nf *nf``”h]”j)�”}”(hjÃh]”hŒstruct ssam_nf *nf”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M�hjÃubj))�”}”(hhh]”hþ)�”}”(hŒThe notifier system reference.”h]”hŒThe notifier system reference.”…”�”}”(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&]”uh1jh³jÃh´M�hjÿÂubj)�”}”(hŒR``struct ssam_event_registry reg`` The registry used to enable/disable the event. ”h]”(j )�”}”(hŒ"``struct ssam_event_registry reg``”h]”j)�”}”(hjAÃh]”hŒstruct ssam_event_registry reg”…”�”}”(hjCÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mžhj;Ãubj))�”}”(hhh]”hþ)�”}”(hŒ.The registry used to enable/disable the event.”h]”hŒ.The registry used to enable/disable the event.”…”�”}”(hjZÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jVÃh´MžhjWÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj;Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jVÃh´MžhjÿÂubj)�”}”(hŒ*``struct ssam_event_id id`` The event ID. ”h]”(j )�”}”(hŒ``struct ssam_event_id id``”h]”j)�”}”(hjzÃh]”hŒstruct ssam_event_id id”…”�”}”(hj|Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MŸhjtÃubj))�”}”(hhh]”hþ)�”}”(hŒ The event ID.”h]”hŒ The event ID.”…”�”}”(hj“Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j�Ãh´MŸhj�Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjtÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�Ãh´MŸhjÿÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjãÂ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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¡hjãÂubhþ)�”}”(hŒhDecrements the reference-/activation-count of the specified event, freeing its entry if it reaches zero.”h]”hŒhDecrements the reference-/activation-count of the specified event, freeing its entry if it reaches zero.”…”�”}”(hjËÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hjãÂubhþ)�”}”(hŒ**Note**”h]”j¾)�”}”(hjÜÃh]”hŒNote”…”�”}”(hjÞÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÚÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M£hjãÂubhþ)�”}”(hŒ5``nf->lock`` must be held when calling this function.”h]”(j)�”}”(hŒ ``nf->lock``”h]”hŒnf->lock”…”�”}”(hjöÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòÃubhŒ) must be held when calling this function.”…”�”}”(hjòÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¤hjãÂubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ#ssam_nf_refcount_empty (C function)”Œc.ssam_nf_refcount_empty”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ0bool ssam_nf_refcount_empty (struct ssam_nf *nf)”h]”j1)�”}”(hŒ/bool ssam_nf_refcount_empty(struct ssam_nf *nf)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hj/Äh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj+Äh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”•9h´M´ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Äh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj+Äh²hh³j<Äh´M´ubjZ)�”}”(hŒssam_nf_refcount_empty”h]”j`)�”}”(hŒssam_nf_refcount_empty”h]”hŒssam_nf_refcount_empty”…”�”}”(hjOÄh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjKÄubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj+Äh²hh³j<Äh´M´ubj)�”}”(hŒ(struct ssam_nf *nf)”h]”j)�”}”(hŒstruct ssam_nf *nf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjkÄh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjgÄubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxÄh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjgÄubh)�”}”(hhh]”j`)�”}”(hŒssam_nf”h]”hŒssam_nf”…”�”}”(hj‰Äh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj†Äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j‹ÄŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjQÄsbŒc.ssam_nf_refcount_empty”†”asbuh1hhjgÄubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Äh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjgÄubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj·Äh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjgÄubj`)�”}”(hŒnf”h]”hŒnf”…”�”}”(hjÄÄh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjgÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjcÄubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj+Äh²hh³j<Äh´M´ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj'Äh²hh³j<Äh´M´ubah}”(h]”j"Äah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j<Äh´M´hj$Äh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ>Test if the notification system has any enabled/active events.”h]”hŒ>Test if the notification system has any enabled/active events.”…”�”}”(hjîÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M´hjëÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj$Äh²hh³j<Äh´M´ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jÅj¯jÅj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒA**Parameters** ``struct ssam_nf *nf`` The notification system.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¸hj Åubj)�”}”(hhh]”j)�”}”(hŒ/``struct ssam_nf *nf`` The notification system.”h]”(j )�”}”(hŒ``struct ssam_nf *nf``”h]”j)�”}”(hj/Åh]”hŒstruct ssam_nf *nf”…”�”}”(hj1Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-Åubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mºhj)Åubj))�”}”(hhh]”hþ)�”}”(hŒThe notification system.”h]”hŒThe notification system.”…”�”}”(hjHÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¶hjEÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj)Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jDÅh´Mºhj&Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Åubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_nf_call (C function)”Œc.ssam_nf_call”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ^void ssam_nf_call (struct ssam_nf *nf, struct device *dev, u16 rqid, struct ssam_event *event)”h]”j1)�”}”(hŒ]void ssam_nf_call(struct ssam_nf *nf, struct device *dev, u16 rqid, struct ssam_event *event)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‰Åh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj…Åh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¾ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Åh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj…Åh²hh³j—Åh´M¾ubjZ)�”}”(hŒ ssam_nf_call”h]”j`)�”}”(hŒ ssam_nf_call”h]”hŒ ssam_nf_call”…”�”}”(hjªÅh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¦Åubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj…Åh²hh³j—Åh´M¾ubj)�”}”(hŒL(struct ssam_nf *nf, struct device *dev, u16 rqid, struct ssam_event *event)”h]”(j)�”}”(hŒstruct ssam_nf *nf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÆÅh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÂÅubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓÅh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÂÅubh)�”}”(hhh]”j`)�”}”(hŒssam_nf”h]”hŒssam_nf”…”�”}”(hjäÅh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjáÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jæÅŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj¬ÅsbŒc.ssam_nf_call”†”asbuh1hhjÂÅubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÂÅubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÂÅubj`)�”}”(hŒnf”h]”hŒnf”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÂÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¾Åubj)�”}”(hŒstruct device *dev”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj8Æh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj4ÆubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEÆh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj4Æubh)�”}”(hhh]”j`)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjVÆh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjSÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jXÆŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÆŒc.ssam_nf_call”†”asbuh1hhj4ÆubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtÆh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj4Æubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj‚Æh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj4Æubj`)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj�Æh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj4Æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¾Åubj)�”}”(hŒu16 rqid”h]”(h)�”}”(hhh]”j`)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj«Æh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¨Æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j­ÆŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÆŒc.ssam_nf_call”†”asbuh1hhj¤ÆubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉÆh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¤Æubj`)�”}”(hŒrqid”h]”hŒrqid”…”�”}”(hjׯh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¤Æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¾Åubj)�”}”(hŒstruct ssam_event *event”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjðÆh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjìÆubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýÆh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjìÆubh)�”}”(hhh]”j`)�”}”(hŒ ssam_event”h]”hŒ ssam_event”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj Çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÇŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÆŒc.ssam_nf_call”†”asbuh1hhjìÆubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Çh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjìÆubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj:Çh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjìÆubj`)�”}”(hŒevent”h]”hŒevent”…”�”}”(hjGÇh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjìÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¾Åubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj…Åh²hh³j—Åh´M¾ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj�Åh²hh³j—Åh´M¾ubah}”(h]”j|Åah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j—Åh´M¾hj~Åh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ3Call notification callbacks for the provided event.”h]”hŒ3Call notification callbacks for the provided event.”…”�”}”(hjqÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¾hjnÇh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj~Åh²hh³j—Åh´M¾ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j‰Çj¯j‰Çj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hXq**Parameters** ``struct ssam_nf *nf`` The notifier system ``struct device *dev`` The associated device, only used for logging. ``u16 rqid`` The request ID of the event. ``struct ssam_event *event`` The event provided to the callbacks. **Description** Execute registered callbacks in order of their priority until either no callback is left or a callback returns a value with the ``SSAM_NOTIF_STOP`` bit set. Note that this bit is set automatically when converting non-zero error values via ssam_notifier_from_errno() to notifier values. Also note that any callback that could handle an event should return a value with bit ``SSAM_NOTIF_HANDLED`` set, indicating that the event does not go unhandled/ignored. In case no registered callback could handle an event, this function will emit a warning. In case a callback failed, this function will emit an error message.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÂhj�Çubj)�”}”(hhh]”(j)�”}”(hŒ+``struct ssam_nf *nf`` The notifier system ”h]”(j )�”}”(hŒ``struct ssam_nf *nf``”h]”j)�”}”(hj²Çh]”hŒstruct ssam_nf *nf”…”�”}”(hj´Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj°Çubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¿hj¬Çubj))�”}”(hhh]”hþ)�”}”(hŒThe notifier system”h]”hŒThe notifier system”…”�”}”(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&]”uh1jh³jÇÇh´M¿hj©Çubj)�”}”(hŒE``struct device *dev`` The associated device, only used for logging. ”h]”(j )�”}”(hŒ``struct device *dev``”h]”j)�”}”(hjëÇh]”hŒstruct device *dev”…”�”}”(hjíÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÀhjåÇubj))�”}”(hhh]”hþ)�”}”(hŒ-The associated device, only used for logging.”h]”hŒ-The associated device, only used for logging.”…”�”}”(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&]”uh1jh³jÈh´MÀhj©Çubj)�”}”(hŒ*``u16 rqid`` The request ID of the event. ”h]”(j )�”}”(hŒ ``u16 rqid``”h]”j)�”}”(hj$Èh]”hŒu16 rqid”…”�”}”(hj&Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"Èubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÁhjÈubj))�”}”(hhh]”hþ)�”}”(hŒThe request ID of the event.”h]”hŒThe request ID of the event.”…”�”}”(hj=Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j9Èh´MÁhj:Èubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j9Èh´MÁhj©Çubj)�”}”(hŒB``struct ssam_event *event`` The event provided to the callbacks. ”h]”(j )�”}”(hŒ``struct ssam_event *event``”h]”j)�”}”(hj]Èh]”hŒstruct ssam_event *event”…”�”}”(hj_Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[Èubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÂhjWÈubj))�”}”(hhh]”hþ)�”}”(hŒ$The event provided to the callbacks.”h]”hŒ$The event provided to the callbacks.”…”�”}”(hjvÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jrÈh´MÂhjsÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjWÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jrÈh´MÂhj©Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Ç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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÄhj�Çubhþ)�”}”(hXExecute registered callbacks in order of their priority until either no callback is left or a callback returns a value with the ``SSAM_NOTIF_STOP`` bit set. Note that this bit is set automatically when converting non-zero error values via ssam_notifier_from_errno() to notifier values.”h]”(hŒ€Execute registered callbacks in order of their priority until either no callback is left or a callback returns a value with the ”…”�”}”(hj®Èh²hh³Nh´Nubj)�”}”(hŒ``SSAM_NOTIF_STOP``”h]”hŒSSAM_NOTIF_STOP”…”�”}”(hj¶Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®ÈubhŒŠ bit set. Note that this bit is set automatically when converting non-zero error values via ssam_notifier_from_errno() to notifier values.”…”�”}”(hj®Èh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÃhj�Çubhþ)�”}”(hXAlso note that any callback that could handle an event should return a value with bit ``SSAM_NOTIF_HANDLED`` set, indicating that the event does not go unhandled/ignored. In case no registered callback could handle an event, this function will emit a warning.”h]”(hŒVAlso note that any callback that could handle an event should return a value with bit ”…”�”}”(hjÏÈh²hh³Nh´Nubj)�”}”(hŒ``SSAM_NOTIF_HANDLED``”h]”hŒSSAM_NOTIF_HANDLED”…”�”}”(hj×Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏÈubhŒ— set, indicating that the event does not go unhandled/ignored. In case no registered callback could handle an event, this function will emit a warning.”…”�”}”(hjÏÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÈhj�Çubhþ)�”}”(hŒDIn case a callback failed, this function will emit an error message.”h]”hŒDIn case a callback failed, this function will emit an error message.”…”�”}”(hjðÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÍhj�Çubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_nf_init (C function)”Œc.ssam_nf_init”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ%int ssam_nf_init (struct ssam_nf *nf)”h]”j1)�”}”(hŒ$int ssam_nf_init(struct ssam_nf *nf)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÉh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MíubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Éh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÉh²hh³j-Éh´MíubjZ)�”}”(hŒ ssam_nf_init”h]”j`)�”}”(hŒ ssam_nf_init”h]”hŒ ssam_nf_init”…”�”}”(hj@Éh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj<Éubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÉh²hh³j-Éh´Míubj)�”}”(hŒ(struct ssam_nf *nf)”h]”j)�”}”(hŒstruct ssam_nf *nf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj\Éh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjXÉubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÉh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjXÉubh)�”}”(hhh]”j`)�”}”(hŒssam_nf”h]”hŒssam_nf”…”�”}”(hjzÉh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjwÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j|ÉŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjBÉsbŒc.ssam_nf_init”†”asbuh1hhjXÉubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšÉh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjXÉubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj¨Éh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjXÉubj`)�”}”(hŒnf”h]”hŒnf”…”�”}”(hjµÉh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjXÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjTÉubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÉh²hh³j-Éh´Míubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÉh²hh³j-Éh´Míubah}”(h]”jÉah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j-Éh´MíhjÉh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒInitialize the notifier system.”h]”hŒInitialize the notifier system.”…”�”}”(hjßÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MíhjÜÉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÉh²hh³j-Éh´Míubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j÷Éj¯j÷Éj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒK**Parameters** ``struct ssam_nf *nf`` The notifier system to initialize.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MñhjûÉubj)�”}”(hhh]”j)�”}”(hŒ9``struct ssam_nf *nf`` The notifier system to initialize.”h]”(j )�”}”(hŒ``struct ssam_nf *nf``”h]”j)�”}”(hj Êh]”hŒstruct ssam_nf *nf”…”�”}”(hj"Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MóhjÊubj))�”}”(hhh]”hþ)�”}”(hŒ"The notifier system to initialize.”h]”hŒ"The notifier system to initialize.”…”�”}”(hj9Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mîhj6Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j5Êh´MóhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_nf_destroy (C function)”Œc.ssam_nf_destroy”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ)void ssam_nf_destroy (struct ssam_nf *nf)”h]”j1)�”}”(hŒ(void ssam_nf_destroy(struct ssam_nf *nf)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjzÊh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjvÊh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Êh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjvÊh²hh³jˆÊh´MubjZ)�”}”(hŒssam_nf_destroy”h]”j`)�”}”(hŒssam_nf_destroy”h]”hŒssam_nf_destroy”…”�”}”(hj›Êh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj—Êubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjvÊh²hh³jˆÊh´Mubj)�”}”(hŒ(struct ssam_nf *nf)”h]”j)�”}”(hŒstruct ssam_nf *nf”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj·Êh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj³ÊubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄÊh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj³Êubh)�”}”(hhh]”j`)�”}”(hŒssam_nf”h]”hŒssam_nf”…”�”}”(hjÕÊh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÒÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j×ÊŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj�ÊsbŒc.ssam_nf_destroy”†”asbuh1hhj³ÊubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõÊh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj³Êubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj³Êubj`)�”}”(hŒnf”h]”hŒnf”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj³Êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¯Êubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjvÊh²hh³jˆÊh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjrÊh²hh³jˆÊh´Mubah}”(h]”jmÊah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jˆÊh´MhjoÊh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ!Deinitialize the notifier system.”h]”hŒ!Deinitialize the notifier system.”…”�”}”(hj:Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mhj7Ëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjoÊh²hh³jˆÊh´Mubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jRËj¯jRËj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒM**Parameters** ``struct ssam_nf *nf`` The notifier system to deinitialize.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj\Ëh]”hŒ Parameters”…”�”}”(hj^Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjZËubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hjVËubj)�”}”(hhh]”j)�”}”(hŒ;``struct ssam_nf *nf`` The notifier system to deinitialize.”h]”(j )�”}”(hŒ``struct ssam_nf *nf``”h]”j)�”}”(hj{Ëh]”hŒstruct ssam_nf *nf”…”�”}”(hj}Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyËubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hjuËubj))�”}”(hhh]”hþ)�”}”(hŒ$The notifier system to deinitialize.”h]”hŒ$The notifier system to deinitialize.”…”�”}”(hj”Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mhj‘Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjuËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�Ëh´M hjrËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVËubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ'ssam_event_item_cache_init (C function)”Œc.ssam_event_item_cache_init”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ%int ssam_event_item_cache_init (void)”h]”j1)�”}”(hŒ$int ssam_event_item_cache_init(void)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjÕËh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÑËh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M,ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäËh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÑËh²hh³jãËh´M,ubjZ)�”}”(hŒssam_event_item_cache_init”h]”j`)�”}”(hŒssam_event_item_cache_init”h]”hŒssam_event_item_cache_init”…”�”}”(hjöËh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjòËubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÑËh²hh³jãËh´M,ubj)�”}”(hŒ(void)”h]”j)�”}”(hŒvoid”h]”já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÌubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj Ìubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÑËh²hh³jãËh´M,ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÍËh²hh³jãËh´M,ubah}”(h]”jÈËah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jãËh´M,hjÊËh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ Initialize the event item cache.”h]”hŒ Initialize the event item cache.”…”�”}”(hj<Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M,hj9Ìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÊËh²hh³jãËh´M,ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jTÌj¯jTÌj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒ'**Parameters** ``void`` no arguments”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M0hjXÌubj)�”}”(hhh]”j)�”}”(hŒ``void`` no arguments”h]”(j )�”}”(hŒ``void``”h]”j)�”}”(hj}Ìh]”hŒvoid”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M2hjwÌubj))�”}”(hhh]”hþ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj–Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Khj“Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjwÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j’Ìh´M2hjtÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXÌubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ*ssam_event_item_cache_destroy (C function)”Œc.ssam_event_item_cache_destroy”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ)void ssam_event_item_cache_destroy (void)”h]”j1)�”}”(hŒ(void ssam_event_item_cache_destroy(void)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj×Ìh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÓÌh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M>ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæÌh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÓÌh²hh³jåÌh´M>ubjZ)�”}”(hŒssam_event_item_cache_destroy”h]”j`)�”}”(hŒssam_event_item_cache_destroy”h]”hŒssam_event_item_cache_destroy”…”�”}”(hjøÌh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjôÌubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÓÌh²hh³jåÌh´M>ubj)�”}”(hŒ(void)”h]”j)�”}”(hŒvoid”h]”já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÍubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj Íubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÓÌh²hh³jåÌh´M>ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÏÌh²hh³jåÌh´M>ubah}”(h]”jÊÌah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jåÌh´M>hjÌÌh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ"Deinitialize the event item cache.”h]”hŒ"Deinitialize the event item cache.”…”�”}”(hj>Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M>hj;Íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÌÌh²hh³jåÌh´M>ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jVÍj¯jVÍj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒ'**Parameters** ``void`` no arguments”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj`Íh]”hŒ Parameters”…”�”}”(hjbÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj^Íubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MBhjZÍubj)�”}”(hhh]”j)�”}”(hŒ``void`` no arguments”h]”(j )�”}”(hŒ``void``”h]”j)�”}”(hjÍh]”hŒvoid”…”�”}”(hj�Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}Íubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MDhjyÍubj))�”}”(hhh]”hþ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj˜Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Khj•Íubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjyÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j”Íh´MDhjvÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZÍubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ!ssam_event_item_free (C function)”Œc.ssam_event_item_free”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ8void ssam_event_item_free (struct ssam_event_item *item)”h]”j1)�”}”(hŒ7void ssam_event_item_free(struct ssam_event_item *item)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÙÍh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÕÍh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MQubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèÍh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÕÍh²hh³jçÍh´MQubjZ)�”}”(hŒssam_event_item_free”h]”j`)�”}”(hŒssam_event_item_free”h]”hŒssam_event_item_free”…”�”}”(hjúÍh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjöÍubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÕÍh²hh³jçÍh´MQubj)�”}”(hŒ(struct ssam_event_item *item)”h]”j)�”}”(hŒstruct ssam_event_item *item”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÎubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Îh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÎubh)�”}”(hhh]”j`)�”}”(hŒssam_event_item”h]”hŒssam_event_item”…”�”}”(hj4Îh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj1Îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j6ÎŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjüÍsbŒc.ssam_event_item_free”†”asbuh1hhjÎubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTÎh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÎubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjbÎh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÎubj`)�”}”(hŒitem”h]”hŒitem”…”�”}”(hjoÎh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÎubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÕÍh²hh³jçÍh´MQubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÑÍh²hh³jçÍh´MQubah}”(h]”jÌÍah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jçÍh´MQhjÎÍh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒFree the provided event item.”h]”hŒFree the provided event item.”…”�”}”(hj™Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MQhj–Îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎÍh²hh³jçÍh´MQubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j±Îj¯j±Îj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒJ**Parameters** ``struct ssam_event_item *item`` The event item to free.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MUhjµÎubj)�”}”(hhh]”j)�”}”(hŒ8``struct ssam_event_item *item`` The event item to free.”h]”(j )�”}”(hŒ ``struct ssam_event_item *item``”h]”j)�”}”(hjÚÎh]”hŒstruct ssam_event_item *item”…”�”}”(hjÜÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MWhjÔÎubj))�”}”(hhh]”hþ)�”}”(hŒThe event item to free.”h]”hŒThe event item to free.”…”�”}”(hjóÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MRhjðÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÔÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jïÎh´MWhjÑÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµÎubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ"ssam_event_item_alloc (C function)”Œc.ssam_event_item_alloc”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒHstruct ssam_event_item * ssam_event_item_alloc (size_t len, gfp_t flags)”h]”j1)�”}”(hŒFstruct ssam_event_item *ssam_event_item_alloc(size_t len, gfp_t flags)”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj4Ïh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj0Ïh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M[ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBÏh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj0Ïh²hh³jAÏh´M[ubh)�”}”(hhh]”j`)�”}”(hŒssam_event_item”h]”hŒssam_event_item”…”�”}”(hjSÏh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjPÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jUÏŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssam_event_item_alloc”sbŒc.ssam_event_item_alloc”†”asbuh1hhj0Ïh²hh³jAÏh´M[ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtÏh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj0Ïh²hh³jAÏh´M[ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj‚Ïh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj0Ïh²hh³jAÏh´M[ubjZ)�”}”(hŒssam_event_item_alloc”h]”j`)�”}”(hjqÏh]”hŒssam_event_item_alloc”…”�”}”(hj“Ïh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj�Ïubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj0Ïh²hh³jAÏh´M[ubj)�”}”(hŒ(size_t len, gfp_t flags)”h]”(j)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj±Ïh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj®Ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j³ÏŒmodname”NŒ classname”Nj\j_)�”}”jb]”joÏŒc.ssam_event_item_alloc”†”asbuh1hhjªÏubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏÏh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjªÏubj`)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÝÏh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjªÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¦Ïubj)�”}”(hŒ gfp_t flags”h]”(h)�”}”(hhh]”j`)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjùÏh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjöÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jûÏŒmodname”NŒ classname”Nj\j_)�”}”jb]”joÏŒc.ssam_event_item_alloc”†”asbuh1hhjòÏubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjòÏubj`)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj%Ðh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjòÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¦Ïubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj0Ïh²hh³jAÏh´M[ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj,Ïh²hh³jAÏh´M[ubah}”(h]”j'Ïah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jAÏh´M[hj)Ïh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ3Allocate an event item with the given payload size.”h]”hŒ3Allocate an event item with the given payload size.”…”�”}”(hjOÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M[hjLÐh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj)Ïh²hh³jAÏh´M[ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jgÐj¯jgÐj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hXö**Parameters** ``size_t len`` The event payload length. ``gfp_t flags`` The flags used for allocation. **Description** Allocate an event item with the given payload size, preferring allocation from the event item cache if the payload is small enough (i.e. smaller than ``SSAM_EVENT_ITEM_CACHE_PAYLOAD_LEN``). Sets the item operations and payload length values. The item free callback (``ops.free``) should not be overwritten after this call. **Return** Returns the newly allocated event item.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjqÐh]”hŒ Parameters”…”�”}”(hjsÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjoÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M_hjkÐubj)�”}”(hhh]”(j)�”}”(hŒ)``size_t len`` The event payload length. ”h]”(j )�”}”(hŒ``size_t len``”h]”j)�”}”(hj�Ðh]”hŒ size_t len”…”�”}”(hj’Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M\hjŠÐubj))�”}”(hhh]”hþ)�”}”(hŒThe event payload length.”h]”hŒThe event payload length.”…”�”}”(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&]”uh1jh³j¥Ðh´M\hj‡Ðubj)�”}”(hŒ/``gfp_t flags`` The flags used for allocation. ”h]”(j )�”}”(hŒ``gfp_t flags``”h]”j)�”}”(hjÉÐh]”hŒ gfp_t flags”…”�”}”(hjËÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M]hjÃÐubj))�”}”(hhh]”hþ)�”}”(hŒThe flags used for allocation.”h]”hŒThe flags used for allocation.”…”�”}”(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&]”uh1jh³jÞÐh´M]hj‡Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjkÐ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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M_hjkÐubhþ)�”}”(hXBAllocate an event item with the given payload size, preferring allocation from the event item cache if the payload is small enough (i.e. smaller than ``SSAM_EVENT_ITEM_CACHE_PAYLOAD_LEN``). Sets the item operations and payload length values. The item free callback (``ops.free``) should not be overwritten after this call.”h]”(hŒ–Allocate an event item with the given payload size, preferring allocation from the event item cache if the payload is small enough (i.e. smaller than ”…”�”}”(hjÑh²hh³Nh´Nubj)�”}”(hŒ%``SSAM_EVENT_ITEM_CACHE_PAYLOAD_LEN``”h]”hŒ!SSAM_EVENT_ITEM_CACHE_PAYLOAD_LEN”…”�”}”(hj"Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑubhŒO). Sets the item operations and payload length values. The item free callback (”…”�”}”(hjÑh²hh³Nh´Nubj)�”}”(hŒ ``ops.free``”h]”hŒops.free”…”�”}”(hj4Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑubhŒ,) should not be overwritten after this call.”…”�”}”(hjÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M^hjkÐubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjOÑh]”hŒReturn”…”�”}”(hjQÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjMÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MdhjkÐubhþ)�”}”(hŒ'Returns the newly allocated event item.”h]”hŒ'Returns the newly allocated event item.”…”�”}”(hjeÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MehjkÐubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ"ssam_event_queue_push (C function)”Œc.ssam_event_queue_push”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒUvoid ssam_event_queue_push (struct ssam_event_queue *q, struct ssam_event_item *item)”h]”j1)�”}”(hŒTvoid ssam_event_queue_push(struct ssam_event_queue *q, struct ssam_event_item *item)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj”Ñh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj�Ñh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M€ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£Ñh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj�Ñh²hh³j¢Ñh´M€ubjZ)�”}”(hŒssam_event_queue_push”h]”j`)�”}”(hŒssam_event_queue_push”h]”hŒssam_event_queue_push”…”�”}”(hjµÑh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj±Ñubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj�Ñh²hh³j¢Ñh´M€ubj)�”}”(hŒ:(struct ssam_event_queue *q, struct ssam_event_item *item)”h]”(j)�”}”(hŒstruct ssam_event_queue *q”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÑÑh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÍÑubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞÑh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÍÑubh)�”}”(hhh]”j`)�”}”(hŒssam_event_queue”h]”hŒssam_event_queue”…”�”}”(hjïÑh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjìÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jñÑŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj·ÑsbŒc.ssam_event_queue_push”†”asbuh1hhjÍÑubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÍÑubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÍÑubj`)�”}”(hŒq”h]”hŒq”…”�”}”(hj*Òh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÍÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÉÑubj)�”}”(hŒstruct ssam_event_item *item”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjCÒh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj?ÒubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPÒh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj?Òubh)�”}”(hhh]”j`)�”}”(hŒssam_event_item”h]”hŒssam_event_item”…”�”}”(hjaÒh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj^Òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jcÒŒmodname”NŒ classname”Nj\j_)�”}”jb]”j ÒŒc.ssam_event_queue_push”†”asbuh1hhj?ÒubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj?Òubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj�Òh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj?Òubj`)�”}”(hŒitem”h]”hŒitem”…”�”}”(hjšÒh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj?Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÉÑubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj�Ñh²hh³j¢Ñh´M€ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjŒÑh²hh³j¢Ñh´M€ubah}”(h]”j‡Ñah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j¢Ñh´M€hj‰Ñh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ&Push an event item to the event queue.”h]”hŒ&Push an event item to the event queue.”…”�”}”(hjÄÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M€hjÁÒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj‰Ñh²hh³j¢Ñh´M€ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jÜÒj¯jÜÒj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒv**Parameters** ``struct ssam_event_queue *q`` The event queue. ``struct ssam_event_item *item`` The item to add.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M„hjàÒubj)�”}”(hhh]”(j)�”}”(hŒ0``struct ssam_event_queue *q`` The event queue. ”h]”(j )�”}”(hŒ``struct ssam_event_queue *q``”h]”j)�”}”(hjÓh]”hŒstruct ssam_event_queue *q”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M�hjÿÒubj))�”}”(hhh]”hþ)�”}”(hŒThe event queue.”h]”hŒThe event queue.”…”�”}”(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&]”uh1jh³jÓh´M�hjüÒubj)�”}”(hŒ1``struct ssam_event_item *item`` The item to add.”h]”(j )�”}”(hŒ ``struct ssam_event_item *item``”h]”j)�”}”(hj>Óh]”hŒstruct ssam_event_item *item”…”�”}”(hj@Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<Óubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mƒhj8Óubj))�”}”(hhh]”hþ)�”}”(hŒThe item to add.”h]”hŒThe item to add.”…”�”}”(hjWÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M‚hjTÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj8Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jSÓh´MƒhjüÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjàÒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ!ssam_event_queue_pop (C function)”Œc.ssam_event_queue_pop”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒJstruct ssam_event_item * ssam_event_queue_pop (struct ssam_event_queue *q)”h]”j1)�”}”(hŒHstruct ssam_event_item *ssam_event_queue_pop(struct ssam_event_queue *q)”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj˜Óh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj”Óh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M�ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Óh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj”Óh²hh³j¥Óh´M�ubh)�”}”(hhh]”j`)�”}”(hŒssam_event_item”h]”hŒssam_event_item”…”�”}”(hj·Óh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj´Óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¹ÓŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssam_event_queue_pop”sbŒc.ssam_event_queue_pop”†”asbuh1hhj”Óh²hh³j¥Óh´M�ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØÓh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj”Óh²hh³j¥Óh´M�ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjæÓh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj”Óh²hh³j¥Óh´M�ubjZ)�”}”(hŒssam_event_queue_pop”h]”j`)�”}”(hjÕÓh]”hŒssam_event_queue_pop”…”�”}”(hj÷Óh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjóÓubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj”Óh²hh³j¥Óh´M�ubj)�”}”(hŒ(struct ssam_event_queue *q)”h]”j)�”}”(hŒstruct ssam_event_queue *q”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÔubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÔubh)�”}”(hhh]”j`)�”}”(hŒssam_event_queue”h]”hŒssam_event_queue”…”�”}”(hj0Ôh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj-Ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j2ÔŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÓÓŒc.ssam_event_queue_pop”†”asbuh1hhjÔubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNÔh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÔubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj\Ôh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÔubj`)�”}”(hj,Òh]”hŒq”…”�”}”(hjiÔh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj Ôubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj”Óh²hh³j¥Óh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj�Óh²hh³j¥Óh´M�ubah}”(h]”j‹Óah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j¥Óh´M�hj�Óh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ-Pop the next event item from the event queue.”h]”hŒ-Pop the next event item from the event queue.”…”�”}”(hj’Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M�hj�Ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj�Óh²hh³j¥Óh´M�ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jªÔj¯jªÔj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒ¼**Parameters** ``struct ssam_event_queue *q`` The event queue. **Description** Returns and removes the next event item from the queue. Returns ``NULL`` If there is no event item left.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M‘hj®Ôubj)�”}”(hhh]”j)�”}”(hŒ0``struct ssam_event_queue *q`` The event queue. ”h]”(j )�”}”(hŒ``struct ssam_event_queue *q``”h]”j)�”}”(hjÓÔh]”hŒstruct ssam_event_queue *q”…”�”}”(hjÕÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MŽhjÍÔubj))�”}”(hhh]”hþ)�”}”(hŒThe event queue.”h]”hŒThe event queue.”…”�”}”(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&]”uh1jh³jèÔh´MŽhjÊÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®Ô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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M�hj®Ôubhþ)�”}”(hŒhReturns and removes the next event item from the queue. Returns ``NULL`` If there is no event item left.”h]”(hŒ@Returns and removes the next event item from the queue. Returns ”…”�”}”(hj$Õh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj,Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ÕubhŒ If there is no event item left.”…”�”}”(hj$Õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M�hj®Ôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ&ssam_event_queue_is_empty (C function)”Œc.ssam_event_queue_is_empty”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ;bool ssam_event_queue_is_empty (struct ssam_event_queue *q)”h]”j1)�”}”(hŒ:bool ssam_event_queue_is_empty(struct ssam_event_queue *q)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hjeÕh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjaÕh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¡ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsÕh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjaÕh²hh³jrÕh´M¡ubjZ)�”}”(hŒssam_event_queue_is_empty”h]”j`)�”}”(hŒssam_event_queue_is_empty”h]”hŒssam_event_queue_is_empty”…”�”}”(hj…Õh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj�Õubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjaÕh²hh³jrÕh´M¡ubj)�”}”(hŒ(struct ssam_event_queue *q)”h]”j)�”}”(hŒstruct ssam_event_queue *q”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj¡Õh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj�ÕubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Õh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj�Õubh)�”}”(hhh]”j`)�”}”(hŒssam_event_queue”h]”hŒssam_event_queue”…”�”}”(hj¿Õh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¼Õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÁÕŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj‡ÕsbŒc.ssam_event_queue_is_empty”†”asbuh1hhj�ÕubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßÕh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj�Õubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjíÕh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj�Õubj`)�”}”(hj,Òh]”hŒq”…”�”}”(hjúÕh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj�Õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj™Õubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjaÕh²hh³jrÕh´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj]Õh²hh³jrÕh´M¡ubah}”(h]”jXÕah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jrÕh´M¡hjZÕh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ"Check if the event queue is empty.”h]”hŒ"Check if the event queue is empty.”…”�”}”(hj#Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¡hj Öh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjZÕh²hh³jrÕh´M¡ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j;Öj¯j;Öj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒA**Parameters** ``struct ssam_event_queue *q`` The event queue.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjEÖh]”hŒ Parameters”…”�”}”(hjGÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjCÖubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¥hj?Öubj)�”}”(hhh]”j)�”}”(hŒ/``struct ssam_event_queue *q`` The event queue.”h]”(j )�”}”(hŒ``struct ssam_event_queue *q``”h]”j)�”}”(hjdÖh]”hŒstruct ssam_event_queue *q”…”�”}”(hjfÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M§hj^Öubj))�”}”(hhh]”hþ)�”}”(hŒThe event queue.”h]”hŒThe event queue.”…”�”}”(hj}Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¢hjzÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj^Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jyÖh´M§hj[Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?Öubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ&ssam_cplt_get_event_queue (C function)”Œc.ssam_cplt_get_event_queue”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ^struct ssam_event_queue * ssam_cplt_get_event_queue (struct ssam_cplt *cplt, u8 tid, u16 rqid)”h]”j1)�”}”(hŒ\struct ssam_event_queue *ssam_cplt_get_event_queue(struct ssam_cplt *cplt, u8 tid, u16 rqid)”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj¾Öh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjºÖh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M°ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌÖh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjºÖh²hh³jËÖh´M°ubh)�”}”(hhh]”j`)�”}”(hŒssam_event_queue”h]”hŒssam_event_queue”…”�”}”(hjÝÖh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÚÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jßÖŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssam_cplt_get_event_queue”sbŒc.ssam_cplt_get_event_queue”†”asbuh1hhjºÖh²hh³jËÖh´M°ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþÖh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjºÖh²hh³jËÖh´M°ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj ×h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjºÖh²hh³jËÖh´M°ubjZ)�”}”(hŒssam_cplt_get_event_queue”h]”j`)�”}”(hjûÖh]”hŒssam_cplt_get_event_queue”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj×ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjºÖh²hh³jËÖh´M°ubj)�”}”(hŒ*(struct ssam_cplt *cplt, u8 tid, u16 rqid)”h]”(j)�”}”(hŒstruct ssam_cplt *cplt”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj8×h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj4×ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE×h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj4×ubh)�”}”(hhh]”j`)�”}”(hŒ ssam_cplt”h]”hŒ ssam_cplt”…”�”}”(hjV×h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjS×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jX׌modname”NŒ classname”Nj\j_)�”}”jb]”jùÖŒc.ssam_cplt_get_event_queue”†”asbuh1hhj4×ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt×h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj4×ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj‚×h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj4×ubj`)�”}”(hŒcplt”h]”hŒcplt”…”�”}”(hj�×h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj4×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj0×ubj)�”}”(hŒu8 tid”h]”(h)�”}”(hhh]”j`)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj«×h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¨×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j­×Œmodname”NŒ classname”Nj\j_)�”}”jb]”jùÖŒc.ssam_cplt_get_event_queue”†”asbuh1hhj¤×ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ×h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¤×ubj`)�”}”(hŒtid”h]”hŒtid”…”�”}”(hj××h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¤×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj0×ubj)�”}”(hŒu16 rqid”h]”(h)�”}”(hhh]”j`)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjó×h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjð×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jõ׌modname”NŒ classname”Nj\j_)�”}”jb]”jùÖŒc.ssam_cplt_get_event_queue”†”asbuh1hhjì×ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjì×ubj`)�”}”(hŒrqid”h]”hŒrqid”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjì×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj0×ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjºÖh²hh³jËÖh´M°ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj¶Öh²hh³jËÖh´M°ubah}”(h]”j±Öah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jËÖh´M°hj³Öh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ-Get the event queue for the given parameters.”h]”hŒ-Get the event queue for the given parameters.”…”�”}”(hjIØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M°hjFØh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj³Öh²hh³jËÖh´M°ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jaØj¯jaØj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX**Parameters** ``struct ssam_cplt *cplt`` The completion system on which to look for the queue. ``u8 tid`` The target ID of the queue. ``u16 rqid`` The request ID representing the event ID for which to get the queue. **Return** Returns the event queue corresponding to the event type described by the given parameters. If the request ID does not represent an event, this function returns ``NULL``. If the target ID is not supported, this function will fall back to the default target ID (``tid = 1``).”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjkØh]”hŒ Parameters”…”�”}”(hjmØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjiØubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M´hjeØubj)�”}”(hhh]”(j)�”}”(hŒQ``struct ssam_cplt *cplt`` The completion system on which to look for the queue. ”h]”(j )�”}”(hŒ``struct ssam_cplt *cplt``”h]”j)�”}”(hjŠØh]”hŒstruct ssam_cplt *cplt”…”�”}”(hjŒØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆØubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M±hj„Øubj))�”}”(hhh]”hþ)�”}”(hŒ5The completion system on which to look for the queue.”h]”hŒ5The completion system on which to look for the queue.”…”�”}”(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&]”uh1jh³jŸØh´M±hj�Øubj)�”}”(hŒ'``u8 tid`` The target ID of the queue. ”h]”(j )�”}”(hŒ ``u8 tid``”h]”j)�”}”(hjÃØh]”hŒu8 tid”…”�”}”(hjÅØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁØubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M²hj½Øubj))�”}”(hhh]”hþ)�”}”(hŒThe target ID of the queue.”h]”hŒThe target ID of the queue.”…”�”}”(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&]”uh1jh³jØØh´M²hj�Øubj)�”}”(hŒR``u16 rqid`` The request ID representing the event ID for which to get the queue. ”h]”(j )�”}”(hŒ ``u16 rqid``”h]”j)�”}”(hjüØh]”hŒu16 rqid”…”�”}”(hjþØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúØubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M³hjöØubj))�”}”(hhh]”hþ)�”}”(hŒDThe request ID representing the event ID for which to get the queue.”h]”hŒDThe request ID representing the event ID for which to get the queue.”…”�”}”(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&]”uh1jh³jÙh´M³hj�Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjeØubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hj7Ùh]”hŒReturn”…”�”}”(hj9Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj5Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”•h´MµhjeØubhþ)�”}”(hXReturns the event queue corresponding to the event type described by the given parameters. If the request ID does not represent an event, this function returns ``NULL``. If the target ID is not supported, this function will fall back to the default target ID (``tid = 1``).”h]”(hŒ Returns the event queue corresponding to the event type described by the given parameters. If the request ID does not represent an event, this function returns ”…”�”}”(hjMÙh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjUÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjMÙubhŒ\. If the target ID is not supported, this function will fall back to the default target ID (”…”�”}”(hjMÙh²hh³Nh´Nubj)�”}”(hŒ ``tid = 1``”h]”hŒtid = 1”…”�”}”(hjgÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjMÙubhŒ).”…”�”}”(hjMÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MµhjeØubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_cplt_submit (C function)”Œc.ssam_cplt_submit”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒHbool ssam_cplt_submit (struct ssam_cplt *cplt, struct work_struct *work)”h]”j1)�”}”(hŒGbool ssam_cplt_submit(struct ssam_cplt *cplt, struct work_struct *work)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hj Ùh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjœÙh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÏubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Ùh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjœÙh²hh³j­Ùh´MÏubjZ)�”}”(hŒssam_cplt_submit”h]”j`)�”}”(hŒssam_cplt_submit”h]”hŒssam_cplt_submit”…”�”}”(hjÀÙh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¼Ùubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjœÙh²hh³j­Ùh´MÏubj)�”}”(hŒ2(struct ssam_cplt *cplt, struct work_struct *work)”h]”(j)�”}”(hŒstruct ssam_cplt *cplt”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÜÙh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjØÙubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéÙh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjØÙubh)�”}”(hhh]”j`)�”}”(hŒ ssam_cplt”h]”hŒ ssam_cplt”…”�”}”(hjúÙh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj÷Ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jüÙŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjÂÙsbŒc.ssam_cplt_submit”†”asbuh1hhjØÙubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjØÙubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj(Úh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjØÙubj`)�”}”(hŒcplt”h]”hŒcplt”…”�”}”(hj5Úh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjØÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÔÙubj)�”}”(hŒstruct work_struct *work”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjNÚh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjJÚubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Úh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjJÚubh)�”}”(hhh]”j`)�”}”(hŒ work_struct”h]”hŒ work_struct”…”�”}”(hjlÚh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjiÚubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jnÚŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÚŒc.ssam_cplt_submit”†”asbuh1hhjJÚubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠÚh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjJÚubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj˜Úh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjJÚubj`)�”}”(hŒwork”h]”hŒwork”…”�”}”(hj¥Úh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjJÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÔÙubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjœÙh²hh³j­Ùh´MÏubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj˜Ùh²hh³j­Ùh´MÏubah}”(h]”j“Ùah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j­Ùh´MÏhj•Ùh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ6Submit a work item to the completion system workqueue.”h]”hŒ6Submit a work item to the completion system workqueue.”…”�”}”(hjÏÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÏhjÌÚh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj•Ùh²hh³j­Ùh´MÏubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jçÚj¯jçÚj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒ|**Parameters** ``struct ssam_cplt *cplt`` The completion system. ``struct work_struct *work`` The work item to submit.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÓhjëÚubj)�”}”(hhh]”(j)�”}”(hŒ2``struct ssam_cplt *cplt`` The completion system. ”h]”(j )�”}”(hŒ``struct ssam_cplt *cplt``”h]”j)�”}”(hjÛh]”hŒstruct ssam_cplt *cplt”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÐhj Ûubj))�”}”(hhh]”hþ)�”}”(hŒThe completion system.”h]”hŒThe completion system.”…”�”}”(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&]”uh1jh³j%Ûh´MÐhjÛubj)�”}”(hŒ5``struct work_struct *work`` The work item to submit.”h]”(j )�”}”(hŒ``struct work_struct *work``”h]”j)�”}”(hjIÛh]”hŒstruct work_struct *work”…”�”}”(hjKÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÒhjCÛubj))�”}”(hhh]”hþ)�”}”(hŒThe work item to submit.”h]”hŒThe work item to submit.”…”�”}”(hjbÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÑhj_Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjCÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j^Ûh´MÒhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjëÚubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ#ssam_cplt_submit_event (C function)”Œc.ssam_cplt_submit_event”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒQint ssam_cplt_submit_event (struct ssam_cplt *cplt, struct ssam_event_item *item)”h]”j1)�”}”(hŒPint ssam_cplt_submit_event(struct ssam_cplt *cplt, struct ssam_event_item *item)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hj£Ûh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjŸÛh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÙubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Ûh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŸÛh²hh³j±Ûh´MÙubjZ)�”}”(hŒssam_cplt_submit_event”h]”j`)�”}”(hŒssam_cplt_submit_event”h]”hŒssam_cplt_submit_event”…”�”}”(hjÄÛh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÀÛubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjŸÛh²hh³j±Ûh´MÙubj)�”}”(hŒ6(struct ssam_cplt *cplt, struct ssam_event_item *item)”h]”(j)�”}”(hŒstruct ssam_cplt *cplt”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjàÛh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÜÛubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíÛh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÜÛubh)�”}”(hhh]”j`)�”}”(hŒ ssam_cplt”h]”hŒ ssam_cplt”…”�”}”(hjþÛh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjûÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÜŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjÆÛsbŒc.ssam_cplt_submit_event”†”asbuh1hhjÜÛubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÜÛubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj,Üh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÜÛubj`)�”}”(hŒcplt”h]”hŒcplt”…”�”}”(hj9Üh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÜÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjØÛubj)�”}”(hŒstruct ssam_event_item *item”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjRÜh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjNÜubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Üh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjNÜubh)�”}”(hhh]”j`)�”}”(hŒssam_event_item”h]”hŒssam_event_item”…”�”}”(hjpÜh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjmÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jrÜŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÜŒc.ssam_cplt_submit_event”†”asbuh1hhjNÜubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽÜh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjNÜubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjœÜh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjNÜubj`)�”}”(hŒitem”h]”hŒitem”…”�”}”(hj©Üh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjNÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjØÛubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjŸÛh²hh³j±Ûh´MÙubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj›Ûh²hh³j±Ûh´MÙubah}”(h]”j–Ûah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j±Ûh´MÙhj˜Ûh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ)Submit an event to the completion system.”h]”hŒ)Submit an event to the completion system.”…”�”}”(hjÓÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÙhjÐÜh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj˜Ûh²hh³j±Ûh´MÙubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jëÜj¯jëÜj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hXÏ**Parameters** ``struct ssam_cplt *cplt`` The completion system. ``struct ssam_event_item *item`` The event item to submit. **Description** Submits the event to the completion system by queuing it on the event item queue and queuing the respective event queue work item on the completion workqueue, which will eventually complete the event. **Return** Returns zero on success, ``-EINVAL`` if there is no event queue that can handle the given event item.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÝhjïÜubj)�”}”(hhh]”(j)�”}”(hŒ2``struct ssam_cplt *cplt`` The completion system. ”h]”(j )�”}”(hŒ``struct ssam_cplt *cplt``”h]”j)�”}”(hjÝh]”hŒstruct ssam_cplt *cplt”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÚhjÝubj))�”}”(hhh]”hþ)�”}”(hŒThe completion system.”h]”hŒThe completion system.”…”�”}”(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&]”uh1jh³j)Ýh´MÚhj Ýubj)�”}”(hŒ;``struct ssam_event_item *item`` The event item to submit. ”h]”(j )�”}”(hŒ ``struct ssam_event_item *item``”h]”j)�”}”(hjMÝh]”hŒstruct ssam_event_item *item”…”�”}”(hjOÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÛhjGÝubj))�”}”(hhh]”hþ)�”}”(hŒThe event item to submit.”h]”hŒThe event item to submit.”…”�”}”(hjfÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jbÝh´MÛhjcÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjGÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jbÝh´MÛhj Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjïÜ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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÝhjïÜubhþ)�”}”(hŒÈSubmits the event to the completion system by queuing it on the event item queue and queuing the respective event queue work item on the completion workqueue, which will eventually complete the event.”h]”hŒÈSubmits the event to the completion system by queuing it on the event item queue and queuing the respective event queue work item on the completion workqueue, which will eventually complete the event.”…”�”}”(hjžÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MàhjïÜubhþ)�”}”(hŒeReturns zero on success, ``-EINVAL`` if there is no event queue that can handle the given event item.”h]”(hŒReturns zero on success, ”…”�”}”(hjÅÝh²hh³Nh´Nubj)�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hjÍÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅÝubhŒA if there is no event queue that can handle the given event item.”…”�”}”(hjÅÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MáhjïÜubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_cplt_flush (C function)”Œc.ssam_cplt_flush”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ-void ssam_cplt_flush (struct ssam_cplt *cplt)”h]”j1)�”}”(hŒ,void ssam_cplt_flush(struct ssam_cplt *cplt)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÞh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MóubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÞh²hh³jÞh´MóubjZ)�”}”(hŒssam_cplt_flush”h]”j`)�”}”(hŒssam_cplt_flush”h]”hŒssam_cplt_flush”…”�”}”(hj'Þh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj#Þubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÞh²hh³jÞh´Móubj)�”}”(hŒ(struct ssam_cplt *cplt)”h]”j)�”}”(hŒstruct ssam_cplt *cplt”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjCÞh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj?ÞubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPÞh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj?Þubh)�”}”(hhh]”j`)�”}”(hŒ ssam_cplt”h]”hŒ ssam_cplt”…”�”}”(hjaÞh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj^Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jcÞŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj)ÞsbŒc.ssam_cplt_flush”†”asbuh1hhj?ÞubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Þh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj?Þubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj�Þh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj?Þubj`)�”}”(hŒcplt”h]”hŒcplt”…”�”}”(hjœÞh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj?Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj;Þubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÞh²hh³jÞh´Móubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjþÝh²hh³jÞh´Móubah}”(h]”jùÝah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÞh´MóhjûÝh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒFlush the completion system.”h]”hŒFlush the completion system.”…”�”}”(hjÆÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MóhjÃÞh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjûÝh²hh³jÞh´Móubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jÞÞj¯jÞÞj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hXÔ**Parameters** ``struct ssam_cplt *cplt`` The completion system. **Description** Flush the completion system by waiting until all currently submitted work items have been completed. **Note** This function does not guarantee that all events will have been handled once this call terminates. In case of a larger number of to-be-completed events, the event queue work function may re-schedule its work item, which this flush operation will ignore. This operation is only intended to, during normal operation prior to shutdown, try to complete most events and requests to get them out of the system while the system is still fully operational. It does not aim to provide any guarantee that all of them have been handled.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M÷hjâÞubj)�”}”(hhh]”j)�”}”(hŒ2``struct ssam_cplt *cplt`` The completion system. ”h]”(j )�”}”(hŒ``struct ssam_cplt *cplt``”h]”j)�”}”(hjßh]”hŒstruct ssam_cplt *cplt”…”�”}”(hj ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Môhjßubj))�”}”(hhh]”hþ)�”}”(hŒThe completion system.”h]”hŒThe completion system.”…”�”}”(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&]”uh1jh³jßh´MôhjþÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâÞubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hjBßh]”hŒ Description”…”�”}”(hjDßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj@ßubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MöhjâÞubhþ)�”}”(hŒdFlush the completion system by waiting until all currently submitted work items have been completed.”h]”hŒdFlush the completion system by waiting until all currently submitted work items have been completed.”…”�”}”(hjXßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MõhjâÞubhþ)�”}”(hŒ**Note**”h]”j¾)�”}”(hjißh]”hŒNote”…”�”}”(hjkßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjgßubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MøhjâÞubhþ)�”}”(hŒýThis function does not guarantee that all events will have been handled once this call terminates. In case of a larger number of to-be-completed events, the event queue work function may re-schedule its work item, which this flush operation will ignore.”h]”hŒýThis function does not guarantee that all events will have been handled once this call terminates. In case of a larger number of to-be-completed events, the event queue work function may re-schedule its work item, which this flush operation will ignore.”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MùhjâÞubhþ)�”}”(hXThis operation is only intended to, during normal operation prior to shutdown, try to complete most events and requests to get them out of the system while the system is still fully operational. It does not aim to provide any guarantee that all of them have been handled.”h]”hXThis operation is only intended to, during normal operation prior to shutdown, try to complete most events and requests to get them out of the system while the system is still fully operational. It does not aim to provide any guarantee that all of them have been handled.”…”�”}”(hjŽßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MþhjâÞubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ"ssam_event_queue_init (C function)”Œc.ssam_event_queue_init”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒQvoid ssam_event_queue_init (struct ssam_cplt *cplt, struct ssam_event_queue *evq)”h]”j1)�”}”(hŒPvoid ssam_event_queue_init(struct ssam_cplt *cplt, struct ssam_event_queue *evq)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj½ßh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj¹ßh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M#ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌßh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¹ßh²hh³jËßh´M#ubjZ)�”}”(hŒssam_event_queue_init”h]”j`)�”}”(hŒssam_event_queue_init”h]”hŒssam_event_queue_init”…”�”}”(hjÞßh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÚßubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¹ßh²hh³jËßh´M#ubj)�”}”(hŒ6(struct ssam_cplt *cplt, struct ssam_event_queue *evq)”h]”(j)�”}”(hŒstruct ssam_cplt *cplt”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjúßh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjößubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjößubh)�”}”(hhh]”j`)�”}”(hŒ ssam_cplt”h]”hŒ ssam_cplt”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jàŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjàßsbŒc.ssam_event_queue_init”†”asbuh1hhjößubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8àh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjößubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjFàh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjößubj`)�”}”(hŒcplt”h]”hŒcplt”…”�”}”(hjSàh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjößubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjòßubj)�”}”(hŒstruct ssam_event_queue *evq”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjlàh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjhàubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyàh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjhàubh)�”}”(hhh]”j`)�”}”(hŒssam_event_queue”h]”hŒssam_event_queue”…”�”}”(hjŠàh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj‡àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jŒàŒmodname”NŒ classname”Nj\j_)�”}”jb]”j4àŒc.ssam_event_queue_init”†”asbuh1hhjhàubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨àh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjhàubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj¶àh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjhàubj`)�”}”(hŒevq”h]”hŒevq”…”�”}”(hjÃàh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjhàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjòßubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj¹ßh²hh³jËßh´M#ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjµßh²hh³jËßh´M#ubah}”(h]”j°ßah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jËßh´M#hj²ßh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒInitialize an event queue.”h]”hŒInitialize an event queue.”…”�”}”(hjíàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M#hjêàh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj²ßh²hh³jËßh´M#ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jáj¯jáj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒ¡**Parameters** ``struct ssam_cplt *cplt`` The completion system on which the queue resides. ``struct ssam_event_queue *evq`` The event queue to initialize.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M'hj áubj)�”}”(hhh]”(j)�”}”(hŒM``struct ssam_cplt *cplt`` The completion system on which the queue resides. ”h]”(j )�”}”(hŒ``struct ssam_cplt *cplt``”h]”j)�”}”(hj.áh]”hŒstruct ssam_cplt *cplt”…”�”}”(hj0áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,áubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M$hj(áubj))�”}”(hhh]”hþ)�”}”(hŒ1The completion system on which the queue resides.”h]”hŒ1The completion system on which the queue resides.”…”�”}”(hjGáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jCáh´M$hjDáubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj(áubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jCáh´M$hj%áubj)�”}”(hŒ?``struct ssam_event_queue *evq`` The event queue to initialize.”h]”(j )�”}”(hŒ ``struct ssam_event_queue *evq``”h]”j)�”}”(hjgáh]”hŒstruct ssam_event_queue *evq”…”�”}”(hjiáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjeáubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M&hjaáubj))�”}”(hhh]”hþ)�”}”(hŒThe event queue to initialize.”h]”hŒThe event queue to initialize.”…”�”}”(hj€áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M%hj}áubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjaáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j|áh´M&hj%áubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_cplt_init (C function)”Œc.ssam_cplt_init”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ?int ssam_cplt_init (struct ssam_cplt *cplt, struct device *dev)”h]”j1)�”}”(hŒ>int ssam_cplt_init(struct ssam_cplt *cplt, 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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M1ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐáh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj½áh²hh³jÏáh´M1ubjZ)�”}”(hŒssam_cplt_init”h]”j`)�”}”(hŒssam_cplt_init”h]”hŒssam_cplt_init”…”�”}”(hjâáh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÞáubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj½áh²hh³jÏáh´M1ubj)�”}”(hŒ,(struct ssam_cplt *cplt, struct device *dev)”h]”(j)�”}”(hŒstruct ssam_cplt *cplt”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjþáh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjúáubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj âh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjúáubh)�”}”(hhh]”j`)�”}”(hŒ ssam_cplt”h]”hŒ ssam_cplt”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jâŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjäásbŒc.ssam_cplt_init”†”asbuh1hhjúáubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<âh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjúáubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjJâh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjúáubj`)�”}”(hŒcplt”h]”hŒcplt”…”�”}”(hjWâh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjúáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjöáubj)�”}”(hŒstruct device *dev”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjpâh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjlâubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}âh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjlâubh)�”}”(hhh]”j`)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjŽâh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj‹âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j�âŒmodname”NŒ classname”Nj\j_)�”}”jb]”j8âŒc.ssam_cplt_init”†”asbuh1hhjlâubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬âh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjlâubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjºâh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjlâubj`)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÇâh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjlâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjöáubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj½áh²hh³jÏáh´M1ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj¹áh²hh³jÏáh´M1ubah}”(h]”j´áah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÏáh´M1hj¶áh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒInitialize completion system.”h]”hŒInitialize completion system.”…”�”}”(hjñâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M1hjîâh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¶áh²hh³jÏáh´M1ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j ãj¯j ãj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒˆ**Parameters** ``struct ssam_cplt *cplt`` The completion system to initialize. ``struct device *dev`` The device used for logging.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M5hj ãubj)�”}”(hhh]”(j)�”}”(hŒ@``struct ssam_cplt *cplt`` The completion system to initialize. ”h]”(j )�”}”(hŒ``struct ssam_cplt *cplt``”h]”j)�”}”(hj2ãh]”hŒstruct ssam_cplt *cplt”…”�”}”(hj4ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M2hj,ãubj))�”}”(hhh]”hþ)�”}”(hŒ$The completion system to initialize.”h]”hŒ$The completion system to initialize.”…”�”}”(hjKãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jGãh´M2hjHãubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj,ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jGãh´M2hj)ãubj)�”}”(hŒ3``struct device *dev`` The device used for logging.”h]”(j )�”}”(hŒ``struct device *dev``”h]”j)�”}”(hjkãh]”hŒstruct device *dev”…”�”}”(hjmãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjiãubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M4hjeãubj))�”}”(hhh]”hþ)�”}”(hŒThe device used for logging.”h]”hŒThe device used for logging.”…”�”}”(hj„ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M3hj�ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjeãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j€ãh´M4hj)ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj ãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_cplt_destroy (C function)”Œc.ssam_cplt_destroy”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ/void ssam_cplt_destroy (struct ssam_cplt *cplt)”h]”j1)�”}”(hŒ.void ssam_cplt_destroy(struct ssam_cplt *cplt)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÅãh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÁãh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MOubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔãh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÁãh²hh³jÓãh´MOubjZ)�”}”(hŒssam_cplt_destroy”h]”j`)�”}”(hŒssam_cplt_destroy”h]”hŒssam_cplt_destroy”…”�”}”(hjæãh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjâãubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÁãh²hh³jÓãh´MOubj)�”}”(hŒ(struct ssam_cplt *cplt)”h]”j)�”}”(hŒstruct ssam_cplt *cplt”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjþãubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjþãubh)�”}”(hhh]”j`)�”}”(hŒ ssam_cplt”h]”hŒ ssam_cplt”…”�”}”(hj äh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j"äŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjèãsbŒc.ssam_cplt_destroy”†”asbuh1hhjþãubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@äh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjþãubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjNäh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjþãubj`)�”}”(hŒcplt”h]”hŒcplt”…”�”}”(hj[äh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjþãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjúãubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÁãh²hh³jÓãh´MOubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj½ãh²hh³jÓãh´MOubah}”(h]”j¸ãah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÓãh´MOhjºãh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ#Deinitialize the completion system.”h]”hŒ#Deinitialize the completion system.”…”�”}”(hj…äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MOhj‚äh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjºãh²hh³jÓãh´MOubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j�äj¯j�äj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒñ**Parameters** ``struct ssam_cplt *cplt`` The completion system to deinitialize. **Description** Deinitialize the given completion system and ensure that all pending, i.e. yet-to-be-completed, event items and requests have been handled.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MShj¡äubj)�”}”(hhh]”j)�”}”(hŒB``struct ssam_cplt *cplt`` The completion system to deinitialize. ”h]”(j )�”}”(hŒ``struct ssam_cplt *cplt``”h]”j)�”}”(hjÆäh]”hŒstruct ssam_cplt *cplt”…”�”}”(hjÈäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄäubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MPhjÀäubj))�”}”(hhh]”hþ)�”}”(hŒ&The completion system to deinitialize.”h]”hŒ&The completion system to deinitialize.”…”�”}”(hjßäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÛäh´MPhjÜäubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÀäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÛäh´MPhj½äubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡ä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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MRhj¡äubhþ)�”}”(hŒ‹Deinitialize the given completion system and ensure that all pending, i.e. yet-to-be-completed, event items and requests have been handled.”h]”hŒ‹Deinitialize the given completion system and ensure that all pending, i.e. yet-to-be-completed, event items and requests have been handled.”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MQhj¡äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ!ssam_controller_lock (C function)”Œc.ssam_controller_lock”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ5void ssam_controller_lock (struct ssam_controller *c)”h]”j1)�”}”(hŒ4void ssam_controller_lock(struct ssam_controller *c)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjFåh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjBåh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¿ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUåh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjBåh²hh³jTåh´M¿ubjZ)�”}”(hŒssam_controller_lock”h]”j`)�”}”(hŒssam_controller_lock”h]”hŒssam_controller_lock”…”�”}”(hjgåh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjcåubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjBåh²hh³jTåh´M¿ubj)�”}”(hŒ(struct ssam_controller *c)”h]”j)�”}”(hŒstruct ssam_controller *c”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjƒåh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjåubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�åh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjåubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj¡åh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjžåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j£åŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjiåsbŒc.ssam_controller_lock”†”asbuh1hhjåubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁåh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjåubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÏåh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjåubj`)�”}”(hj¨h]”hŒc”…”�”}”(hjÜåh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj{åubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjBåh²hh³jTåh´M¿ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj>åh²hh³jTåh´M¿ubah}”(h]”j9åah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jTåh´M¿hj;åh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ!Acquire the main controller lock.”h]”hŒ!Acquire the main controller lock.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¿hjæh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj;åh²hh³jTåh´M¿ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jæj¯jæj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX\**Parameters** ``struct ssam_controller *c`` The controller to lock. **Description** This lock must be held for any state transitions, including transition to suspend/resumed states and during shutdown. See ssam_controller_statelock() for more details on controller locking. See ssam_controller_unlock() for the corresponding unlock function.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÃhj!æubj)�”}”(hhh]”j)�”}”(hŒ6``struct ssam_controller *c`` The controller to lock. ”h]”(j )�”}”(hŒ``struct ssam_controller *c``”h]”j)�”}”(hjFæh]”hŒstruct ssam_controller *c”…”�”}”(hjHæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDæubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÀhj@æubj))�”}”(hhh]”hþ)�”}”(hŒThe controller to lock.”h]”hŒThe controller to lock.”…”�”}”(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&]”uh1jh³j[æh´MÀhj=æubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!æ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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÂhj!æubhþ)�”}”(hŒ½This lock must be held for any state transitions, including transition to suspend/resumed states and during shutdown. See ssam_controller_statelock() for more details on controller locking.”h]”hŒ½This lock must be held for any state transitions, including transition to suspend/resumed states and during shutdown. See ssam_controller_statelock() for more details on controller locking.”…”�”}”(hj—æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÁhj!æubhþ)�”}”(hŒCSee ssam_controller_unlock() for the corresponding unlock function.”h]”hŒCSee ssam_controller_unlock() for the corresponding unlock function.”…”�”}”(hj¦æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÅhj!æubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ0ssam_controller_caps_load_from_acpi (C function)”Œ%c.ssam_controller_caps_load_from_acpi”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ_int ssam_controller_caps_load_from_acpi (acpi_handle handle, struct ssam_controller_caps *caps)”h]”j1)�”}”(hŒ^int ssam_controller_caps_load_from_acpi(acpi_handle handle, struct ssam_controller_caps *caps)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjÕæh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÑæh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M@ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäæh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÑæh²hh³jãæh´M@ubjZ)�”}”(hŒ#ssam_controller_caps_load_from_acpi”h]”j`)�”}”(hŒ#ssam_controller_caps_load_from_acpi”h]”hŒ#ssam_controller_caps_load_from_acpi”…”�”}”(hjöæh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjòæubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÑæh²hh³jãæh´M@ubj)�”}”(hŒ7(acpi_handle handle, struct ssam_controller_caps *caps)”h]”(j)�”}”(hŒacpi_handle handle”h]”(h)�”}”(hhh]”j`)�”}”(hŒ acpi_handle”h]”hŒ acpi_handle”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jçŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjøæsbŒ%c.ssam_controller_caps_load_from_acpi”†”asbuh1hhjçubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5çh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjçubj`)�”}”(hŒhandle”h]”hŒhandle”…”�”}”(hjCçh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj çubj)�”}”(hŒ!struct ssam_controller_caps *caps”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj\çh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjXçubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiçh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjXçubh)�”}”(hhh]”j`)�”}”(hŒssam_controller_caps”h]”hŒssam_controller_caps”…”�”}”(hjzçh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjwçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j|çŒmodname”NŒ classname”Nj\j_)�”}”jb]”j1çŒ%c.ssam_controller_caps_load_from_acpi”†”asbuh1hhjXçubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜çh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjXçubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj¦çh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjXçubj`)�”}”(hŒcaps”h]”hŒcaps”…”�”}”(hj³çh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjXçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj çubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÑæh²hh³jãæh´M@ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÍæh²hh³jãæh´M@ubah}”(h]”jÈæah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jãæh´M@hjÊæh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ,Load controller capabilities from ACPI _DSM.”h]”hŒ,Load controller capabilities from ACPI _DSM.”…”�”}”(hjÝçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M@hjÚçh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÊæh²hh³jãæh´M@ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jõçj¯jõçj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX®**Parameters** ``acpi_handle handle`` The handle of the ACPI controller/SSH device. ``struct ssam_controller_caps *caps`` Where to store the capabilities in. **Description** Initializes the given controller capabilities with default values, then checks and, if the respective _DSM functions are available, loads the actual capabilities from the _DSM. **Return** Returns zero on success, 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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MDhjùçubj)�”}”(hhh]”(j)�”}”(hŒE``acpi_handle handle`` The handle of the ACPI controller/SSH device. ”h]”(j )�”}”(hŒ``acpi_handle handle``”h]”j)�”}”(hjèh]”hŒacpi_handle handle”…”�”}”(hj èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MBhjèubj))�”}”(hhh]”hþ)�”}”(hŒ-The handle of the ACPI controller/SSH device.”h]”hŒ-The handle of the ACPI controller/SSH device.”…”�”}”(hj7èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j3èh´MBhj4èubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j3èh´MBhjèubj)�”}”(hŒJ``struct ssam_controller_caps *caps`` Where to store the capabilities in. ”h]”(j )�”}”(hŒ%``struct ssam_controller_caps *caps``”h]”j)�”}”(hjWèh]”hŒ!struct ssam_controller_caps *caps”…”�”}”(hjYèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUèubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MChjQèubj))�”}”(hhh]”hþ)�”}”(hŒ#Where to store the capabilities in.”h]”hŒ#Where to store the capabilities in.”…”�”}”(hjpèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jlèh´MChjmèubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjQèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jlèh´MChjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjùç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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MEhjùçubhþ)�”}”(hŒ°Initializes the given controller capabilities with default values, then checks and, if the respective _DSM functions are available, loads the actual capabilities from the _DSM.”h]”hŒ°Initializes the given controller capabilities with default values, then checks and, if the respective _DSM functions are available, loads the actual capabilities from the _DSM.”…”�”}”(hj¨èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MDhjùç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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MHhjùçubhþ)�”}”(hŒ:Returns zero on success, a negative error code on failure.”h]”hŒ:Returns zero on success, a negative error code on failure.”…”�”}”(hjÏèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MIhjùçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ.ssam_controller_caps_load_from_of (C function)”Œ#c.ssam_controller_caps_load_from_of”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ]int ssam_controller_caps_load_from_of (struct device *dev, struct ssam_controller_caps *caps)”h]”j1)�”}”(hŒ\int ssam_controller_caps_load_from_of(struct device *dev, struct ssam_controller_caps *caps)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjþèh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjúèh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MzubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj éh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjúèh²hh³j éh´MzubjZ)�”}”(hŒ!ssam_controller_caps_load_from_of”h]”j`)�”}”(hŒ!ssam_controller_caps_load_from_of”h]”hŒ!ssam_controller_caps_load_from_of”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjéubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjúèh²hh³j éh´Mzubj)�”}”(hŒ7(struct device *dev, struct ssam_controller_caps *caps)”h]”(j)�”}”(hŒstruct device *dev”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj;éh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj7éubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHéh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj7éubh)�”}”(hhh]”j`)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjYéh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjVéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j[éŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj!ésbŒ#c.ssam_controller_caps_load_from_of”†”asbuh1hhj7éubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyéh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj7éubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj‡éh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj7éubj`)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj”éh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj7éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj3éubj)�”}”(hŒ!struct ssam_controller_caps *caps”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj­éh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj©éubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºéh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj©éubh)�”}”(hhh]”j`)�”}”(hŒssam_controller_caps”h]”hŒssam_controller_caps”…”�”}”(hjËéh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÈéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÍéŒmodname”NŒ classname”Nj\j_)�”}”jb]”juéŒ#c.ssam_controller_caps_load_from_of”†”asbuh1hhj©éubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjééh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj©éubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj÷éh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj©éubj`)�”}”(hŒcaps”h]”hŒcaps”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj©éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj3éubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjúèh²hh³j éh´Mzubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjöèh²hh³j éh´Mzubah}”(h]”jñèah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j éh´Mzhjóèh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ(Load controller capabilities from OF/DT.”h]”hŒ(Load controller capabilities from OF/DT.”…”�”}”(hj.êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mzhj+êh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjóèh²hh³j éh´Mzubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jFêj¯jFêj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒà**Parameters** ``struct device *dev`` A pointer to the controller device ``struct ssam_controller_caps *caps`` Where to store the capabilities in. **Return** Returns zero on success, a negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjPêh]”hŒ Parameters”…”�”}”(hjRêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjNêubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M~hjJêubj)�”}”(hhh]”(j)�”}”(hŒ:``struct device *dev`` A pointer to the controller device ”h]”(j )�”}”(hŒ``struct device *dev``”h]”j)�”}”(hjoêh]”hŒstruct device *dev”…”�”}”(hjqêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmêubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M{hjiêubj))�”}”(hhh]”hþ)�”}”(hŒ"A pointer to the controller device”h]”hŒ"A pointer to the controller device”…”�”}”(hjˆêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j„êh´M{hj…êubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjiêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j„êh´M{hjfêubj)�”}”(hŒJ``struct ssam_controller_caps *caps`` Where to store the capabilities in. ”h]”(j )�”}”(hŒ%``struct ssam_controller_caps *caps``”h]”j)�”}”(hj¨êh]”hŒ!struct ssam_controller_caps *caps”…”�”}”(hjªêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦êubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M|hj¢êubj))�”}”(hhh]”hþ)�”}”(hŒ#Where to store the capabilities in.”h]”hŒ#Where to store the capabilities in.”…”�”}”(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&]”uh1jh³j½êh´M|hjfêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjJê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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M~hjJêubhþ)�”}”(hŒ:Returns zero on success, a negative error code on failure.”h]”hŒ:Returns zero on success, a negative error code on failure.”…”�”}”(hjùêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M~hjJêubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ&ssam_controller_caps_load (C function)”Œc.ssam_controller_caps_load”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒUint ssam_controller_caps_load (struct device *dev, struct ssam_controller_caps *caps)”h]”j1)�”}”(hŒTint ssam_controller_caps_load(struct device *dev, struct ssam_controller_caps *caps)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hj(ëh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj$ëh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M�ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7ëh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj$ëh²hh³j6ëh´M�ubjZ)�”}”(hŒssam_controller_caps_load”h]”j`)�”}”(hŒssam_controller_caps_load”h]”hŒssam_controller_caps_load”…”�”}”(hjIëh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjEëubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj$ëh²hh³j6ëh´M�ubj)�”}”(hŒ7(struct device *dev, struct ssam_controller_caps *caps)”h]”(j)�”}”(hŒstruct device *dev”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjeëh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjaëubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrëh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjaëubh)�”}”(hhh]”j`)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjƒëh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj€ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j…ëŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjKësbŒc.ssam_controller_caps_load”†”asbuh1hhjaëubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£ëh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjaëubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj±ëh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjaëubj`)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¾ëh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjaëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj]ëubj)�”}”(hŒ!struct ssam_controller_caps *caps”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj×ëh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÓëubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäëh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÓëubh)�”}”(hhh]”j`)�”}”(hŒssam_controller_caps”h]”hŒssam_controller_caps”…”�”}”(hjõëh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjòëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j÷ëŒmodname”NŒ classname”Nj\j_)�”}”jb]”jŸëŒc.ssam_controller_caps_load”†”asbuh1hhjÓëubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÓëubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj!ìh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÓëubj`)�”}”(hŒcaps”h]”hŒcaps”…”�”}”(hj.ìh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÓëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj]ëubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj$ëh²hh³j6ëh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj ëh²hh³j6ëh´M�ubah}”(h]”jëah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j6ëh´M�hjëh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒLoad controller capabilities”h]”hŒLoad controller capabilities”…”�”}”(hjXìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M�hjUìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjëh²hh³j6ëh´M�ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jpìj¯jpìj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒà**Parameters** ``struct device *dev`` A pointer to the controller device ``struct ssam_controller_caps *caps`` Where to store the capabilities in. **Return** Returns zero on success, a negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjzìh]”hŒ Parameters”…”�”}”(hj|ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjxìubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M”hjtìubj)�”}”(hhh]”(j)�”}”(hŒ:``struct device *dev`` A pointer to the controller device ”h]”(j )�”}”(hŒ``struct device *dev``”h]”j)�”}”(hj™ìh]”hŒstruct device *dev”…”�”}”(hj›ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj—ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M‘hj“ìubj))�”}”(hhh]”hþ)�”}”(hŒ"A pointer to the controller device”h]”hŒ"A pointer to the controller 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&]”uh1jh³j®ìh´M‘hj�ìubj)�”}”(hŒJ``struct ssam_controller_caps *caps`` Where to store the capabilities in. ”h]”(j )�”}”(hŒ%``struct ssam_controller_caps *caps``”h]”j)�”}”(hjÒìh]”hŒ!struct ssam_controller_caps *caps”…”�”}”(hjÔìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐìubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M’hjÌìubj))�”}”(hhh]”hþ)�”}”(hŒ#Where to store the capabilities in.”h]”hŒ#Where to store the capabilities in.”…”�”}”(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&]”uh1jh³jçìh´M’hj�ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjtì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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M”hjtìubhþ)�”}”(hŒ:Returns zero on success, a negative error code on failure.”h]”hŒ:Returns zero on success, a negative error code on failure.”…”�”}”(hj#íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M”hjtìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ!ssam_controller_init (C function)”Œc.ssam_controller_init”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒUint ssam_controller_init (struct ssam_controller *ctrl, struct serdev_device *serdev)”h]”j1)�”}”(hŒTint ssam_controller_init(struct ssam_controller *ctrl, struct serdev_device *serdev)”•h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjRíh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjNíh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¨ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaíh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjNíh²hh³j`íh´M¨ubjZ)�”}”(hŒssam_controller_init”h]”j`)�”}”(hŒssam_controller_init”h]”hŒssam_controller_init”…”�”}”(hjsíh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjoíubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjNíh²hh³j`íh´M¨ubj)�”}”(hŒ<(struct ssam_controller *ctrl, struct serdev_device *serdev)”h]”(j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj�íh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj‹íubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœíh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj‹íubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj­íh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjªíubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¯íŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjuísbŒc.ssam_controller_init”†”asbuh1hhj‹íubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍíh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj‹íubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÛíh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj‹íubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjèíh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj‹íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‡íubj)�”}”(hŒstruct serdev_device *serdev”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjýíubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjýíubh)�”}”(hhh]”j`)�”}”(hŒ serdev_device”h]”hŒ serdev_device”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j!îŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÉíŒc.ssam_controller_init”†”asbuh1hhjýíubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=îh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjýíubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjKîh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjýíubj`)�”}”(hŒserdev”h]”hŒserdev”…”�”}”(hjXîh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjýíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‡íubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjNíh²hh³j`íh´M¨ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjJíh²hh³j`íh´M¨ubah}”(h]”jEíah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j`íh´M¨hjGíh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒInitialize SSAM controller.”h]”hŒInitialize SSAM controller.”…”�”}”(hj‚îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¨hjîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjGíh²hh³j`íh´M¨ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jšîj¯jšîj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hXÅ**Parameters** ``struct ssam_controller *ctrl`` The controller to initialize. ``struct serdev_device *serdev`` The serial device representing the underlying data transport. **Description** Initializes the given controller. Does neither start receiver nor transmitter threads. After this call, the controller has to be hooked up to the serdev core separately via :c:type:`struct serdev_device_ops `, relaying calls to ssam_controller_receive_buf() and ssam_controller_write_wakeup(). Once the controller has been hooked up, transmitter and receiver threads may be started via ssam_controller_start(). These setup steps need to be completed before controller can be used for requests.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¬hjžîubj)�”}”(hhh]”(j)�”}”(hŒ?``struct ssam_controller *ctrl`` The controller to initialize. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjÃîh]”hŒstruct ssam_controller *ctrl”…”�”}”(hjÅîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁîubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M©hj½îubj))�”}”(hhh]”hþ)�”}”(hŒThe controller to initialize.”h]”hŒThe controller to initialize.”…”�”}”(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&]”uh1jh³jØîh´M©hjºîubj)�”}”(hŒ_``struct serdev_device *serdev`` The serial device representing the underlying data transport. ”h]”(j )�”}”(hŒ ``struct serdev_device *serdev``”h]”j)�”}”(hjüîh]”hŒstruct serdev_device *serdev”…”�”}”(hjþîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúîubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mªhjöîubj))�”}”(hhh]”hþ)�”}”(hŒ=The serial device representing the underlying data transport.”h]”hŒ=The serial device representing the underlying data transport.”…”�”}”(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&]”uh1jh³jïh´Mªhjºîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjžîubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hj7ïh]”hŒ Description”…”�”}”(hj9ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj5ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¬hjžîubhþ)�”}”(hXInitializes the given controller. Does neither start receiver nor transmitter threads. After this call, the controller has to be hooked up to the serdev core separately via :c:type:`struct serdev_device_ops `, relaying calls to ssam_controller_receive_buf() and ssam_controller_write_wakeup(). Once the controller has been hooked up, transmitter and receiver threads may be started via ssam_controller_start(). These setup steps need to be completed before controller can be used for requests.”h]”(hŒ­Initializes the given controller. Does neither start receiver nor transmitter threads. After this call, the controller has to be hooked up to the serdev core separately via ”…”�”}”(hjMïh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct serdev_device_ops `”h]”j)�”}”(hjWïh]”hŒstruct serdev_device_ops”…”�”}”(hjYïh²hh³Nh´Nubah}”(h]”h ]”(jU:j¨Œc-type”eh"]”h$]”h&]”uh1jhjUïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”ja:Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j\jwwjn:Œserdev_device_ops”uh1hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M«hjMïubhX, relaying calls to ssam_controller_receive_buf() and ssam_controller_write_wakeup(). Once the controller has been hooked up, transmitter and receiver threads may be started via ssam_controller_start(). These setup steps need to be completed before controller can be used for requests.”…”�”}”(hjMïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jtïh´M«hjžîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ"ssam_controller_start (C function)”Œc.ssam_controller_start”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ8int ssam_controller_start (struct ssam_controller *ctrl)”h]”j1)�”}”(hŒ7int ssam_controller_start(struct ssam_controller *ctrl)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸïh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj›ïh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MæubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®ïh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj›ïh²hh³j­ïh´MæubjZ)�”}”(hŒssam_controller_start”h]”j`)�”}”(hŒssam_controller_start”h]”hŒssam_controller_start”…”�”}”(hjÀïh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¼ïubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj›ïh²hh³j­ïh´Mæubj)�”}”(hŒ(struct ssam_controller *ctrl)”h]”j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÜïh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjØïubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéïh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjØïubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjúïh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj÷ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jüïŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjÂïsbŒc.ssam_controller_start”†”asbuh1hhjØïubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjØïubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj(ðh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjØïubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj5ðh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjØïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÔïubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj›ïh²hh³j­ïh´Mæubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj—ïh²hh³j­ïh´Mæubah}”(h]”j’ïah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j­ïh´Mæhj”ïh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ=Start the receiver and transmitter threads of the controller.”h]”hŒ=Start the receiver and transmitter threads of the controller.”…”�”}”(hj_ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mæhj\ðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj”ïh²hh³j­ïh´Mæubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jwðj¯jwðj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX§**Parameters** ``struct ssam_controller *ctrl`` The controller. **Note** When this function is called, the controller should be properly hooked up to the serdev core via :c:type:`struct serdev_device_ops `. Please refer to ssam_controller_init() for more details on controller initialization. This function must be called with the main controller lock held (i.e. by calling ssam_controller_lock()).”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mêhj{ðubj)�”}”(hhh]”j)�”}”(hŒ1``struct ssam_controller *ctrl`` The controller. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hj ðh]”hŒstruct ssam_controller *ctrl”…”�”}”(hj¢ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžðubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mèhjšðubj))�”}”(hhh]”hþ)�”}”(hŒThe controller.”h]”hŒThe controller.”…”�”}”(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&]”uh1jh³jµðh´Mèhj—ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{ðubhþ)�”}”(hŒ**Note**”h]”j¾)�”}”(hjÛðh]”hŒNote”…”�”}”(hjÝðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÙðubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mêhj{ðubhþ)�”}”(hŒîWhen this function is called, the controller should be properly hooked up to the serdev core via :c:type:`struct serdev_device_ops `. Please refer to ssam_controller_init() for more details on controller initialization.”h]”(hŒaWhen this function is called, the controller should be properly hooked up to the serdev core via ”…”�”}”(hjñðh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct serdev_device_ops `”h]”j)�”}”(hjûðh]”hŒstruct serdev_device_ops”…”�”}”(hjýðh²hh³Nh´Nubah}”(h]”h ]”(jU:j¨Œc-type”eh"]”h$]”h&]”uh1jhjùðubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”ja:Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j\jwwjn:Œserdev_device_ops”uh1hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MêhjñðubhŒW. Please refer to ssam_controller_init() for more details on controller initialization.”…”�”}”(hjñðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jñh´Mêhj{ðubhþ)�”}”(hŒiThis function must be called with the main controller lock held (i.e. by calling ssam_controller_lock()).”h]”hŒiThis function must be called with the main controller lock held (i.e. by calling ssam_controller_lock()).”…”�”}”(hj#ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mîhj{ðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ%ssam_controller_shutdown (C function)”Œc.ssam_controller_shutdown”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ``flags`` Flags determining how notifications are being sent. ”h]”(j )�”}”(hŒ ``flags``”h]”j)�”}”(hjùh]”hŒflags”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MDhjùubj))�”}”(hhh]”hþ)�”}”(hŒ3Flags determining how notifications are being sent.”h]”hŒ3Flags determining how notifications are being sent.”…”�”}”(hj'ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j#ùh´MDhj$ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j#ùh´MDhjËøubj)�”}”(hŒH``request_id`` The request ID that is used to send these notifications. ”h]”(j )�”}”(hŒ``request_id``”h]”j)�”}”(hjGùh]”hŒ request_id”…”�”}”(hjIùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEùubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MEhjAùubj))�”}”(hhh]”hþ)�”}”(hŒ8The request ID that is used to send these notifications.”h]”hŒ8The request ID that is used to send these notifications.”…”�”}”(hj`ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j\ùh´MEhj]ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjAùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j\ùh´MEhjËøubj)�”}”(hŒm``instance_id`` The specific instance in the given target category for which notifications should be enabled.”h]”(j )�”}”(hŒ``instance_id``”h]”j)�”}”(hj€ùh]”hŒ instance_id”…”�”}”(hj‚ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MFhjzùubj))�”}”(hhh]”hþ)�”}”(hŒ]The specific instance in the given target category for which notifications should be enabled.”h]”hŒ]The specific instance in the given target category for which notifications should be enabled.”…”�”}”(hj™ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j•ùh´MFhj–ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjzùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j•ùh´MFhjËøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒøubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ"ssam_ssh_event_enable (C function)”Œc.ssam_ssh_event_enable”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ{int ssam_ssh_event_enable (struct ssam_controller *ctrl, struct ssam_event_registry reg, struct ssam_event_id id, u8 flags)”h]”j1)�”}”(hŒzint ssam_ssh_event_enable(struct ssam_controller *ctrl, struct ssam_event_registry reg, struct ssam_event_id id, u8 flags)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjÙùh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÕùh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MyubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèùh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÕùh²hh³jçùh´MyubjZ)�”}”(hŒssam_ssh_event_enable”h]”j`)�”}”(hŒssam_ssh_event_enable”h]”hŒssam_ssh_event_enable”…”�”}”(hjúùh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjöùubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÕùh²hh³jçùh´Myubj)�”}”(hŒa(struct ssam_controller *ctrl, struct ssam_event_registry reg, struct ssam_event_id id, u8 flags)”h]”(j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjúubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#úh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjúubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj4úh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj1úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j6úŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjüùsbŒc.ssam_ssh_event_enable”†”asbuh1hhjúubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTúh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjúubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjbúh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjúubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjoúh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjúubj)�”}”(hŒstruct ssam_event_registry reg”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjˆúh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj„úubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•úh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj„úubh)�”}”(hhh]”j`)�”}”(hŒssam_event_registry”h]”hŒssam_event_registry”…”�”}”(hj¦úh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj£úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¨úŒmodname”NŒ classname”Nj\j_)�”}”jb]”jPúŒc.ssam_ssh_event_enable”†”asbuh1hhj„úubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄúh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj„úubj`)�”}”(hŒreg”h]”hŒreg”…”�”}”(hjÒúh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj„úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjúubj)�”}”(hŒstruct ssam_event_id id”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjëúh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjçúubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøúh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjçúubh)�”}”(hhh]”j`)�”}”(hŒ ssam_event_id”h]”hŒ ssam_event_id”…”�”}”(hj ûh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j ûŒmodname”NŒ classname”Nj\j_)�”}”jb]”jPúŒc.ssam_ssh_event_enable”†”asbuh1hhjçúubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'ûh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjçúubj`)�”}”(hŒid”h]”hŒid”…”�”}”(hj5ûh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjçúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjúubj)�”}”(hŒu8 flags”h]”(h)�”}”(hhh]”j`)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjQûh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjNûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jSûŒmodname”NŒ classname”Nj\j_)�”}”jb]”jPúŒc.ssam_ssh_event_enable”†”asbuh1hhjJûubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoûh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjJûubj`)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj}ûh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjJûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjúubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÕùh²hh³jçùh´Myubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÑùh²hh³jçùh´Myubah}”(h]”jÌùah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jçùh´MyhjÎùh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒEnable SSH event.”h]”hŒEnable SSH event.”…”�”}”(hj§ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Myhj¤ûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎùh²hh³jçùh´Myubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j¿ûj¯j¿ûj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hXß**Parameters** ``struct ssam_controller *ctrl`` The controller for which to enable the event. ``struct ssam_event_registry reg`` The event registry describing what request to use for enabling and disabling the event. ``struct ssam_event_id id`` The event identifier. ``u8 flags`` The event flags. **Description** Enables the specified event on the EC. This function does not manage reference counting of enabled events and is basically only a wrapper for the raw EC request. If the specified event is already enabled, the EC will ignore this request. **Return** Returns the status of the executed SAM request (zero on success and negative on direct failure) or ``-EPROTO`` if the request response indicates a 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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M}hjÃûubj)�”}”(hhh]”(j)�”}”(hŒO``struct ssam_controller *ctrl`` The controller for which to enable the event. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjèûh]”hŒstruct ssam_controller *ctrl”…”�”}”(hjêûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæûubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mzhjâûubj))�”}”(hhh]”hþ)�”}”(hŒ-The controller for which to enable the event.”h]”hŒ-The controller for which to enable the event.”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jýûh´Mzhjþûubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjâûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jýûh´Mzhjßûubj)�”}”(hŒ{``struct ssam_event_registry reg`` The event registry describing what request to use for enabling and disabling the event. ”h]”(j )�”}”(hŒ"``struct ssam_event_registry reg``”h]”j)�”}”(hj!üh]”hŒstruct ssam_event_registry reg”…”�”}”(hj#üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M|hjüubj))�”}”(hhh]”hþ)�”}”(hŒWThe event registry describing what request to use for enabling and disabling the event.”h]”hŒWThe event registry describing what request to use for enabling and disabling the event.”…”�”}”(hj:üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M{hj7üubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j6üh´M|hjßûubj)�”}”(hŒ2``struct ssam_event_id id`` The event identifier. ”h]”(j )�”}”(hŒ``struct ssam_event_id id``”h]”j)�”}”(hj[üh]”hŒstruct ssam_event_id id”…”�”}”(hj]üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjYüubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M}hjUüubj))�”}”(hhh]”hþ)�”}”(hŒThe event identifier.”h]”hŒThe event identifier.”…”�”}”(hjtüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jpüh´M}hjqüubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjUüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jpüh´M}hjßûubj)�”}”(hŒ``u8 flags`` The event flags. ”h]”(j )�”}”(hŒ ``u8 flags``”h]”j)�”}”(hj”üh]”hŒu8 flags”…”�”}”(hj–üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’üubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M~hjŽüubj))�”}”(hhh]”hþ)�”}”(hŒThe event flags.”h]”hŒThe event flags.”…”�”}”(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&]”uh1jh³j©üh´M~hjßûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÃû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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M€hjÃûubhþ)�”}”(hŒíEnables the specified event on the EC. This function does not manage reference counting of enabled events and is basically only a wrapper for the raw EC request. If the specified event is already enabled, the EC will ignore this request.”h]”hŒíEnables the specified event on the EC. This function does not manage reference counting of enabled events and is basically only a wrapper for the raw EC request. If the specified event is already enabled, the EC will ignore this request.”…”�”}”(hjåüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MhjÃû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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M„hjÃûubhþ)�”}”(hŒ›Returns the status of the executed SAM request (zero on success and negative on direct failure) or ``-EPROTO`` if the request response indicates a failure.”h]”(hŒcReturns the status of the executed SAM request (zero on success and negative on direct failure) or ”…”�”}”(hj ýh²hh³Nh´Nubj)�”}”(hŒ ``-EPROTO``”h]”hŒ-EPROTO”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ýubhŒ- if the request response indicates a failure.”…”�”}”(hj ýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M…hjÃûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ#ssam_ssh_event_disable (C function)”Œc.ssam_ssh_event_disable”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ|int ssam_ssh_event_disable (struct ssam_controller *ctrl, struct ssam_event_registry reg, struct ssam_event_id id, u8 flags)”h]”j1)�”}”(hŒ{int ssam_ssh_event_disable(struct ssam_controller *ctrl, struct ssam_event_registry reg, struct ssam_event_id id, u8 flags)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjMýh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjIýh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¢ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ýh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjIýh²hh³j[ýh´M¢ubjZ)�”}”(hŒssam_ssh_event_disable”h]”j`)�”}”(hŒssam_ssh_event_disable”h]”hŒssam_ssh_event_disable”…”�”}”(hjnýh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjjýubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjIýh²hh³j[ýh´M¢ubj)�”}”(hŒa(struct ssam_controller *ctrl, struct ssam_event_registry reg, struct ssam_event_id id, u8 flags)”h]”(j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjŠýh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj†ýubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—ýh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj†ýubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj¨ýh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¥ýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jªýŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjpýsbŒc.ssam_ssh_event_disable”†”asbuh1hhj†ýubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈýh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj†ýubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÖýh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj†ýubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjãýh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj†ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‚ýubj)�”}”(hŒstruct ssam_event_registry reg”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjüýh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjøýubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj þh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjøýubh)�”}”(hhh]”j`)�”}”(hŒssam_event_registry”h]”hŒssam_event_registry”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jþŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÄýŒc.ssam_ssh_event_disable”†”asbuh1hhjøýubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8þh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjøýubj`)�”}”(hŒreg”h]”hŒreg”…”�”}”(hjFþh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjøýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‚ýubj)�”}”(hŒstruct ssam_event_id id”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj_þh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj[þubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlþh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj[þubh)�”}”(hhh]”j`)�”}”(hŒ ssam_event_id”h]”hŒ ssam_event_id”…”�”}”(hj}þh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjzþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jþŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÄýŒc.ssam_ssh_event_disable”†”asbuh1hhj[þubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›þh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj[þubj`)�”}”(hŒid”h]”hŒid”…”�”}”(hj©þh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj[þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‚ýubj)�”}”(hŒu8 flags”h]”(h)�”}”(hhh]”j`)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÅþh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÂþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÇþŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÄýŒc.ssam_ssh_event_disable”†”asbuh1hhj¾þubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãþh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¾þubj`)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjñþh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¾þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‚ýubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjIýh²hh³j[ýh´M¢ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjEýh²hh³j[ýh´M¢ubah}”(h]”j@ýah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j[ýh´M¢hjBýh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒDisable SSH event.”h]”hŒDisable SSH event.”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¢hjÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjBýh²hh³j[ýh´M¢ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j3ÿj¯j3ÿj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX:**Parameters** ``struct ssam_controller *ctrl`` The controller for which to disable the event. ``struct ssam_event_registry reg`` The event registry describing what request to use for enabling and disabling the event (must be same as used when enabling the event). ``struct ssam_event_id id`` The event identifier. ``u8 flags`` The event flags (likely ignored for disabling of events). **Description** Disables the specified event on the EC. This function does not manage reference counting of enabled events and is basically only a wrapper for the raw EC request. If the specified event is already disabled, the EC will ignore this request. **Return** Returns the status of the executed SAM request (zero on success and negative on direct failure) or ``-EPROTO`` if the request response indicates a 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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¦hj7ÿubj)�”}”(hhh]”(j)�”}”(hŒP``struct ssam_controller *ctrl`` The controller for which to disable the event. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hj\ÿh]”hŒstruct ssam_controller *ctrl”…”�”}”(hj^ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M£hjVÿubj))�”}”(hhh]”hþ)�”}”(hŒ.The controller for which to disable the event.”h]”hŒ.The controller for which to disable the event.”…”�”}”(hjuÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jqÿh´M£hjrÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjVÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jqÿh´M£hjSÿubj)�”}”(hŒª``struct ssam_event_registry reg`` The event registry describing what request to use for enabling and disabling the event (must be same as used when enabling the event). ”h]”(j )�”}”(hŒ"``struct ssam_event_registry reg``”h]”j)�”}”(hj•ÿh]”hŒstruct ssam_event_registry reg”…”�”}”(hj—ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¥hj�ÿubj))�”}”(hhh]”hþ)�”}”(hŒ†The event registry describing what request to use for enabling and disabling the event (must be same as used when enabling the event).”h]”hŒ†The event registry describing what request to use for enabling and disabling the event (must be same as used when enabling the event).”…”�”}”(hj®ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¤hj«ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj�ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jªÿh´M¥hjSÿubj)�”}”(hŒ2``struct ssam_event_id id`` The event identifier. ”h]”(j )�”}”(hŒ``struct ssam_event_id id``”h]”j)�”}”(hjÏÿh]”hŒstruct ssam_event_id id”…”�”}”(hjÑÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¦hjÉÿubj))�”}”(hhh]”hþ)�”}”(hŒThe event identifier.”h]”hŒThe event identifier.”…”�”}”(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&]”uh1jh³jäÿh´M¦hjSÿubj)�”}”(hŒG``u8 flags`` The event flags (likely ignored for disabling of events). ”h]”(j )�”}”(hŒ ``u8 flags``”h]”j)�”}”(hjh]”hŒu8 flags”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M§hjubj))�”}”(hhh]”hþ)�”}”(hŒ9The event flags (likely ignored for disabling of events).”h]”hŒ9The event flags (likely ignored for disabling of events).”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´M§hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´M§hjSÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj7ÿubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hjCh]”hŒ Description”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M©hj7ÿubhþ)�”}”(hŒïDisables the specified event on the EC. This function does not manage reference counting of enabled events and is basically only a wrapper for the raw EC request. If the specified event is already disabled, the EC will ignore this request.”h]”hŒïDisables the specified event on the EC. This function does not manage reference counting of enabled events and is basically only a wrapper for the raw EC request. If the specified event is already disabled, the EC will ignore this request.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¨hj7ÿubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjjh]”hŒReturn”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M­hj7ÿubhþ)�”}”(hŒ›Returns the status of the executed SAM request (zero on success and negative on direct failure) or ``-EPROTO`` if the request response indicates a failure.”h]”(hŒcReturns the status of the executed SAM request (zero on success and negative on direct failure) or ”…”�”}”(hj€h²hh³Nh´Nubj)�”}”(hŒ ``-EPROTO``”h]”hŒ-EPROTO”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ubhŒ- if the request response indicates a failure.”…”�”}”(hj€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M®hj7ÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ&ssam_get_firmware_version (C function)”Œc.ssam_get_firmware_version”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒJint ssam_get_firmware_version (struct ssam_controller *ctrl, u32 *version)”h]”j1)�”}”(hŒIint ssam_get_firmware_version(struct ssam_controller *ctrl, u32 *version)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj½h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÎubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj½h²hh³jÏh´MÎubjZ)�”}”(hŒssam_get_firmware_version”h]”j`)�”}”(hŒssam_get_firmware_version”h]”hŒssam_get_firmware_version”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÞubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj½h²hh³jÏh´MÎubj)�”}”(hŒ,(struct ssam_controller *ctrl, u32 *version)”h]”(j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjúubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjúubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjäsbŒc.ssam_get_firmware_version”†”asbuh1hhjúubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjúubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjúubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjöubj)�”}”(hŒ u32 *version”h]”(h)�”}”(hhh]”j`)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”juŒmodname”NŒ classname”Nj\j_)�”}”jb]”j8Œc.ssam_get_firmware_version”†”asbuh1hhjlubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjlubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjlubj`)�”}”(hŒversion”h]”hŒversion”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjöubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj½h²hh³jÏh´MÎubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj¹h²hh³jÏh´MÎubah}”(h]”j´ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÏh´MÎhj¶h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ Get the SAM/EC firmware version.”h]”hŒ Get the SAM/EC firmware version.”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÎhjÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj¶h²hh³jÏh´MÎubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jîj¯jîj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒà**Parameters** ``struct ssam_controller *ctrl`` The controller. ``u32 *version`` Where to store the version number. **Return** Returns zero on success or the status of the executed SAM request if that request failed.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÒhjòubj)�”}”(hhh]”(j)�”}”(hŒ1``struct ssam_controller *ctrl`` The controller. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjh]”hŒstruct ssam_controller *ctrl”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÏhjubj))�”}”(hhh]”hþ)�”}”(hŒThe controller.”h]”hŒThe controller.”…”�”}”(hj0h²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&]”uh1jh³j,h´MÏhjubj)�”}”(hŒ4``u32 *version`` Where to store the version number. ”h]”(j )�”}”(hŒ``u32 *version``”h]”j)�”}”(hjPh]”hŒ u32 *version”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÐhjJubj))�”}”(hhh]”hþ)�”}”(hŒ"Where to store the version number.”h]”hŒ"Where to store the version number.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jeh´MÐhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jeh´MÐhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjò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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÒhjòubhþ)�”}”(hŒYReturns zero on success or the status of the executed SAM request if that request failed.”h]”hŒYReturns zero on success or the status of the executed SAM request if that request failed.”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÒhjòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ(ssam_ctrl_notif_display_off (C function)”Œc.ssam_ctrl_notif_display_off”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ>int ssam_ctrl_notif_display_off (struct ssam_controller *ctrl)”h]”j1)�”}”(hŒ=int ssam_ctrl_notif_display_off(struct ssam_controller *ctrl)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÌh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MãubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÌh²hh³jÞh´MãubjZ)�”}”(hŒssam_ctrl_notif_display_off”h]”j`)�”}”(hŒssam_ctrl_notif_display_off”h]”hŒssam_ctrl_notif_display_off”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjíubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÌh²hh³jÞh´Mãubj)�”}”(hŒ(struct ssam_controller *ctrl)”h]”j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj ubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j-Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjósbŒc.ssam_ctrl_notif_display_off”†”asbuh1hhj ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj ubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÌh²hh³jÞh´Mãubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÈh²hh³jÞh´Mãubah}”(h]”jÃah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÞh´MãhjÅh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ/Notify EC that the display has been turned off.”h]”hŒ/Notify EC that the display has been turned off.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mãhj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÅh²hh³jÞh´Mãubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j¨j¯j¨j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX•**Parameters** ``struct ssam_controller *ctrl`` The controller. **Description** Notify the EC that the display has been turned off and the driver may enter a lower-power state. This will prevent events from being sent directly. Rather, the EC signals an event by pulling the wakeup GPIO high for as long as there are pending events. The events then need to be manually released, one by one, via the GPIO callback request. All pending events accumulated during this state can also be released by issuing the display-on notification, e.g. via ssam_ctrl_notif_display_on(), which will also reset the GPIO. On some devices, specifically ones with an integrated keyboard, the keyboard backlight will be turned off by this call. This function will only send the display-off notification command if display notifications are supported by the EC. Currently all known devices support these notifications. Use ssam_ctrl_notif_display_on() to reverse the effects of this function. **Return** Returns zero on success or if no request has been executed, the status of the executed SAM request if that request failed, or ``-EPROTO`` if an unexpected response has been received.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mçhj¬ubj)�”}”(hhh]”j)�”}”(hŒ1``struct ssam_controller *ctrl`` The controller. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjÑh]”hŒstruct ssam_controller *ctrl”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MåhjËubj))�”}”(hhh]”hþ)�”}”(hŒThe controller.”h]”hŒThe controller.”…”�”}”(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&]”uh1jh³jæh´MåhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hj h]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mçhj¬ubhþ)�”}”(hX Notify the EC that the display has been turned off and the driver may enter a lower-power state. This will prevent events from being sent directly. Rather, the EC signals an event by pulling the wakeup GPIO high for as long as there are pending events. The events then need to be manually released, one by one, via the GPIO callback request. All pending events accumulated during this state can also be released by issuing the display-on notification, e.g. via ssam_ctrl_notif_display_on(), which will also reset the GPIO.”h]”hX Notify the EC that the display has been turned off and the driver may enter a lower-power state. This will prevent events from being sent directly. Rather, the EC signals an event by pulling the wakeup GPIO high for as long as there are pending events. The events then need to be manually released, one by one, via the GPIO callback request. All pending events accumulated during this state can also be released by issuing the display-on notification, e.g. via ssam_ctrl_notif_display_on(), which will also reset the GPIO.”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mæhj¬ubhþ)�”}”(hŒwOn some devices, specifically ones with an integrated keyboard, the keyboard backlight will be turned off by this call.”h]”hŒwOn some devices, specifically ones with an integrated keyboard, the keyboard backlight will be turned off by this call.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mïhj¬ubhþ)�”}”(hŒ¬This function will only send the display-off notification command if display notifications are supported by the EC. Currently all known devices support these notifications.”h]”hŒ¬This function will only send the display-off notification command if display notifications are supported by the EC. Currently all known devices support these notifications.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mòhj¬ubhþ)�”}”(hŒIUse ssam_ctrl_notif_display_on() to reverse the effects of this function.”h]”hŒIUse ssam_ctrl_notif_display_on() to reverse the effects of this function.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Möhj¬ubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hj`h]”hŒReturn”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Møhj¬ubhþ)�”}”(hŒ¶Returns zero on success or if no request has been executed, the status of the executed SAM request if that request failed, or ``-EPROTO`` if an unexpected response has been received.”h]”(hŒ~Returns zero on success or if no request has been executed, the status of the executed SAM request if that request failed, or ”…”�”}”(hjvh²hh³Nh´Nubj)�”}”(hŒ ``-EPROTO``”h]”hŒ-EPROTO”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjvubhŒ- if an unexpected response has been received.”…”�”}”(hjvh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mùhj¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ'ssam_ctrl_notif_display_on (C function)”Œc.ssam_ctrl_notif_display_on”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ=int ssam_ctrl_notif_display_on (struct ssam_controller *ctrl)”h]”j1)�”}”(hŒlock`` must be held when calling this function. **Return** Returns zero on success. If the event is enabled by this call, returns the status of the event-enable EC command.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M”hjÓ ubj)�”}”(hhh]”(j)�”}”(hŒH``struct ssam_controller *ctrl`` The controller to enable the event on. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjø h]”hŒstruct ssam_controller *ctrl”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjö ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M’hjò ubj))�”}”(hhh]”hþ)�”}”(hŒ&The controller to enable the event on.”h]”hŒ&The controller to enable the event on.”…”�”}”(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&]”uh1jh³j h´M’hjï ubj)�”}”(hŒ```struct ssam_nf_refcount_entry *entry`` The reference count entry for the event to be enabled. ”h]”(j )�”}”(hŒ(``struct ssam_nf_refcount_entry *entry``”h]”j)�”}”(hj1 h]”hŒ$struct ssam_nf_refcount_entry *entry”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M“hj+ ubj))�”}”(hhh]”hþ)�”}”(hŒ6The reference count entry for the event to be enabled.”h]”hŒ6The reference count entry for the event to be enabled.”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jF h´M“hjG ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj+ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jF h´M“hjï ubj)�”}”(hŒ>``u8 flags`` The flags used for enabling the event on the EC. ”h]”(j )�”}”(hŒ ``u8 flags``”h]”j)�”}”(hjj h]”hŒu8 flags”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M”hjd ubj))�”}”(hhh]”hþ)�”}”(hŒ0The flags used for enabling the event on the EC.”h]”hŒ0The flags used for enabling the event on the EC.”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j h´M”hj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjd ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j h´M”hjï ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓ 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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M–hjÓ ubhþ)�”}”(hX3Enable the event associated with the given reference count entry if the reference count equals one, i.e. the event has not previously been enabled. If the event has already been enabled (i.e. reference count not equal to one), check that the flags used for enabling match and warn about this if they do not.”h]”hX3Enable the event associated with the given reference count entry if the reference count equals one, i.e. the event has not previously been enabled. If the event has already been enabled (i.e. reference count not equal to one), check that the flags used for enabling match and warn about this if they do not.”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M•hjÓ ubhþ)�”}”(hŒtThis does not modify the reference count itself, which is done with ssam_nf_refcount_inc() / ssam_nf_refcount_dec().”h]”hŒtThis does not modify the reference count itself, which is done with ssam_nf_refcount_inc() / ssam_nf_refcount_dec().”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M›hjÓ ubhþ)�”}”(hŒ**Note**”h]”j¾)�”}”(hjÛ h]”hŒNote”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÙ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MžhjÓ ubhþ)�”}”(hŒ5``nf->lock`` must be held when calling this function.”h]”(j)�”}”(hŒ ``nf->lock``”h]”hŒnf->lock”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñ ubhŒ) must be held when calling this function.”…”�”}”(hjñ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¡hjÓ ubhþ)�”}”(hŒqReturns zero on success. If the event is enabled by this call, returns the status of the event-enable EC command.”h]”hŒqReturns zero on success. If the event is enabled by this call, returns the status of the event-enable EC command.”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M¡hjÓ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ*ssam_nf_refcount_disable_free (C function)”Œc.ssam_nf_refcount_disable_free”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒyint ssam_nf_refcount_disable_free (struct ssam_controller *ctrl, struct ssam_nf_refcount_entry *entry, u8 flags, bool ec)”h]”j1)�”}”(hŒxint ssam_nf_refcount_disable_free(struct ssam_controller *ctrl, struct ssam_nf_refcount_entry *entry, u8 flags, bool ec)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjQ h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÃubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjQ h²hh³jc h´MÃubjZ)�”}”(hŒssam_nf_refcount_disable_free”h]”j`)�”}”(hŒssam_nf_refcount_disable_free”h]”hŒssam_nf_refcount_disable_free”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjr ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjQ h²hh³jc h´MÃubj)�”}”(hŒW(struct ssam_controller *ctrl, struct ssam_nf_refcount_entry *entry, u8 flags, bool ec)”h]”(j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjŽ ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŽ ubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj­ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j² Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjx sbŒc.ssam_nf_refcount_disable_free”†”asbuh1hhjŽ ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŽ ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjŽ ubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjŽ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjŠ ubj)�”}”(hŒ$struct ssam_nf_refcount_entry *entry”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjubh)�”}”(hhh]”j`)�”}”(hŒssam_nf_refcount_entry”h]”hŒssam_nf_refcount_entry”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j$Œmodname”NŒ classname”Nj\j_)�”}”jb]”jÌ Œc.ssam_nf_refcount_disable_free”†”asbuh1hhjubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjubj`)�”}”(hŒentry”h]”hŒentry”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjŠ ubj)�”}”(hŒu8 flags”h]”(h)�”}”(hhh]”j`)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jyŒmodname”NŒ classname”Nj\j_)�”}”jb]”jÌ Œc.ssam_nf_refcount_disable_free”†”asbuh1hhjpubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjpubj`)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjŠ ubj)�”}”(hŒbool ec”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj¸ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¸ubj`)�”}”(hŒec”h]”hŒec”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjŠ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjQ h²hh³jc h´MÃubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjM h²hh³jc h´MÃubah}”(h]”jH ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jc h´MÃhjJ h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒcDisable event for reference count entry if it is no longer in use and free the corresponding entry.”h]”hŒcDisable event for reference count entry if it is no longer in use and free the corresponding entry.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÃhjþh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjJ h²hh³jc h´MÃubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jj¯jj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hXû**Parameters** ``struct ssam_controller *ctrl`` The controller to disable the event on. ``struct ssam_nf_refcount_entry *entry`` The reference count entry for the event to be disabled. ``u8 flags`` The flags used for enabling the event on the EC. ``bool ec`` Flag specifying if the event should actually be disabled on the EC. **Description** If ``ec`` equals ``true`` and the reference count equals zero (i.e. the event is no longer requested by any client), the specified event will be disabled on the EC via the corresponding request. If ``ec`` equals ``false``, no request will be sent to the EC and the event can be considered in a detached state (i.e. no longer used but still enabled). Disabling an event via this method may be required for hot-removable devices, where event disable requests may time out after the device has been physically removed. In both cases, if the reference count equals zero, the corresponding reference count entry will be freed. The reference count entry must not be used any more after a call to this function. Also checks if the flags used for disabling the event match the flags used for enabling the event and warns if they do not (regardless of reference count). This does not modify the reference count itself, which is done with ssam_nf_refcount_inc() / ssam_nf_refcount_dec(). **Note** ``nf->lock`` must be held when calling this function. **Return** Returns zero on success. If the event is disabled by this call, returns the status of the event-enable EC command.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÇhjubj)�”}”(hhh]”(j)�”}”(hŒI``struct ssam_controller *ctrl`` The controller to disable the event on. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjBh]”hŒstruct ssam_controller *ctrl”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÅhj<ubj))�”}”(hhh]”hþ)�”}”(hŒ'The controller to disable the event on.”h]”hŒ'The controller to disable the event on.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jWh´MÅhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jWh´MÅhj9ubj)�”}”(hŒa``struct ssam_nf_refcount_entry *entry`` The reference count entry for the event to be disabled. ”h]”(j )�”}”(hŒ(``struct ssam_nf_refcount_entry *entry``”h]”j)�”}”(hj{h]”hŒ$struct ssam_nf_refcount_entry *entry”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÆhjuubj))�”}”(hhh]”hþ)�”}”(hŒ7The reference count entry for the event to be disabled.”h]”hŒ7The reference count entry for the event to be disabled.”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j�h´MÆhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�h´MÆhj9ubj)�”}”(hŒ>``u8 flags`` The flags used for enabling the event on the EC. ”h]”(j )�”}”(hŒ ``u8 flags``”h]”j)�”}”(hj´h]”hŒu8 flags”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÇhj®ubj))�”}”(hhh]”hþ)�”}”(hŒ0The flags used for enabling the event on the EC.”h]”hŒ0The flags used for enabling the event on the EC.”…”�”}”(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&]”uh1jh³jÉh´MÇhj9ubj)�”}”(hŒP``bool ec`` Flag specifying if the event should actually be disabled on the EC. ”h]”(j )�”}”(hŒ ``bool ec``”h]”j)�”}”(hjíh]”hŒbool ec”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÈhjçubj))�”}”(hhh]”hþ)�”}”(hŒCFlag specifying if the event should actually be disabled on the EC.”•)h]”hŒCFlag specifying if the event should actually be disabled on the EC.”…”�”}”(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&]”uh1jh³jh´MÈhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhþ)�”}”(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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÊhjubhþ)�”}”(hŒÂIf ``ec`` equals ``true`` and the reference count equals zero (i.e. the event is no longer requested by any client), the specified event will be disabled on the EC via the corresponding request.”h]”(hŒIf ”…”�”}”(hj>h²hh³Nh´Nubj)�”}”(hŒ``ec``”h]”hŒec”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ubhŒ equals ”…”�”}”(hj>h²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ubhŒ© and the reference count equals zero (i.e. the event is no longer requested by any client), the specified event will be disabled on the EC via the corresponding request.”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÉhjubhþ)�”}”(hX@If ``ec`` equals ``false``, no request will be sent to the EC and the event can be considered in a detached state (i.e. no longer used but still enabled). Disabling an event via this method may be required for hot-removable devices, where event disable requests may time out after the device has been physically removed.”h]”(hŒIf ”…”�”}”(hjqh²hh³Nh´Nubj)�”}”(hŒ``ec``”h]”hŒec”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqubhŒ equals ”…”�”}”(hjqh²hh³Nh´Nubj)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqubhX&, no request will be sent to the EC and the event can be considered in a detached state (i.e. no longer used but still enabled). Disabling an event via this method may be required for hot-removable devices, where event disable requests may time out after the device has been physically removed.”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÍhjubhþ)�”}”(hŒ¼In both cases, if the reference count equals zero, the corresponding reference count entry will be freed. The reference count entry must not be used any more after a call to this function.”h]”hŒ¼In both cases, if the reference count equals zero, the corresponding reference count entry will be freed. The reference count entry must not be used any more after a call to this function.”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÓhjubhþ)�”}”(hŒ›Also checks if the flags used for disabling the event match the flags used for enabling the event and warns if they do not (regardless of reference count).”h]”hŒ›Also checks if the flags used for disabling the event match the flags used for enabling the event and warns if they do not (regardless of reference count).”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M×hjubhþ)�”}”(hŒtThis does not modify the reference count itself, which is done with ssam_nf_refcount_inc() / ssam_nf_refcount_dec().”h]”hŒtThis does not modify the reference count itself, which is done with ssam_nf_refcount_inc() / ssam_nf_refcount_dec().”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÛhjubhþ)�”}”(hŒ**Note**”h]”j¾)�”}”(hjÓh]”hŒNote”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÞhjubhþ)�”}”(hŒ5``nf->lock`` must be held when calling this function.”h]”(j)�”}”(hŒ ``nf->lock``”h]”hŒnf->lock”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéubhŒ) must be held when calling this function.”…”�”}”(hjéh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mßhjubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjh]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Máhjubhþ)�”}”(hŒrReturns zero on success. If the event is disabled by this call, returns the status of the event-enable EC command.”h]”hŒrReturns zero on success. If the event is disabled by this call, returns the status of the event-enable EC command.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Máhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ-ssam_notifier_disable_registered (C function)”Œ"c.ssam_notifier_disable_registered”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒCint ssam_notifier_disable_registered (struct ssam_controller *ctrl)”h]”j1)�”}”(hŒBint ssam_notifier_disable_registered(struct ssam_controller *ctrl)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjIh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mò ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjIh²hh³j[h´Mò ubjZ)�”}”(hŒ ssam_notifier_disable_registered”h]”j`)�”}”(hŒ ssam_notifier_disable_registered”h]”hŒ ssam_notifier_disable_registered”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjjubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjIh²hh³j[h´Mò ubj)�”}”(hŒ(struct ssam_controller *ctrl)”h]”j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj†ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj†ubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jªŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjpsbŒ"c.ssam_notifier_disable_registered”†”asbuh1hhj†ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj†ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj†ubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‚ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjIh²hh³j[h´Mò ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjEh²hh³j[h´Mò ubah}”(h]”j@ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j[h´Mò hjBh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ,Disable events for all registered notifiers.”h]”hŒ,Disable events for all registered notifiers.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mò hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjBh²hh³j[h´Mò ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j%j¯j%j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hXm**Parameters** ``struct ssam_controller *ctrl`` The controller for which to disable the notifiers/events. **Description** Disables events for all currently registered notifiers. In case of an error (EC command failing), all previously disabled events will be restored and the error code returned. This function is intended to disable all events prior to hibernation entry. See ssam_notifier_restore_registered() to restore/re-enable all events disabled with this function. Note that this function will not disable events for notifiers registered after calling this function. It should thus be made sure that no new notifiers are going to be added after this call and before the corresponding call to ssam_notifier_restore_registered(). **Return** Returns zero on success. In case of failure returns the error code returned by the failed EC command to disable an event.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj/h]”hŒ Parameters”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mö hj)ubj)�”}”(hhh]”j)�”}”(hŒ[``struct ssam_controller *ctrl`` The controller for which to disable the notifiers/events. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjNh]”hŒstruct ssam_controller *ctrl”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mô hjHubj))�”}”(hhh]”hþ)�”}”(hŒ9The controller for which to disable the notifiers/events.”h]”hŒ9The controller for which to disable the notifiers/events.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jch´Mô hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jch´Mô hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mö hj)ubhþ)�”}”(hŒ®Disables events for all currently registered notifiers. In case of an error (EC command failing), all previously disabled events will be restored and the error code returned.”h]”hŒ®Disables events for all currently registered notifiers. In case of an error (EC command failing), all previously disabled events will be restored and the error code returned.”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mõ hj)ubhþ)�”}”(hŒ¯This function is intended to disable all events prior to hibernation entry. See ssam_notifier_restore_registered() to restore/re-enable all events disabled with this function.”h]”hŒ¯This function is intended to disable all events prior to hibernation entry. See ssam_notifier_restore_registered() to restore/re-enable all events disabled with this function.”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mù hj)ubhþ)�”}”(hXNote that this function will not disable events for notifiers registered after calling this function. It should thus be made sure that no new notifiers are going to be added after this call and before the corresponding call to ssam_notifier_restore_registered().”h]”hXNote that this function will not disable events for notifiers registered after calling this function. It should thus be made sure that no new notifiers are going to be added after this call and before the corresponding call to ssam_notifier_restore_registered().”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hj)ubhþ)�”}”(hŒyReturns zero on success. In case of failure returns the error code returned by the failed EC command to disable an event.”h]”hŒyReturns zero on success. In case of failure returns the error code returned by the failed EC command to disable an event.”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hj)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ-ssam_notifier_restore_registered (C function)”Œ"c.ssam_notifier_restore_registered”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒDvoid ssam_notifier_restore_registered (struct ssam_controller *ctrl)”h]”j1)�”}”(hŒCvoid ssam_notifier_restore_registered(struct ssam_controller *ctrl)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M' ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjh²hh³j!h´M' ubjZ)�”}”(hŒ ssam_notifier_restore_registered”h]”j`)�”}”(hŒ ssam_notifier_restore_registered”h]”hŒ ssam_notifier_restore_registered”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj0ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjh²hh³j!h´M' ubj)�”}”(hŒ(struct ssam_controller *ctrl)”h]”j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjLubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjLubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jpŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj6sbŒ"c.ssam_notifier_restore_registered”†”asbuh1hhjLubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjLubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjLubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjHubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjh²hh³j!h´M' ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj h²hh³j!h´M' ubah}”(h]”jah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j!h´M' hjh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ6Restore/re-enable events for all registered notifiers.”h]”hŒ6Restore/re-enable events for all registered notifiers.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M' hjÐh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjh²hh³j!h´M' ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jëj¯jëj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX**Parameters** ``struct ssam_controller *ctrl`` The controller for which to restore the notifiers/events. **Description** Restores/re-enables all events for which notifiers have been registered on the given controller. In case of a failure, the error is logged and the function continues to try and enable the remaining events. This function is intended to restore/re-enable all registered events after hibernation. See ssam_notifier_disable_registered() for the counter part disabling the events and more details.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M+ hjïubj)�”}”(hhh]”j)�”}”(hŒ[``struct ssam_controller *ctrl`` The controller for which to restore the notifiers/events. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjh]”hŒstruct ssam_controller *ctrl”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M) hjubj))�”}”(hhh]”hþ)�”}”(hŒ9The controller for which to restore the notifiers/events.”h]”hŒ9The controller for which to restore the notifiers/events.”…”�”}”(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&]”uh1jh³j)h´M) hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjïubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hjOh]”hŒ Description”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M+ hjïubhþ)�”}”(hŒÍRestores/re-enables all events for which notifiers have been registered on the given controller. In case of a failure, the error is logged and the function continues to try and enable the remaining events.”h]”hŒÍRestores/re-enables all events for which notifiers have been registered on the given controller. In case of a failure, the error is logged and the function continues to try and enable the remaining events.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M* hjïubhþ)�”}”(hŒºThis function is intended to restore/re-enable all registered events after hibernation. See ssam_notifier_disable_registered() for the counter part disabling the events and more details.”h]”hŒºThis function is intended to restore/re-enable all registered events after hibernation. See ssam_notifier_disable_registered() for the counter part disabling the events and more details.”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M. hjïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ#ssam_notifier_is_empty (C function)”Œc.ssam_notifier_is_empty”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ:bool ssam_notifier_is_empty (struct ssam_controller *ctrl)”h]”j1)�”}”(hŒ9bool ssam_notifier_is_empty(struct ssam_controller *ctrl)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjŸh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´ME ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŸh²hh³j°h´ME ubjZ)�”}”(hŒssam_notifier_is_empty”h]”j`)�”}”(hŒssam_notifier_is_empty”h]”hŒssam_notifier_is_empty”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¿ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjŸh²hh³j°h´ME ubj)�”}”(hŒ(struct ssam_controller *ctrl)”h]”j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÛubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÛubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÿŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjÅsbŒc.ssam_notifier_is_empty”†”asbuh1hhjÛubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÛubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÛubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj×ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjŸh²hh³j°h´ME ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj›h²hh³j°h´ME ubah}”(h]”j–ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j°h´ME hj˜h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ,Check if there are any registered notifiers.”h]”hŒ,Check if there are any registered notifiers.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´ME hj_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj˜h²hh³j°h´ME ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jzj¯jzj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒÃ**Parameters** ``struct ssam_controller *ctrl`` The controller to check on. **Return** Returns ``true`` if there are currently no notifiers registered on the controller, ``false`` otherwise.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MI hj~ubj)�”}”(hhh]”j)�”}”(hŒ=``struct ssam_controller *ctrl`` The controller to check on. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hj£h]”hŒstruct ssam_controller *ctrl”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MF hj�ubj))�”}”(hhh]”hþ)�”}”(hŒThe controller to check on.”h]”hŒThe controller to check on.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¸h´MF hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¸h´MF hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MH hj~ubhþ)�”}”(hŒgReturns ``true`` if there are currently no notifiers registered on the controller, ``false`` otherwise.”h]”(hŒReturns ”…”�”}”(hjôh²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôubhŒC if there are currently no notifiers registered on the controller, ”…”�”}”(hjôh²hh³Nh´Nubj)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôubhŒ otherwise.”…”�”}”(hjôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MH hj~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ)ssam_notifier_unregister_all (C function)”Œc.ssam_notifier_unregister_all”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ@void ssam_notifier_unregister_all (struct ssam_controller *ctrl)”h]”j1)�”}”(hŒ?void ssam_notifier_unregister_all(struct ssam_controller *ctrl)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjCh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MX ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjCh²hh³jUh´MX ubjZ)�”}”(hŒssam_notifier_unregister_all”h]”j`)�”}”(hŒssam_notifier_unregister_all”h]”hŒssam_notifier_unregister_all”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjdubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjCh²hh³jUh´MX ubj)�”}”(hŒ(struct ssam_controller *ctrl)”h]”j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj€ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj€ubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¤Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjjsbŒc.ssam_notifier_unregister_all”†”asbuh1hhj€ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj€ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj€ubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj|ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjCh²hh³jUh´MX ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj?h²hh³jUh´MX ubah}”(h]”j:ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jUh´MX hj<h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ.Unregister all currently registered notifiers.”h]”hŒ.Unregister all currently registered notifiers.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MX hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj<h²hh³jUh´MX ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jj¯jj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX:**Parameters** ``struct ssam_controller *ctrl`` The controller to unregister the notifiers on. **Description** Unregisters all currently registered notifiers. This function is used to ensure that all notifiers will be unregistered and associated entries/resources freed when the controller is being shut down.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M\ hj#ubj)�”}”(hhh]”j)�”}”(hŒP``struct ssam_controller *ctrl`` The controller to unregister the notifiers on. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjHh]”hŒstruct ssam_controller *ctrl”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MZ hjBubj))�”}”(hhh]”hþ)�”}”(hŒ.The controller to unregister the notifiers on.”h]”hŒ.The controller to unregister the notifiers on.”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j]h´MZ hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j]h´MZ hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M\ hj#ubhþ)�”}”(hŒÆUnregisters all currently registered notifiers. This function is used to ensure that all notifiers will be unregistered and associated entries/resources freed when the controller is being shut down.”h]”hŒÆUnregisters all currently registered notifiers. This function is used to ensure that all notifiers will be unregistered and associated entries/resources freed when the controller is being shut down.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M[ hj#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_irq_setup (C function)”Œc.ssam_irq_setup”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ1int ssam_irq_setup (struct ssam_controller *ctrl)”h]”j1)�”}”(hŒ0int ssam_irq_setup(struct ssam_controller *ctrl)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjÄh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M‘ ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÄh²hh³jÖh´M‘ ubjZ)�”}”(hŒssam_irq_setup”h]”j`)�”}”(hŒssam_irq_setup”h]”hŒssam_irq_setup”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjåubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÄh²hh³jÖh´M‘ ubj)�”}”(hŒ(struct ssam_controller *ctrl)”h]”j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j%Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjësbŒc.ssam_irq_setup”†”asbuh1hhjubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjýubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÄh²hh³jÖh´M‘ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjÀh²hh³jÖh´M‘ ubah}”(h]”j»ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÖh´M‘ hj½h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ$Set up SAM EC wakeup-GPIO interrupt.”h]”hŒ$Set up SAM EC wakeup-GPIO interrupt.”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M‘ hj…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj½h²hh³jÖh´M‘ ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j j¯j j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX]**Parameters** ``struct ssam_controller *ctrl`` The controller for which the IRQ should be set up. **Description** Set up an IRQ for the wakeup-GPIO pin of the SAM EC. This IRQ can be used to wake the device from a low power state. Note that this IRQ can only be triggered while the EC is in the display-off state. In this state, events are not sent to the host in the usual way. Instead the wakeup-GPIO gets pulled to "high" as long as there are pending events and these events need to be released one-by-one via the GPIO callback request, either until there are no events left and the GPIO is reset, or all at once by transitioning the EC out of the display-off state, which will also clear the GPIO. Not all events, however, should trigger a full system wakeup. Instead the driver should, if necessary, inspect and forward each event to the corresponding subsystem, which in turn should decide if the system needs to be woken up. This logic has not been implemented yet, thus wakeup by this IRQ should be disabled by default to avoid spurious wake-ups, caused, for example, by the remaining battery percentage changing. Refer to comments in this function and comments in the corresponding IRQ handler for more details on how this should be implemented. See also ssam_ctrl_notif_display_off() and ssam_ctrl_notif_display_off() for functions to transition the EC into and out of the display-off state as well as more details on it. The IRQ is disabled by default and has to be enabled before it can wake up the device from suspend via ssam_irq_arm_for_wakeup(). On teardown, the IRQ should be freed via ssam_irq_free().”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M• hj¤ubj)�”}”(hhh]”j)�”}”(hŒT``struct ssam_controller *ctrl`` The controller for which the IRQ should be set up. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjÉh]”hŒstruct ssam_controller *ctrl”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M’ hjÃubj))�”}”(hhh]”hþ)�”}”(hŒ2The controller for which the IRQ should be set up.”h]”hŒ2The controller for which the IRQ should be set up.”…”�”}”(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&]”uh1jh³jÞh´M’ hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M” hj¤ubhþ)�”}”(hŒtSet up an IRQ for the wakeup-GPIO pin of the SAM EC. This IRQ can be used to wake the device from a low power state.”h]”hŒtSet up an IRQ for the wakeup-GPIO pin of the SAM EC. This IRQ can be used to wake the device from a low power state.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M“ hj¤ubhþ)�”}”(hXÖNote that this IRQ can only be triggered while the EC is in the display-off state. In this state, events are not sent to the host in the usual way. Instead the wakeup-GPIO gets pulled to "high" as long as there are pending events and these events need to be released one-by-one via the GPIO callback request, either until there are no events left and the GPIO is reset, or all at once by transitioning the EC out of the display-off state, which will also clear the GPIO.”h]”hXÚNote that this IRQ can only be triggered while the EC is in the display-off state. In this state, events are not sent to the host in the usual way. Instead the wakeup-GPIO gets pulled to “highâ€� as long as there are pending events and these events need to be released one-by-one via the GPIO callback request, either until there are no events left and the GPIO is reset, or all at once by transitioning the EC out of the display-off state, which will also clear the GPIO.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M– hj¤ubhþ)�”}”(hX(Not all events, however, should trigger a full system wakeup. Instead the driver should, if necessary, inspect and forward each event to the corresponding subsystem, which in turn should decide if the system needs to be woken up. This logic has not been implemented yet, thus wakeup by this IRQ should be disabled by default to avoid spurious wake-ups, caused, for example, by the remaining battery percentage changing. Refer to comments in this function and comments in the corresponding IRQ handler for more details on how this should be implemented.”h]”hX(Not all events, however, should trigger a full system wakeup. Instead the driver should, if necessary, inspect and forward each event to the corresponding subsystem, which in turn should decide if the system needs to be woken up. This logic has not been implemented yet, thus wakeup by this IRQ should be disabled by default to avoid spurious wake-ups, caused, for example, by the remaining battery percentage changing. Refer to comments in this function and comments in the corresponding IRQ handler for more details on how this should be implemented.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mž hj¤ubhþ)�”}”(hŒ°See also ssam_ctrl_notif_display_off() and ssam_ctrl_notif_display_off() for functions to transition the EC into and out of the display-off state as well as more details on it.”h]”hŒ°See also ssam_ctrl_notif_display_off() and ssam_ctrl_notif_display_off() for functions to transition the EC into and out of the display-off state as well as more details on it.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M§ hj¤ubhþ)�”}”(hŒ»The IRQ is disabled by default and has to be enabled before it can wake up the device from suspend via ssam_irq_arm_for_wakeup(). On teardown, the IRQ should be freed via ssam_irq_free().”h]”hŒ»The IRQ is disabled by default and has to be enabled before it can wake up the device from suspend via ssam_irq_arm_for_wakeup(). On teardown, the IRQ should be freed via ssam_irq_free().”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M« hj¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_irq_free (C function)”Œc.ssam_irq_free”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ1void ssam_irq_free (struct ssam_controller *ctrl)”h]”j1)�”}”(hŒ0void ssam_irq_free(struct ssam_controller *ctrl)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj�h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÙ ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj�h²hh³j“h´MÙ ubjZ)�”}”(hŒ ssam_irq_free”h]”j`)�”}”(hŒ ssam_irq_free”h]”hŒ ssam_irq_free”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¢ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj�h²hh³j“h´MÙ ubj)�”}”(hŒ(struct ssam_controller *ctrl)”h]”j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj¾ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¾ubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÝubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jâŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj¨sbŒc.ssam_irq_free”†”asbuh1hhj¾ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¾ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj¾ubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjºubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj�h²hh³j“h´MÙ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj}h²hh³j“h´MÙ ubah}”(h]”jxah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j“h´MÙ hjzh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ"Free SAM EC wakeup-GPIO interrupt.”h]”hŒ"Free SAM EC wakeup-GPIO interrupt.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÙ hjBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjzh²hh³j“h´MÙ ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j]j¯j]j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hŒ·**Parameters** ``struct ssam_controller *ctrl`` The controller for which the IRQ should be freed. **Description** Free the wakeup-GPIO IRQ previously set-up via ssam_irq_setup().”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjgh]”hŒ Parameters”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÝ hjaubj)�”}”(hhh]”j)�”}”(hŒS``struct ssam_controller *ctrl`` The controller for which the IRQ should be freed. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hj†h]”hŒstruct ssam_controller *ctrl”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÚ hj€ubj))�”}”(hhh]”hþ)�”}”(hŒ1The controller for which the IRQ should be freed.”h]”hŒ1The controller for which the IRQ should be freed.”…”�”}”(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&]”uh1jh³j›h´MÚ hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaubhþ)�”}”(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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÜ hjaubhþ)�”}”(hŒ@Free the wakeup-GPIO IRQ previously set-up via ssam_irq_setup().”h]”hŒ@Free the wakeup-GPIO IRQ previously set-up via ssam_irq_setup().”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´MÛ hjaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ$ssam_irq_arm_for_wakeup (C function)”Œc.ssam_irq_arm_for_wakeup”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ:int ssam_irq_arm_for_wakeup (struct ssam_controller *ctrl)”h]”j1)�”}”(hŒ9int ssam_irq_arm_for_wakeup(struct ssam_controller *ctrl)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjh²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Må ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjh²hh³jh´Må ubjZ)�”}”(hŒssam_irq_arm_for_wakeup”h]”j`)�”}”(hŒssam_irq_arm_for_wakeup”h]”hŒssam_irq_arm_for_wakeup”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj#ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjh²hh³jh´Må ubj)�”}”(hŒ(struct ssam_controller *ctrl)”h]”j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj?ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj?ubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jcŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj)sbŒc.ssam_irq_arm_for_wakeup”†”asbuh1hhj?ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj?ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj?ubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj;ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjh²hh³jh´Må ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjþh²hh³jh´Må ubah}”(h]”jùah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jh´Må hjûh²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ&Arm the EC IRQ for wakeup, if enabled.”h]”hŒ&Arm the EC IRQ for wakeup, if enabled.”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Må hjÃh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjûh²hh³jh´Må ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jÞj¯jÞj°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hX'**Parameters** ``struct ssam_controller *ctrl`` The controller for which the IRQ should be armed. **Description** Sets up the IRQ so that it can be used to wake the device. Specifically, this function enables the irq and then, if the device is allowed to wake up the system, calls enable_irq_wake(). See ssam_irq_disarm_wakeup() for the corresponding function to disable the IRQ. This function is intended to arm the IRQ before entering S2idle suspend. **Note** calls to ssam_irq_arm_for_wakeup() and ssam_irq_disarm_wakeup() must be balanced.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mé hjâubj)�”}”(hhh]”j)�”}”(hŒS``struct ssam_controller *ctrl`` The controller for which the IRQ should be armed. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjh]”hŒstruct ssam_controller *ctrl”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mæ hjubj))�”}”(hhh]”hþ)�”}”(hŒ1The controller for which the IRQ should be armed.”h]”hŒ1The controller for which the IRQ should be armed.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´Mæ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´Mæ hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâubhþ)�”}”(hŒ**Description**”h]”j¾)�”}”(hjBh]”hŒ Description”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mè hjâubhþ)�”}”(hX Sets up the IRQ so that it can be used to wake the device. Specifically, this function enables the irq and then, if the device is allowed to wake up the system, calls enable_irq_wake(). See ssam_irq_disarm_wakeup() for the corresponding function to disable the IRQ.”h]”hX Sets up the IRQ so that it can be used to wake the device. Specifically, this function enables the irq and then, if the device is allowed to wake up the system, calls enable_irq_wake(). See ssam_irq_disarm_wakeup() for the corresponding function to disable the IRQ.”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mç hjâubhþ)�”}”(hŒHThis function is intended to arm the IRQ before entering S2idle suspend.”h]”hŒHThis function is intended to arm the IRQ before entering S2idle suspend.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mì hjâubhþ)�”}”(hŒ**Note**”h]”j¾)�”}”(hjxh]”hŒNote”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mî hjâubhþ)�”}”(hŒQcalls to ssam_irq_arm_for_wakeup() and ssam_irq_disarm_wakeup() must be balanced.”h]”hŒQcalls to ssam_irq_arm_for_wakeup() and ssam_irq_disarm_wakeup() must be balanced.”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´Mï hjâubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ#ssam_irq_disarm_wakeup (C function)”Œc.ssam_irq_disarm_wakeup”hNt”auh1jhj„‹h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ:void ssam_irq_disarm_wakeup (struct ssam_controller *ctrl)”h]”j1)�”}”(hŒ9void ssam_irq_disarm_wakeup(struct ssam_controller *ctrl)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj¹h²hh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¹h²hh³jËh´M ubjZ)�”}”(hŒssam_irq_disarm_wakeup”h]”j`)�”}”(hŒssam_irq_disarm_wakeup”h]”hŒssam_irq_disarm_wakeup”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÚubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¹h²hh³jËh´M ubj)�”}”(hŒ(struct ssam_controller *ctrl)”h]”j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjöubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjöubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjàsbŒc.ssam_irq_disarm_wakeup”†”asbuh1hhjöubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjöubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjöubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjòubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj¹h²hh³jËh´M ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjµh²hh³jËh´M ubah}”(h]”j°ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jËh´M hj²h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒDisarm the wakeup IRQ.”h]”hŒDisarm the wakeup IRQ.”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hjzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj²h²hh³jËh´M ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j•j¯j•j°‰j±‰j²‰uh1j%h²hhj„‹h³Nh´Nubj´)�”}”(hXj**Parameters** ``struct ssam_controller *ctrl`` The controller for which the IRQ should be disarmed. **Description** Disarm the IRQ previously set up for wake via ssam_irq_arm_for_wakeup(). This function is intended to disarm the IRQ after exiting S2idle suspend. **Note** calls to ssam_irq_arm_for_wakeup() and ssam_irq_disarm_wakeup() must be balanced.”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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hj™ubj)�”}”(hhh]”j)�”}”(hŒV``struct ssam_controller *ctrl`` The controller for which the IRQ should be disarmed. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hj¾h]”hŒstruct ssam_controller *ctrl”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hj¸ubj))�”}”(hhh]”hþ)�”}”(hŒ4The controller for which the IRQ should be disarmed.”h]”hŒ4The controller for which the IRQ should be disarmed.”…”�”}”(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&]”uh1jh³jÓh´M hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™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³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hj™ubhþ)�”}”(hŒHDisarm the IRQ previously set up for wake via ssam_irq_arm_for_wakeup().”h]”hŒHDisarm the IRQ previously set up for wake via ssam_irq_arm_for_wakeup().”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hj™ubhþ)�”}”(hŒIThis function is intended to disarm the IRQ after exiting S2idle suspend.”h]”hŒIThis function is intended to disarm the IRQ after exiting S2idle suspend.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hj™ubhþ)�”}”(hŒ**Note**”h]”j¾)�”}”(hj/h]”hŒNote”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hj™ubhþ)�”}”(hŒQcalls to ssam_irq_arm_for_wakeup() and ssam_irq_disarm_wakeup() must be balanced.”h]”hŒQcalls to ssam_irq_arm_for_wakeup() and ssam_irq_disarm_wakeup() must be balanced.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‹/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:46: ./drivers/platform/surface/aggregator/controller.c”h´M hj™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj„‹h²hh³Nh´Nubeh}”(h]”juah ]”h"]”Œ controller”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K)ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒClient Device Bus”h]”hŒClient Device Bus”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝj‘uh1hÍhjbh²hh³hÇh´K3ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ&ssam_device_id_compatible (C function)”Œc.ssam_device_id_compatible”hNt”auh1jhjbh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ\bool ssam_device_id_compatible (const struct ssam_device_id *id, struct ssam_device_uid uid)”h]”j1)�”}”(hŒ[bool ssam_device_id_compatible(const struct ssam_device_id *id, struct ssam_device_uid uid)”h]”(já)�”}”(hj)h]”hŒbool”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjˆh²hh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´K²ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjˆh²hh³j™h´K²ubjZ)�”}”(hŒssam_device_id_compatible”h]”j`)�”}”(hŒssam_device_id_compatible”h]”hŒssam_device_id_compatible”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¨ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjˆh²hh³j™h´K²ubj)�”}”(hŒ=(const struct ssam_device_id *id, struct ssam_device_uid uid)”h]”(j)�”}”(hŒconst struct ssam_device_id *id”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÄubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÄubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÄubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÄubh)�”}”(hhh]”j`)�”}”(hŒssam_device_id”h]”hŒssam_device_id”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jŒmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXj®sbŒc.ssam_device_id_compatible”†”asbuh1hhjÄubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÄubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÄubj`)�”}”(hŒid”h]”hŒid”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÀubj)�”}”(hŒstruct ssam_device_uid uid”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjQubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjQubh)�”}”(hhh]”j`)�”}”(hŒssam_device_uid”h]”hŒssam_device_uid”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”juŒmodname”NŒ classname”Nj\j_)�”}”jb]”jŒc.ssam_device_id_compatible”†”asbuh1hhjQubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjQubj`)�”}”(hŒuid”h]”hŒuid”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÀubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjˆh²hh³j™h´K²ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj„h²hh³j™h´K²ubah}”(h]”jah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j™h´K²hj�h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ#Check if a device ID matches a UID.”h]”hŒ#Check if a device ID matches a UID.”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´K²hjÆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj�h²hh³j™h´K²ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jáj¯jáj°‰j±‰j²‰uh1j%h²hhjbh³Nh´Nubj´)�”}”(hX **Parameters** ``const struct ssam_device_id *id`` The device ID as potential match. ``struct ssam_device_uid uid`` The device UID matching against. **Description** Check if the given ID is a match for the given UID, i.e. if a device with the provided UID is compatible to the given ID following the match rules described in its :c:type:`ssam_device_id.match_flags ` member. **Return** Returns ``true`` if the given UID is compatible to the match rule described by the given ID, ``false`` otherwise.”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³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´K¶hjåubj)�”}”(hhh]”(j)�”}”(hŒF``const struct ssam_device_id *id`` The device ID as potential match. ”h]”(j )�”}”(hŒ#``const struct ssam_device_id *id``”h]”j)�”}”(hj h]”hŒconst struct ssam_device_id *id”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´K³hj ubj))�”}”(hhh]”hþ)�”}”(hŒ!The device ID as potential match.”h]”hŒ!The device ID as potential match.”…”�”}”(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&]”uh1jh³j h´K³hj ubj)�”}”(hŒ@``struct ssam_device_uid uid`` The device UID matching against. ”h]”(j )�”}”(hŒ``struct ssam_device_uid uid``”h]”j)�”}”(hjC h]”hŒstruct ssam_device_uid uid”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´K´hj= ubj))�”}”(hhh]”hþ)�”}”(hŒ The device UID matching against.”h]”hŒ The device UID matching against.”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jX h´K´hjY ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj= ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jX h´K´hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjå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³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´K¶hjåubhþ)�”}”(hŒáCheck if the given ID is a match for the given UID, i.e. if a device with the provided UID is compatible to the given ID following the match rules described in its :c:type:`ssam_device_id.match_flags ` member.”•Ãóh]”(hŒ¤Check if the given ID is a match for the given UID, i.e. if a device with the provided UID is compatible to the given ID following the match rules described in its ”…”�”}”(hj” h²hh³Nh´Nubh)�”}”(hŒ5:c:type:`ssam_device_id.match_flags `”h]”j)�”}”(hjž h]”hŒssam_device_id.match_flags”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”(jU:j¨Œc-type”eh"]”h$]”h&]”uh1jhjœ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”ja:Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j\jwwjn:Œssam_device_id”uh1hh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´Kµhj” ubhŒ member.”…”�”}”(hj” h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j» h´Kµ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³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´K¹hjåubhþ)�”}”(hŒqReturns ``true`` if the given UID is compatible to the match rule described by the given ID, ``false`` otherwise.”h]”(hŒReturns ”…”�”}”(hjÞ h²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞ ubhŒM if the given UID is compatible to the match rule described by the given ID, ”…”�”}”(hjÞ h²hh³Nh´Nubj)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞ ubhŒ otherwise.”…”�”}”(hjÞ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´Kºhjåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjbh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ#ssam_device_id_is_null (C function)”Œc.ssam_device_id_is_null”hNt”auh1jhjbh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ=bool ssam_device_id_is_null (const struct ssam_device_id *id)”h]”j1)�”}”(hŒ!h´KÐubjZ)�”}”(hŒssam_device_id_is_null”h]”j`)�”}”(hŒssam_device_id_is_null”h]”hŒssam_device_id_is_null”…”�”}”(hjQ!h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjM!ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj-!h²hh³j>!h´KÐubj)�”}”(hŒ!(const struct ssam_device_id *id)”h]”j)�”}”(hŒconst struct ssam_device_id *id”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjm!h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hji!ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz!h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhji!ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hjˆ!h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hji!ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•!h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhji!ubh)�”}”(hhh]”j`)�”}”(hŒssam_device_id”h]”hŒssam_device_id”…”�”}”(hj¦!h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj£!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¨!Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjS!sbŒc.ssam_device_id_is_null”†”asbuh1hhji!ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ!h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhji!ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÔ!h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhji!ubj`)�”}”(hŒid”h]”hŒid”…”�”}”(hjá!h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hji!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhje!ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj-!h²hh³j>!h´KÐubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj)!h²hh³j>!h´KÐubah}”(h]”j$!ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j>!h´KÐhj&!h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒCheck if a device ID is null.”h]”hŒCheck if a device ID is null.”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´KÐhj"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj&!h²hh³j>!h´KÐubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j#"j¯j#"j°‰j±‰j²‰uh1j%h²hhjbh³Nh´Nubj´)�”}”(hX>**Parameters** ``const struct ssam_device_id *id`` The device ID to check. **Description** Check if a given device ID is null, i.e. all zeros. Used to check for the end of ``MODULE_DEVICE_TABLE(ssam, ...)`` or similar lists. **Return** Returns ``true`` if the given ID represents a null ID, ``false`` otherwise.”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³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´KÔhj'"ubj)�”}”(hhh]”j)�”}”(hŒ<``const struct ssam_device_id *id`` The device ID to check. ”h]”(j )�”}”(hŒ#``const struct ssam_device_id *id``”h]”j)�”}”(hjL"h]”hŒconst struct ssam_device_id *id”…”�”}”(hjN"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´KÑhjF"ubj))�”}”(hhh]”hþ)�”}”(hŒThe device ID to check.”h]”hŒThe device ID to check.”…”�”}”(hje"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ja"h´KÑhjb"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjF"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³ja"h´KÑhjC"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'"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³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´KÓhj'"ubhþ)�”}”(hŒ…Check if a given device ID is null, i.e. all zeros. Used to check for the end of ``MODULE_DEVICE_TABLE(ssam, ...)`` or similar lists.”h]”(hŒQCheck if a given device ID is null, i.e. all zeros. Used to check for the end of ”…”�”}”(hj�"h²hh³Nh´Nubj)�”}”(hŒ"``MODULE_DEVICE_TABLE(ssam, ...)``”h]”hŒMODULE_DEVICE_TABLE(ssam, ...)”…”�”}”(hj¥"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�"ubhŒ or similar lists.”…”�”}”(hj�"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´KÒ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³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´KÕhj'"ubhþ)�”}”(hŒKReturns ``true`` if the given ID represents a null ID, ``false`` otherwise.”h]”(hŒReturns ”…”�”}”(hjÖ"h²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjÞ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖ"ubhŒ' if the given ID represents a null ID, ”…”�”}”(hjÖ"h²hh³Nh´Nubj)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjð"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖ"ubhŒ otherwise.”…”�”}”(hjÖ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´KÖhj'"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjbh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_bus_register (C function)”Œc.ssam_bus_register”hNt”auh1jhjbh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒint ssam_bus_register (void)”h]”j1)�”}”(hŒint ssam_bus_register(void)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hj)#h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj%#h²hh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´MyubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8#h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj%#h²hh³j7#h´MyubjZ)�”}”(hŒssam_bus_register”h]”j`)�”}”(hŒssam_bus_register”h]”hŒssam_bus_register”…”�”}”(hjJ#h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjF#ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj%#h²hh³j7#h´Myubj)�”}”(hŒ(void)”h]”j)�”}”(hŒvoid”h]”já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjf#h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjb#ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj^#ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj%#h²hh³j7#h´Myubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj!#h²hh³j7#h´Myubah}”(h]”j#ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j7#h´Myhj#h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ/Register and set-up the SSAM client device bus.”h]”hŒ/Register and set-up the SSAM client device bus.”…”�”}”(hj�#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´Myhj�#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj#h²hh³j7#h´Myubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j¨#j¯j¨#j°‰j±‰j²‰uh1j%h²hhjbh³Nh´Nubj´)�”}”(hŒ'**Parameters** ``void`` no arguments”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³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´M}hj¬#ubj)�”}”(hhh]”j)�”}”(hŒ``void`` no arguments”h]”(j )�”}”(hŒ``void``”h]”j)�”}”(hjÑ#h]”hŒvoid”…”�”}”(hjÓ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´MhjË#ubj))�”}”(hhh]”hþ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjê#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´Khjç#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjË#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jæ#h´MhjÈ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjbh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ ssam_bus_unregister (C function)”Œc.ssam_bus_unregister”hNt”auh1jhjbh²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒvoid ssam_bus_unregister (void)”h]”j1)�”}”(hŒvoid ssam_bus_unregister(void)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj+$h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj'$h²hh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´M�ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:$h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj'$h²hh³j9$h´M�ubjZ)�”}”(hŒssam_bus_unregister”h]”j`)�”}”(hŒssam_bus_unregister”h]”hŒssam_bus_unregister”…”�”}”(hjL$h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjH$ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj'$h²hh³j9$h´M�ubj)�”}”(hŒ(void)”h]”j)�”}”(hŒvoid”h]”já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh$h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjd$ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj`$ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj'$h²hh³j9$h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj#$h²hh³j9$h´M�ubah}”(h]”j$ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j9$h´M�hj $h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ&Unregister the SSAM client device bus.”h]”hŒ&Unregister the SSAM client device bus.”…”�”}”(hj’$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´M�hj�$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj $h²hh³j9$h´M�ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jª$j¯jª$j°‰j±‰j²‰uh1j%h²hhjbh³Nh´Nubj´)�”}”(hŒ'**Parameters** ``void`` no arguments”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³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´M…hj®$ubj)�”}”(hhh]”j)�”}”(hŒ``void`` no arguments”h]”(j )�”}”(hŒ``void``”h]”j)�”}”(hjÓ$h]”hŒvoid”…”�”}”(hjÕ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´M‡hjÍ$ubj))�”}”(hhh]”hþ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjì$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ„/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:53: ./drivers/platform/surface/aggregator/bus.c”h´Khjé$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjÍ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jè$h´M‡hjÊ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hjbh²hh³Nh´Nubeh}”(h]”j—ah ]”h"]”Œclient device bus”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K3ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCore”h]”hŒCore”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝj³uh1hÍhj%h²hh³hÇh´K:ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ$ssam_try_set_controller (C function)”Œc.ssam_try_set_controller”hNt”auh1jhj%h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ:int ssam_try_set_controller (struct ssam_controller *ctrl)”h]”j1)�”}”(hŒ9int ssam_try_set_controller(struct ssam_controller *ctrl)”h]”(já)�”}”(hŒint”h]”hŒint”…”�”}”(hjE%h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjA%h²hh³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´KKubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT%h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjA%h²hh³jS%h´KKubjZ)�”}”(hŒssam_try_set_controller”h]”j`)�”}”(hŒssam_try_set_controller”h]”hŒssam_try_set_controller”…”�”}”(hjf%h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjb%ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjA%h²hh³jS%h´KKubj)�”}”(hŒ(struct ssam_controller *ctrl)”h]”j)�”}”(hŒstruct ssam_controller *ctrl”h]”(j7)�”}”(hj:h]”hŒstruct”…”�”}”(hj‚%h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj~%ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj~%ubh)�”}”(hhh]”j`)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj�%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j¢%Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXjh%sbŒc.ssam_try_set_controller”†”asbuh1hhj~%ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ%h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj~%ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÎ%h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj~%ubj`)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjÛ%h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj~%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjz%ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjA%h²hh³jS%h´KKubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj=%h²hh³jS%h´KKubah}”(h]”j8%ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jS%h´KKhj:%h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ)Try to set the main controller reference.”h]”hŒ)Try to set the main controller reference.”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´KKhj&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj:%h²hh³jS%h´KKubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j&j¯j&j°‰j±‰j²‰uh1j%h²hhj%h³Nh´Nubj´)�”}”(hX4**Parameters** ``struct ssam_controller *ctrl`` The controller to which the reference should point. **Description** Set the main controller reference to the given pointer if the reference hasn't been set already. **Return** Returns zero on success or ``-EEXIST`` if the reference has already been set.”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³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´KOhj!&ubj)�”}”(hhh]”j)�”}”(hŒU``struct ssam_controller *ctrl`` The controller to which the reference should point. ”h]”(j )�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjF&h]”hŒstruct ssam_controller *ctrl”…”�”}”(hjH&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjD&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´KLhj@&ubj))�”}”(hhh]”hþ)�”}”(hŒ3The controller to which the reference should point.”h]”hŒ3The controller to which the reference should point.”…”�”}”(hj_&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j[&h´KLhj\&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj@&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j[&h´KLhj=&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!&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³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´KNhj!&ubhþ)�”}”(hŒ`Set the main controller reference to the given pointer if the reference hasn't been set already.”h]”hŒbSet the main controller reference to the given pointer if the reference hasn’t been set already.”…”�”}”(hj—&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´KMhj!&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³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´KPhj!&ubhþ)�”}”(hŒMReturns zero on success or ``-EEXIST`` if the reference has already been set.”h]”(hŒReturns zero on success or ”…”�”}”(hj¾&h²hh³Nh´Nubj)�”}”(hŒ ``-EEXIST``”h]”hŒ-EEXIST”…”�”}”(hjÆ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾&ubhŒ' if the reference has already been set.”…”�”}”(hj¾&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´KQhj!&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj%h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ"ssam_clear_controller (C function)”Œc.ssam_clear_controller”hNt”auh1jhj%h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ!void ssam_clear_controller (void)”h]”j1)�”}”(hŒ void ssam_clear_controller(void)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÿ&h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjû&h²hh³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´KcubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjû&h²hh³j 'h´KcubjZ)�”}”(hŒssam_clear_controller”h]”j`)�”}”(hŒssam_clear_controller”h]”hŒssam_clear_controller”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj'ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjû&h²hh³j 'h´Kcubj)�”}”(hŒ(void)”h]”j)�”}”(hŒvoid”h]”já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj<'h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhj8'ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj4'ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjû&h²hh³j 'h´Kcubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj÷&h²hh³j 'h´Kcubah}”(h]”jò&ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j 'h´Kchjô&h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ+Remove/clear the main controller reference.”h]”hŒ+Remove/clear the main controller reference.”…”�”}”(hjf'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´Kchjc'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjô&h²hh³j 'h´Kcubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j~'j¯j~'j°‰j±‰j²‰uh1j%h²hhj%h³Nh´Nubj´)�”}”(hŒ¼**Parameters** ``void`` no arguments **Description** Clears the main controller reference, i.e. sets it to ``NULL``. This function should be called before the controller is shut down.”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³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´Kghj‚'ubj)�”}”(hhh]”j)�”}”(hŒ``void`` no arguments ”h]”(j )�”}”(hŒ``void``”h]”j)�”}”(hj§'h]”hŒvoid”…”�”}”(hj©'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´Khj¡'ubj))�”}”(hhh]”hþ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(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&]”uh1jh³j¼'h´Khjž'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚'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³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´Khj‚'ubhþ)�”}”(hŒ‚Clears the main controller reference, i.e. sets it to ``NULL``. This function should be called before the controller is shut down.”h]”(hŒ6Clears the main controller reference, i.e. sets it to ”…”�”}”(hjø'h²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjø'ubhŒD. This function should be called before the controller is shut down.”…”�”}”(hjø'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ…/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:60: ./drivers/platform/surface/aggregator/core.c”h´Kdhj‚'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj%h²hh³Nh´Nubeh}”(h]”j¹ah ]”h"]”Œcore”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K:ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Trace Helpers”h]”hŒ Trace Helpers”…”�”}”(hj*(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjÕuh1hÍhj'(h²hh³hÇh´KAubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œssam_trace_ptr_uid (C function)”Œc.ssam_trace_ptr_uid”hNt”auh1jhj'(h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ8void ssam_trace_ptr_uid (const void *ptr, char *uid_str)”h]”j1)�”}”(hŒ7void ssam_trace_ptr_uid(const void *ptr, char *uid_str)”h]”(já)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjQ(h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjM(h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´KiubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`(h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjM(h²hh³j_(h´KiubjZ)�”}”(hŒssam_trace_ptr_uid”h]”j`)�”}”(hŒssam_trace_ptr_uid”h]”hŒssam_trace_ptr_uid”…”�”}”(hjr(h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjn(ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjM(h²hh³j_(h´Kiubj)�”}”(hŒ (const void *ptr, char *uid_str)”h]”(j)�”}”(hŒconst void *ptr”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjŽ(h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjŠ(ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›(h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŠ(ubjá)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj©(h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjŠ(ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·(h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŠ(ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjÅ(h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjŠ(ubj`)�”}”(hŒptr”h]”hŒptr”…”�”}”(hjÒ(h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjŠ(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj†(ubj)�”}”(hŒ char *uid_str”h]”(já)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjë(h²hh³Nh´Nubah}”(h]”h ]”jíah"]”h$]”h&]”uh1jàhjç(ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù(h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjç(ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjç(ubj`)�”}”(hŒuid_str”h]”hŒuid_str”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjç(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj†(ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjM(h²hh³j_(h´Kiubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjI(h²hh³j_(h´Kiubah}”(h]”jD(ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j_(h´KihjF(h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ0Convert the pointer to a non-pointer UID string.”h]”hŒ0Convert the pointer to a non-pointer UID string.”…”�”}”(hj>)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´Kihj;)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjF(h²hh³j_(h´Kiubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jV)j¯jV)j°‰j±‰j²‰uh1j%h²hhj'(h³Nh´Nubj´)�”}”(hX7**Parameters** ``const void *ptr`` The pointer to convert. ``char *uid_str`` A buffer of length SSAM_PTR_UID_LEN where the UID will be stored. **Description** Converts the given pointer into a UID string that is safe to be shared with userspace and logs, i.e. doesn't give away the real memory location.”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj`)h]”hŒ Parameters”…”�”}”(hjb)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj^)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´KmhjZ)ubj)�”}”(hhh]”(j)�”}”(hŒ,``const void *ptr`` The pointer to convert. ”h]”(j )�”}”(hŒ``const void *ptr``”h]”j)�”}”(hj)h]”hŒconst void *ptr”…”�”}”(hj�)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj})ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´Kjhjy)ubj))�”}”(hhh]”hþ)�”}”(hŒThe pointer to convert.”h]”hŒThe pointer to convert.”…”�”}”(hj˜)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j”)h´Kjhj•)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjy)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j”)h´Kjhjv)ubj)�”}”(hŒT``char *uid_str`` A buffer of length SSAM_PTR_UID_LEN where the UID will be stored. ”h]”(j )�”}”(hŒ``char *uid_str``”h]”j)�”}”(hj¸)h]”hŒ char *uid_str”…”�”}”(hjº)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´Kkhj²)ubj))�”}”(hhh]”hþ)�”}”(hŒAA buffer of length SSAM_PTR_UID_LEN where the UID will be stored.”h]”hŒAA buffer of length SSAM_PTR_UID_LEN where the UID will be stored.”…”�”}”(hjÑ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÍ)h´KkhjÎ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj²)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÍ)h´Kkhjv)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjZ)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³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´KmhjZ)ubhþ)�”}”(hŒ�Converts the given pointer into a UID string that is safe to be shared with userspace and logs, i.e. doesn't give away the real memory location.”h]”hŒ’Converts the given pointer into a UID string that is safe to be shared with userspace and logs, i.e. doesn’t give away the real memory location.”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´KlhjZ)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj'(h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ&ssam_trace_get_packet_seq (C function)”Œc.ssam_trace_get_packet_seq”hNt”auh1jhj'(h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ:u16 ssam_trace_get_packet_seq (const struct ssh_packet *p)”h]”j1)�”}”(hŒ9u16 ssam_trace_get_packet_seq(const struct ssh_packet *p)”h]”(h)�”}”(hhh]”j`)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj;*h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj8*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j=*Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssam_trace_get_packet_seq”sbŒc.ssam_trace_get_packet_seq”†”asbuh1hhj4*h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K|ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]*h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj4*h²hh³j\*h´K|ubjZ)�”}”(hŒssam_trace_get_packet_seq”h]”j`)�”}”(hjY*h]”hŒssam_trace_get_packet_seq”…”�”}”(hjo*h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjk*ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj4*h²hh³j\*h´K|ubj)�”}”(hŒ(const struct ssh_packet *p)”h]”j)�”}”(hŒconst struct ssh_packet *p”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjŠ*h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj†*ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—*h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj†*ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hj¥*h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj†*ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²*h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj†*ubh)�”}”(hhh]”j`)�”}”(hŒ ssh_packet”h]”hŒ ssh_packet”…”�”}”(hjÃ*h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÀ*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÅ*Œmodname”NŒ classname”Nj\j_)�”}”jb]”jW*Œc.ssam_trace_get_packet_seq”†”asbuh1hhj†*ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá*h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj†*ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjï*h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj†*ubj`)�”}”(hj…h]”hŒp”…”�”}”(hjü*h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj†*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‚*ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj4*h²hh³j\*h´K|ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj0*h²hh³j\*h´K|ubah}”(h]”j+*ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j\*h´K|hj-*h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒRead the packet's sequence ID.”h]”hŒ Read the packet’s sequence ID.”…”�”}”(hj%+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K|hj"+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj-*h²hh³j\*h´K|ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j=+j¯j=+j°‰j±‰j²‰uh1j%h²hhj'(h³Nh´Nubj´)�”}”(hŒ½**Parameters** ``const struct ssh_packet *p`` The packet. **Return** Returns the packet's sequence ID (SEQ) field if present, or ``SSAM_SEQ_NOT_APPLICABLE`` if not (e.g. flush packet).”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjG+h]”hŒ Parameters”…”�”}”(hjI+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjE+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K€hjA+ubj)�”}”(hhh]”j)�”}”(hŒ+``const struct ssh_packet *p`` The packet. ”h]”(j )�”}”(hŒ``const struct ssh_packet *p``”h]”j)�”}”(hjf+h]”hŒconst struct ssh_packet *p”…”�”}”(hjh+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K}hj`+ubj))�”}”(hhh]”hþ)�”}”(hŒ The packet.”h]”hŒ The packet.”…”�”}”(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&]”uh1jh³j{+h´K}hj]+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA+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³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´KhjA+ubhþ)�”}”(hŒsReturns the packet's sequence ID (SEQ) field if present, or ``SSAM_SEQ_NOT_APPLICABLE`` if not (e.g. flush packet).”h]”(hŒ>Returns the packet’s sequence ID (SEQ) field if present, or ”…”�”}”(hj·+h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SEQ_NOT_APPLICABLE``”h]”hŒSSAM_SEQ_NOT_APPLICABLE”…”�”}”(hj¿+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·+ubhŒ if not (e.g. flush packet).”…”�”}”(hj·+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´KhjA+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj'(h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ&ssam_trace_get_request_id (C function)”Œc.ssam_trace_get_request_id”hNt”auh1jhj'(h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ:u32 ssam_trace_get_request_id (const struct ssh_packet *p)”h]”j1)�”}”(hŒ9u32 ssam_trace_get_request_id(const struct ssh_packet *p)”h]”(h)�”}”(hhh]”j`)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjû+h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjø+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jý+Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssam_trace_get_request_id”sbŒc.ssam_trace_get_request_id”†”asbuh1hhjô+h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K‹ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjô+h²hh³j,h´K‹ubjZ)�”}”(hŒssam_trace_get_request_id”h]”j`)�”}”(hj,h]”hŒssam_trace_get_request_id”…”�”}”(hj/,h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj+,ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjô+h²hh³j,h´K‹ubj)�”}”(hŒ(const struct ssh_packet *p)”h]”j)�”}”(hŒconst struct ssh_packet *p”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjJ,h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjF,ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjF,ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hje,h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjF,ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjF,ubh)�”}”(hhh]”j`)�”}”(hŒ ssh_packet”h]”hŒ ssh_packet”…”�”}”(hjƒ,h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj€,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j…,Œmodname”NŒ classname”Nj\j_)�”}”jb]”j,Œc.ssam_trace_get_request_id”†”asbuh1hhjF,ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjF,ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj¯,h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjF,ubj`)�”}”(hj…h]”hŒp”…”�”}”(hj¼,h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjF,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjB,ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjô+h²hh³j,h´K‹ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjð+h²hh³j,h´K‹ubah}”(h]”jë+ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j,h´K‹hjí+h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒRead the packet's request ID.”h]”hŒRead the packet’s request ID.”…”�”}”(hjå,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K‹hjâ,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjí+h²hh³j,h´K‹ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®jý,j¯jý,j°‰j±‰j²‰uh1j%h²hhj'(h³Nh´Nubj´)�”}”(hŒù**Parameters** ``const struct ssh_packet *p`` The packet. **Return** Returns the packet's request ID (RQID) field if the packet represents a request with command data, or ``SSAM_RQID_NOT_APPLICABLE`` if not (e.g. flush request, control packet).”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³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K�hj-ubj)�”}”(hhh]”j)�”}”(hŒ+``const struct ssh_packet *p`` The packet. ”h]”(j )�”}”(hŒ``const struct ssh_packet *p``”h]”j)�”}”(hj&-h]”hŒconst struct ssh_packet *p”…”�”}”(hj(-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj$-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´KŒhj -ubj))�”}”(hhh]”hþ)�”}”(hŒ The packet.”h]”hŒ The packet.”…”�”}”(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&]”uh1jh³j;-h´KŒhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-ubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hja-h]”hŒReturn”…”�”}”(hjc-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj_-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´KŽhj-ubhþ)�”}”(hŒ¯Returns the packet's request ID (RQID) field if the packet represents a request with command data, or ``SSAM_RQID_NOT_APPLICABLE`` if not (e.g. flush request, control packet).”h]”(hŒhReturns the packet’s request ID (RQID) field if the packet represents a request with command data, or ”…”�”}”(hjw-h²hh³Nh´Nubj)�”}”(hŒ``SSAM_RQID_NOT_APPLICABLE``”h]”hŒSSAM_RQID_NOT_APPLICABLE”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjw-ubhŒ- if not (e.g. flush request, control packet).”…”�”}”(hjw-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´KŽhj-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj'(h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ'ssam_trace_get_request_tid (C function)”Œc.ssam_trace_get_request_tid”hNt”auh1jhj'(h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ;u32 ssam_trace_get_request_tid (const struct ssh_packet *p)”h]”j1)�”}”(hŒ:u32 ssam_trace_get_request_tid(const struct ssh_packet *p)”h]”(h)�”}”(hhh]”j`)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj»-h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¸-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j½-Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssam_trace_get_request_tid”sbŒc.ssam_trace_get_request_tid”†”asbuh1hhj´-h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K›ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ-h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj´-h²hh³jÜ-h´K›ubjZ)�”}”(hŒssam_trace_get_request_tid”h]”j`)�”}”(hjÙ-h]”hŒssam_trace_get_request_tid”…”�”}”(hjï-h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjë-ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj´-h²hh³jÜ-h´K›ubj)�”}”(hŒ(const struct ssh_packet *p)”h]”j)�”}”(hŒconst struct ssh_packet *p”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj.ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj.ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hj%.h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj.ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2.h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj.ubh)�”}”(hhh]”j`)�”}”(hŒ ssh_packet”h]”hŒ ssh_packet”…”�”}”(hjC.h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj@.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jE.Œmodname”NŒ classname”Nj\j_)�”}”jb]”j×-Œc.ssam_trace_get_request_tid”†”asbuh1hhj.ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja.h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj.ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjo.h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj.ubj`)�”}”(hj…h]”hŒp”…”�”}”(hj|.h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj.ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj´-h²hh³jÜ-h´K›ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj°-h²hh³jÜ-h´K›ubah}”(h]”j«-ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jÜ-h´K›hj­-h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ$Read the packet's request target ID.”h]”hŒ&Read the packet’s request target ID.”…”�”}”(hj¥.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K›hj¢.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj­-h²hh³jÜ-h´K›ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j½.j¯j½.j°‰j±‰j²‰uh1j%h²hhj'(h³Nh´Nubj´)�”}”(hX**Parameters** ``const struct ssh_packet *p`` The packet. **Return** Returns the packet's request target ID (TID) field if the packet represents a request with command data, or ``SSAM_SSH_TID_NOT_APPLICABLE`` if not (e.g. flush request, control packet).”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³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´KŸhjÁ.ubj)�”}”(hhh]”j)�”}”(hŒ+``const struct ssh_packet *p`` The packet. ”h]”(j )�”}”(hŒ``const struct ssh_packet *p``”h]”j)�”}”(hjæ.h]”hŒconst struct ssh_packet *p”…”�”}”(hjè.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjä.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´Kœhjà.ubj))�”}”(hhh]”hþ)�”}”(hŒ The packet.”h]”hŒ The packet.”…”�”}”(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&]”uh1jh³jû.h´KœhjÝ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁ.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³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´KžhjÁ.ubhþ)�”}”(hŒ¸Returns the packet's request target ID (TID) field if the packet represents a request with command data, or ``SSAM_SSH_TID_NOT_APPLICABLE`` if not (e.g. flush request, control packet).”h]”(hŒnReturns the packet’s request target ID (TID) field if the packet represents a request with command data, or ”…”�”}”(hj7/h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_TID_NOT_APPLICABLE``”h]”hŒSSAM_SSH_TID_NOT_APPLICABLE”…”�”}”(hj?/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7/ubhŒ- if not (e.g. flush request, control packet).”…”�”}”(hj7/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´KžhjÁ.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj'(h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ'ssam_trace_get_request_sid (C function)”Œc.ssam_trace_get_request_sid”hNt”auh1jhj'(h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ;u32 ssam_trace_get_request_sid (const struct ssh_packet *p)”h]”j1)�”}”(hŒ:u32 ssam_trace_get_request_sid(const struct ssh_packet *p)”h]”(h)�”}”(hhh]”j`)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj{/h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjx/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j}/Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssam_trace_get_request_sid”sbŒc.ssam_trace_get_request_sid”†”asbuh1hhjt/h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K«ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjt/h²hh³jœ/h´K«ubjZ)�”}”(hŒssam_trace_get_request_sid”h]”j`)�”}”(hj™/h]”hŒssam_trace_get_request_sid”…”�”}”(hj¯/h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj«/ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjt/h²hh³jœ/h´K«ubj)�”}”(hŒ(const struct ssh_packet *p)”h]”j)�”}”(hŒconst struct ssh_packet *p”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjÊ/h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÆ/ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×/h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÆ/ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hjå/h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hjÆ/ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò/h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÆ/ubh)�”}”(hhh]”j`)�”}”(hŒ ssh_packet”h]”hŒ ssh_packet”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j0Œmodname”NŒ classname”Nj\j_)�”}”jb]”j—/Œc.ssam_trace_get_request_sid”†”asbuh1hhjÆ/ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!0h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÆ/ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hj/0h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhjÆ/ubj`)�”}”(hj…h]”hŒp”…”�”}”(hj<0h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÆ/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÂ/ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjt/h²hh³jœ/h´K«ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhjp/h²hh³jœ/h´K«ubah}”(h]”jk/ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³jœ/h´K«hjm/h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ$Read the packet's request source ID.”h]”hŒ&Read the packet’s request source ID.”…”�”}”(hje0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K«hjb0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjm/h²hh³jœ/h´K«ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j}0j¯j}0j°‰j±‰j²‰uh1j%h²hhj'(h³Nh´Nubj´)�”}”(hX**Parameters** ``const struct ssh_packet *p`` The packet. **Return** Returns the packet's request source ID (SID) field if the packet represents a request with command data, or ``SSAM_SSH_TID_NOT_APPLICABLE`` if not (e.g. flush request, control packet).”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hj‡0h]”hŒ Parameters”…”�”}”(hj‰0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj…0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K¯hj�0ubj)�”}”(hhh]”j)�”}”(hŒ+``const struct ssh_packet *p`` The packet. ”h]”(j )�”}”(hŒ``const struct ssh_packet *p``”h]”j)�”}”(hj¦0h]”hŒconst struct ssh_packet *p”…”�”}”(hj¨0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K¬hj 0ubj))�”}”(hhh]”hþ)�”}”(hŒ The packet.”h]”hŒ The packet.”…”�”}”(hj¿0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j»0h´K¬hj¼0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj 0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j»0h´K¬hj�0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�0ubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hjá0h]”hŒReturn”…”�”}”(hjã0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjß0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K®hj�0ubhþ)�”}”(hŒ¸Returns the packet's request source ID (SID) field if the packet represents a request with command data, or ``SSAM_SSH_TID_NOT_APPLICABLE`` if not (e.g. flush request, control packet).”h]”(hŒnReturns the packet’s request source ID (SID) field if the packet represents a request with command data, or ”…”�”}”(hj÷0h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_TID_NOT_APPLICABLE``”h]”hŒSSAM_SSH_TID_NOT_APPLICABLE”…”�”}”(hjÿ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷0ubhŒ- if not (e.g. flush request, control packet).”…”�”}”(hj÷0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K®hj�0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj'(h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j!Œ&ssam_trace_get_request_tc (C function)”Œc.ssam_trace_get_request_tc”hNt”auh1jhj'(h²hh³Nh´Nubj&)�”}”(hhh]”(j+)�”}”(hŒ:u32 ssam_trace_get_request_tc (const struct ssh_packet *p)”h]”j1)�”}”(hŒ9u32 ssam_trace_get_request_tc(const struct ssh_packet *p)”h]”(h)�”}”(hhh]”j`)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj;1h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj81ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”j=1Œmodname”NŒ classname”Nj\j_)�”}”jb]”je)�”}”jXŒssam_trace_get_request_tc”sbŒc.ssam_trace_get_request_tc”†”asbuh1hhj41h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K»ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]1h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj41h²hh³j\1h´K»ubjZ)�”}”(hŒssam_trace_get_request_tc”h]”j`)�”}”(hjY1h]”hŒssam_trace_get_request_tc”…”�”}”(hjo1h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjk1ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj41h²hh³j\1h´K»ubj)�”}”(hŒ(const struct ssh_packet *p)”h]”j)�”}”(hŒconst struct ssh_packet *p”h]”(j7)�”}”(hjfh]”hŒconst”…”�”}”(hjŠ1h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj†1ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—1h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj†1ubj7)�”}”(hj:h]”hŒstruct”…”�”}”(hj¥1h²hh³Nh´Nubah}”(h]”h ]”jCah"]”h$]”h&]”uh1j6hj†1ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²1h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj†1ubh)�”}”(hhh]”j`)�”}”(hŒ ssh_packet”h]”hŒ ssh_packet”…”�”}”(hjÃ1h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÀ1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¨Œreftype”jXŒ reftarget”jÅ1Œmodname”NŒ classname”Nj\j_)�”}”jb]”jW1Œc.ssam_trace_get_request_tc”†”asbuh1hhj†1ubjI)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá1h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj†1ubjy)�”}”(hj|h]”hŒ*”…”�”}”(hjï1h²hh³Nh´Nubah}”(h]”h ]”j…ah"]”h$]”h&]”uh1jxhj†1ubj`)�”}”(hj…h]”hŒp”…”�”}”(hjü1h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj†1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‚1ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj41h²hh³j\1h´K»ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj}ˆuh1j0j~jhj01h²hh³j\1h´K»ubah}”(h]”j+1ah ]”(jƒj„eh"]”h$]”h&]”jˆˆj‰)jŠhuh1j*h³j\1h´K»hj-1h²hubjŒ)�”}”(hhh]”hþ)�”}”(hŒ*Read the packet's request target category.”h]”hŒ,Read the packet’s request target category.”…”�”}”(hj%2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K»hj"2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj-1h²hh³j\1h´K»ubeh}”(h]”h ]”(j¨Œfunction”eh"]”h$]”h&]”j­j¨j®j=2j¯j=2j°‰j±‰j²‰uh1j%h²hhj'(h³Nh´Nubj´)�”}”(hX**Parameters** ``const struct ssh_packet *p`` The packet. **Return** Returns the packet's request target category (TC) field if the packet represents a request with command data, or ``SSAM_SSH_TC_NOT_APPLICABLE`` if not (e.g. flush request, control packet).”h]”(hþ)�”}”(hŒ**Parameters**”h]”j¾)�”}”(hjG2h]”hŒ Parameters”…”�”}”(hjI2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjE2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K¿hjA2ubj)�”}”(hhh]”j)�”}”(hŒ+``const struct ssh_packet *p`` The packet. ”h]”(j )�”}”(hŒ``const struct ssh_packet *p``”h]”j)�”}”(hjf2h]”hŒconst struct ssh_packet *p”…”�”}”(hjh2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K¼hj`2ubj))�”}”(hhh]”hþ)�”}”(hŒ The packet.”h]”hŒ The packet.”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j{2h´K¼hj|2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj`2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j{2h´K¼hj]2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjA2ubhþ)�”}”(hŒ **Return**”h]”j¾)�”}”(hj¡2h]”hŒReturn”…”�”}”(hj£2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjŸ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K¾hjA2ubhþ)�”}”(hŒ¼Returns the packet's request target category (TC) field if the packet represents a request with command data, or ``SSAM_SSH_TC_NOT_APPLICABLE`` if not (e.g. flush request, control packet).”h]”(hŒsReturns the packet’s request target category (TC) field if the packet represents a request with command data, or ”…”�”}”(hj·2h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_TC_NOT_APPLICABLE``”h]”hŒSSAM_SSH_TC_NOT_APPLICABLE”…”�”}”(hj¿2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·2ubhŒ- if not (e.g. flush request, control packet).”…”�”}”(hj·2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/internal-api:67: ./drivers/platform/surface/aggregator/trace.h”h´K¾hjA2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j³hj'(h²hh³Nh´Nubeh}”(h]”jÛah ]”h"]”Œ trace helpers”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KAubeh}”(h]”jah ]”h"]”Œinternal api documentation”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j3Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jê2jjjüj mj1j�‹jSj_juj%j—j$(j¹jã2jÛuŒ nametypes”}”(jê2‰j‰j m‰j�‹‰j_‰j%‰j$(‰jã2‰uh}”(jhÊjüháj1jj#j,jÓjØjvj{jD jI j× jÜ jê jï jNjSjjjájæjVj[jpjuj…jŠjã"jè"j_$jd$jï&jô&jx(j}(jT*jY*j¯+j´+j4.j9.j¹0j¾0j—3jœ3js5jx5jÎ6jÓ6jï9jô9jú:jÿ:j<j<jHCjMCjEj Ej…FjŠFj¬Gj±GjÓHjØHjúIjÿIj"Kj'KjILjNLjpMjuMj—NjœNjùQjþQjûRjSjýSjTjWjWjZXj_XjÛYjàYj\[ja[jÝ\jâ\jc_jh_jajaj‚bj‡bjdjdjùfjþfj­hj²hj§kj¬kjSj#mj@mjEmjGnjLnjbojgojûsjtj·uj¼uj™wjžwjÀxjÅxjG{jL{j ~j~j8�j=�jM„jR„jÎ…jÓ…jO‡jT‡jÕ‰jÚ‰juj„‹j¡‹j¦‹jªŒj¯Œj³�j¸�jõŽjúŽjr�jw�j_’jd’j6”j;”j?•jD•jt—jy—j`™je™jt›jy›jðžjõžjæ¡jë¡jA£jF£j›¤j ¤j.¦j3¦jˆ§j�§j©j ©j�«j¢«j$®j)®j™°jž°jû²j³j ´j¥´jûµj¶jV·j[·j˜¸j�¸jLºjQºjÒ½j×½j4Áj9Áj"Äj'Äj|Åj�ÅjÉjÉjmÊjrÊjÈËjÍËjÊÌjÏÌjÌÍjÑÍj'Ïj,Ïj‡ÑjŒÑj‹Ój�ÓjXÕj]Õj±Öj¶Öj“Ùj˜Ùj–Ûj›ÛjùÝjþÝj°ßjµßj´áj¹áj¸ãj½ãj9åj>åjÈæjÍæjñèjöèjëj ëjEíjJíj’ïj—ïjEñjJñjój ój•ôjšôj^öjcöjøjøjÌùjÑùj@ýjEýj´j¹jÃjÈjªj¯j‚j‡jZj_j2 j7 jH jM j@jEjj j–j›j:j?j»jÀjxj}jùjþj°jµj—jbjj„j$!j)!j#j!#j$j#$j¹j%j8%j=%jò&j÷&jÛj'(jD(jI(j+*j0*jë+jð+j«-j°-jk/jp/j+1j01hÞjj+j"jMjDjojfj‘jˆj³jªjÕjÌuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”j3Ks…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.