€•Œ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”Œubah}”(h]”h ]”h"]”h$]”h&]”uh1høhjubhù)�”}”(hhh]”hþ)�”}”(hhh]”j)�”}”(hhh]”hŒ Client Bus and Client Device API”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”Œrefid”Œ client-bus-and-client-device-api”uh1jhjcubah}”(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ŒSerial Hub Communication”h]”hŒSerial Hub Communication”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝj+uh1hÍhj�h²hh³hÇh´K ubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œssh_frame_type (C enum)”Œc.ssh_frame_type”hNt”auh1j®hj�h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒssh_frame_type”h]”hŒdesc_signature_line”“”)�”}”(hŒenum ssh_frame_type”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jÐhjÌh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jâhjÌh²hh³jáh´KubhŒ desc_name”“”)�”}”(hŒssh_frame_type”h]”hŒ desc_sig_name”“”)�”}”(hjÈh]”hŒssh_frame_type”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jùhjõubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jóhjÌh²hh³jáh´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jÊŒsphinx_line_type”Œ declarator”hjÆh²hh³jáh´Kubah}”(h]”j½ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jÄh³jáh´KhjÁh²hubhŒ desc_content”“”)�”}”(hhh]”hþ)�”}”(hŒFrame types for SSH frames.”h]”hŒFrame types for SSH frames.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Khj'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÁh²hh³jáh´Kubeh}”(h]”h ]”(Œc”Œenum”eh"]”h$]”h&]”Œdomain”jBŒobjtype”jCŒdesctype”jCŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j¿h²hhj�h³Nh´NubhŒ container”“”)�”}”(hX’**Constants** ``SSH_FRAME_TYPE_DATA_SEQ`` Indicates a data frame, followed by a payload with the length specified in the ``struct ssh_frame.len`` field. This frame is sequenced, meaning that an ACK is required. ``SSH_FRAME_TYPE_DATA_NSQ`` Same as ``SSH_FRAME_TYPE_DATA_SEQ``, but unsequenced, meaning that the message does not have to be ACKed. ``SSH_FRAME_TYPE_ACK`` Indicates an ACK message. ``SSH_FRAME_TYPE_NAK`` Indicates an error response for previously sent frame. In general, this means that the frame and/or payload is malformed, e.g. a CRC is wrong. For command-type payloads, this can also mean that the command is invalid.”h]”(hþ)�”}”(hŒ **Constants**”h]”hŒstrong”“”)�”}”(hjUh]”hŒ Constants”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KhjOubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒÅ``SSH_FRAME_TYPE_DATA_SEQ`` Indicates a data frame, followed by a payload with the length specified in the ``struct ssh_frame.len`` field. This frame is sequenced, meaning that an ACK is required. ”h]”(hŒterm”“”)�”}”(hŒ``SSH_FRAME_TYPE_DATA_SEQ``”h]”hŒliteral”“”)�”}”(hj|h]”hŒSSH_FRAME_TYPE_DATA_SEQ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K"hjtubhŒ definition”“”)�”}”(hhh]”hþ)�”}”(hŒ¨Indicates a data frame, followed by a payload with the length specified in the ``struct ssh_frame.len`` field. This frame is sequenced, meaning that an ACK is required.”h]”(hŒOIndicates a data frame, followed by a payload with the length specified in the ”…”�”}”(hj™h²hh³Nh´Nubj)�”}”(hŒ``struct ssh_frame.len``”h]”hŒstruct ssh_frame.len”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj™ubhŒA field. This frame is sequenced, meaning that an ACK is required.”…”�”}”(hj™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j“h´K"hjoubjs)�”}”(hŒ†``SSH_FRAME_TYPE_DATA_NSQ`` Same as ``SSH_FRAME_TYPE_DATA_SEQ``, but unsequenced, meaning that the message does not have to be ACKed. ”h]”(jy)�”}”(hŒ``SSH_FRAME_TYPE_DATA_NSQ``”h]”j)�”}”(hjÌh]”hŒSSH_FRAME_TYPE_DATA_NSQ”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K&hjÆubj•)�”}”(hhh]”hþ)�”}”(hŒiSame as ``SSH_FRAME_TYPE_DATA_SEQ``, but unsequenced, meaning that the message does not have to be ACKed.”h]”(hŒSame as ”…”�”}”(hjåh²hh³Nh´Nubj)�”}”(hŒ``SSH_FRAME_TYPE_DATA_SEQ``”h]”hŒSSH_FRAME_TYPE_DATA_SEQ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjåubhŒF, but unsequenced, meaning that the message does not have to be ACKed.”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K%hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jáh´K&hjoubjs)�”}”(hŒ1``SSH_FRAME_TYPE_ACK`` Indicates an ACK message. ”h]”(jy)�”}”(hŒ``SSH_FRAME_TYPE_ACK``”h]”j)�”}”(hjh]”hŒSSH_FRAME_TYPE_ACK”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K)hjubj•)�”}”(hhh]”hþ)�”}”(hŒIndicates an ACK message.”h]”hŒIndicates an ACK message.”…”�”}”(hj1h²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&]”uh1jrh³j-h´K)hjoubjs)�”}”(hŒð``SSH_FRAME_TYPE_NAK`` Indicates an error response for previously sent frame. In general, this means that the frame and/or payload is malformed, e.g. a CRC is wrong. For command-type payloads, this can also mean that the command is invalid.”h]”(jy)�”}”(hŒ``SSH_FRAME_TYPE_NAK``”h]”j)�”}”(hjQh]”hŒSSH_FRAME_TYPE_NAK”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K.hjKubj•)�”}”(hhh]”hþ)�”}”(hŒÙIndicates an error response for previously sent frame. In general, this means that the frame and/or payload is malformed, e.g. a CRC is wrong. For command-type payloads, this can also mean that the command is invalid.”h]”hŒÙIndicates an error response for previously sent frame. In general, this means that the frame and/or payload is malformed, e.g. a CRC is wrong. For command-type payloads, this can also mean that the command is invalid.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K,hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jfh´K.hjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_frame (C struct)”Œ c.ssh_frame”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ ssh_frame”h]”jË)�”}”(hŒstruct ssh_frame”h]”(jÑ)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(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/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K4ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj§h²hh³j¹h´K4ubjô)�”}”(hŒ ssh_frame”h]”jú)�”}”(hj¥h]”hŒ ssh_frame”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÈubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj§h²hh³j¹h´K4ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj£h²hh³j¹h´K4ubah}”(h]”jžah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j¹h´K4hj h²hubj&)�”}”(hhh]”hþ)�”}”(hŒSSH communication frame.”h]”hŒSSH communication frame.”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K5hjëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj h²hh³j¹h´K4ubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHjjIjjJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hX�**Definition**:: struct ssh_frame { u8 type; __le16 len; u8 seq; }; **Members** ``type`` The type of the frame. See :c:type:`enum ssh_frame_type `. ``len`` The length of the frame payload directly following the CRC for this frame. Does not include the final CRC for that payload. ``seq`` The sequence number for this message/exchange.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjubhŒ:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K9hj ubhŒ literal_block”“”)�”}”(hŒ>struct ssh_frame { u8 type; __le16 len; u8 seq; };”h]”hŒ>struct ssh_frame { u8 type; __le16 len; u8 seq; };”…”�”}”hj-sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K;hj ubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hj>h]”hŒMembers”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KAhj ubjn)�”}”(hhh]”(js)�”}”(hŒT``type`` The type of the frame. See :c:type:`enum ssh_frame_type `. ”h]”(jy)�”}”(hŒ``type``”h]”j)�”}”(hj]h]”hŒtype”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K7hjWubj•)�”}”(hhh]”hþ)�”}”(hŒJThe type of the frame. See :c:type:`enum ssh_frame_type `.”h]”(hŒThe type of the frame. See ”…”�”}”(hjvh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`enum ssh_frame_type `”h]”j)�”}”(hj€h]”hŒenum ssh_frame_type”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”(Œxref”jBŒc-type”eh"]”h$]”h&]”uh1j~hj~ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ(driver-api/surface_aggregator/client-api”Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”sbŒ reftarget”Œssh_frame_type”uh1hh³jrh´K7hjvubhŒ.”…”�”}”(hjvh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jrh´K7hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jrh´K7hjTubjs)�”}”(hŒ„``len`` The length of the frame payload directly following the CRC for this frame. Does not include the final CRC for that payload. ”h]”(jy)�”}”(hŒ``len``”h]”j)�”}”(hjÄh]”hŒlen”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K9hj¾ubj•)�”}”(hhh]”hþ)�”}”(hŒ{The length of the frame payload directly following the CRC for this frame. Does not include the final CRC for that payload.”h]”hŒ{The length of the frame payload directly following the CRC for this frame. Does not include the final CRC for that payload.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K8hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÙh´K9hjTubjs)�”}”(hŒ6``seq`` The sequence number for this message/exchange.”h]”(jy)�”}”(hŒ``seq``”h]”j)�”}”(hjþh]”hŒseq”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K9hjøubj•)�”}”(hhh]”hþ)�”}”(hŒ.The sequence number for this message/exchange.”h]”hŒ.The sequence number for this message/exchange.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K:hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jh´K9hjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_payload_type (C enum)”Œc.ssh_payload_type”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssh_payload_type”h]”jË)�”}”(hŒenum ssh_payload_type”h]”(jÑ)�”}”(hjÔh]”hŒenum”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjTh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K@ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjTh²hh³jeh´K@ubjô)�”}”(hŒssh_payload_type”h]”jú)�”}”(hjRh]”hŒssh_payload_type”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjtubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjTh²hh³jeh´K@ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjPh²hh³jeh´K@ubah}”(h]”jKah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jeh´K@hjMh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ#Type indicator for the SSH payload.”h]”hŒ#Type indicator for the SSH payload.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KLhj—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjMh²hh³jeh´K@ubeh}”(h]”h ]”(jBŒenum”eh"]”h$]”h&]”jGjBjHj²jIj²jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hŒi**Constants** ``SSH_PLD_TYPE_CMD`` The payload is a command structure with optional command payload.”h]”(hþ)�”}”(hŒ **Constants**”h]”jX)�”}”(hj¼h]”hŒ Constants”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KPhj¶ubjn)�”}”(hhh]”js)�”}”(hŒV``SSH_PLD_TYPE_CMD`` The payload is a command structure with optional command payload.”h]”(jy)�”}”(hŒ``SSH_PLD_TYPE_CMD``”h]”j)�”}”(hjÛh]”hŒSSH_PLD_TYPE_CMD”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KShjÕubj•)�”}”(hhh]”hþ)�”}”(hŒAThe payload is a command structure with optional command payload.”h]”hŒAThe payload is a command structure with optional command payload.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jðh´KShjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jðh´KShjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_command (C struct)”Œ c.ssh_command”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ ssh_command”h]”jË)�”}”(hŒstruct ssh_command”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj0h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KYubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj0h²hh³jAh´KYubjô)�”}”(hŒ ssh_command”h]”jú)�”}”(hj.h]”hŒ ssh_command”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjPubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj0h²hh³jAh´KYubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj,h²hh³jAh´KYubah}”(h]”j'ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jAh´KYhj)h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ Payload of a command-type frame.”h]”hŒ Payload of a command-type frame.”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KUhjsh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj)h²hh³jAh´KYubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHjŽjIjŽjJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hXd**Definition**:: struct ssh_command { u8 type; u8 tc; u8 tid; u8 sid; u8 iid; __le16 rqid; u8 cid; }; **Members** ``type`` The type of the payload. See :c:type:`enum ssh_payload_type `. Should be SSH_PLD_TYPE_CMD for this struct. ``tc`` Command target category. ``tid`` Target ID. Indicates the target of the message. ``sid`` Source ID. Indicates the source of the message. ``iid`` Instance ID. ``rqid`` Request ID. Used to match requests with responses and differentiate between responses and events. ``cid`` Command ID.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj–ubhŒ:”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KYhj’ubj,)�”}”(hŒpstruct ssh_command { u8 type; u8 tc; u8 tid; u8 sid; u8 iid; __le16 rqid; u8 cid; };”h]”hŒpstruct ssh_command { u8 type; u8 tc; u8 tid; u8 sid; u8 iid; __le16 rqid; u8 cid; };”…”�”}”hj³sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K[hj’ubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hjÄh]”hŒMembers”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kehj’ubjn)�”}”(hhh]”(js)�”}”(hŒ†``type`` The type of the payload. See :c:type:`enum ssh_payload_type `. Should be SSH_PLD_TYPE_CMD for this struct. ”h]”(jy)�”}”(hŒ``type``”h]”j)�”}”(hjãh]”hŒtype”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KXhjÝubj•)�”}”(hhh]”hþ)�”}”(hŒ|The type of the payload. See :c:type:`enum ssh_payload_type `. Should be SSH_PLD_TYPE_CMD for this struct.”h]”(hŒThe type of the payload. See ”…”�”}”(hjüh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`enum ssh_payload_type `”h]”j)�”}”(hjh]”hŒenum ssh_payload_type”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssh_payload_type”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KWhjüubhŒ-. Should be SSH_PLD_TYPE_CMD for this struct.”…”�”}”(hjüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j#h´KWhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jøh´KXhjÚubjs)�”}”(hŒ ``tc`` Command target category. ”h]”(jy)�”}”(hŒ``tc``”h]”j)�”}”(hj@h]”hŒtc”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KYhj:ubj•)�”}”(hhh]”hþ)�”}”(hŒCommand target category.”h]”hŒCommand target category.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jUh´KYhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jUh´KYhjÚubjs)�”}”(hŒ8``tid`` Target ID. Indicates the target of the message. ”h]”(jy)�”}”(hŒ``tid``”h]”j)�”}”(hjyh]”hŒtid”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KZhjsubj•)�”}”(hhh]”hþ)�”}”(hŒ/Target ID. Indicates the target of the message.”h]”hŒ/Target ID. Indicates the target of the message.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jŽh´KZhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jŽh´KZhjÚubjs)�”}”(hŒ8``sid`` Source ID. Indicates the source of the message. ”h]”(jy)�”}”(hŒ``sid``”h]”j)�”}”(hj²h]”hŒsid”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K[hj¬ubj•)�”}”(hhh]”hþ)�”}”(hŒ/Source ID. Indicates the source of the message.”h]”hŒ/Source ID. Indicates the source of the message.”…”�”}”(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&]”uh1jrh³jÇh´K[hjÚubjs)�”}”(hŒ``iid`` Instance ID. ”h]”(jy)�”}”(hŒ``iid``”h]”j)�”}”(hjëh]”hŒiid”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K\hjåubj•)�”}”(hhh]”hþ)�”}”(hŒ Instance ID.”h]”hŒ Instance ID.”…”�”}”(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&]”uh1jrh³jh´K\hjÚubjs)�”}”(hŒk``rqid`` Request ID. Used to match requests with responses and differentiate between responses and events. ”h]”(jy)�”}”(hŒ``rqid``”h]”j)�”}”(hj$h]”hŒrqid”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K^hjubj•)�”}”(hhh]”hþ)�”}”(hŒaRequest ID. Used to match requests with responses and differentiate between responses and events.”h]”hŒaRequest ID. Used to match requests with responses and differentiate between responses and events.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K]hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j9h´K^hjÚubjs)�”}”(hŒ``cid`` Command ID.”h]”(jy)�”}”(hŒ``cid``”h]”j)�”}”(hj^h]”hŒcid”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K^hjXubj•)�”}”(hhh]”hþ)�”}”(hŒ Command ID.”h]”hŒ Command ID.”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K_hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jsh´K^hjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»ŒSSH_MESSAGE_LENGTH (C macro)”Œc.SSH_MESSAGE_LENGTH”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSH_MESSAGE_LENGTH”h]”jË)�”}”(hŒSSH_MESSAGE_LENGTH”h]”jô)�”}”(hŒSSH_MESSAGE_LENGTH”h]”jú)�”}”(hj²h]”hŒSSH_MESSAGE_LENGTH”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj¸ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj´h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K†ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj°h²hh³jÏh´K†ubah}”(h]”j«ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jÏh´K†hj­h²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj­h²hh³jÏh´K†ubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjèjIjèjJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´Nubhþ)�”}”(hŒ%``SSH_MESSAGE_LENGTH (payload_size)``”h]”j)�”}”(hjîh]”hŒ!SSH_MESSAGE_LENGTH (payload_size)”…”�”}”(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/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kˆhj�h²hubhŒ block_quote”“”)�”}”(hŒCompute length of SSH message. ”h]”hþ)�”}”(hŒCompute length of SSH message.”h]”hŒCompute length of SSH message.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K†hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j h´K†hj�h²hubjN)�”}”(hŒŸ**Parameters** ``payload_size`` Length of the payload inside the SSH frame. **Return** Returns the length of a SSH message with payload of specified size.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj% h]”hŒ Parameters”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj# ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KŠhj ubjn)�”}”(hhh]”js)�”}”(hŒ=``payload_size`` Length of the payload inside the SSH frame. ”h]”(jy)�”}”(hŒ``payload_size``”h]”j)�”}”(hjD h]”hŒ payload_size”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjB ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K‡hj> ubj•)�”}”(hhh]”hþ)�”}”(hŒ+Length of the payload inside the SSH frame.”h]”hŒ+Length of the payload inside the SSH frame.”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jY h´K‡hjZ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj> ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jY h´K‡hj; ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj h]”hŒReturn”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj} ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K‰hj ubhþ)�”}”(hŒCReturns the length of a SSH message with payload of specified size.”h]”hŒCReturns the length of a SSH message with payload of specified size.”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K‰hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ$SSH_COMMAND_MESSAGE_LENGTH (C macro)”Œc.SSH_COMMAND_MESSAGE_LENGTH”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSH_COMMAND_MESSAGE_LENGTH”h]”jË)�”}”(hŒSSH_COMMAND_MESSAGE_LENGTH”h]”jô)�”}”(hŒSSH_COMMAND_MESSAGE_LENGTH”h]”jú)�”}”(hj¾ h]”hŒSSH_COMMAND_MESSAGE_LENGTH”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÄ ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÀ h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KŽubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj¼ h²hh³jÛ h´KŽubah}”(h]”j· ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jÛ h´KŽhj¹ h²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¹ h²hh³jÛ h´KŽubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjô jIjô jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´Nubhþ)�”}”(hŒ-``SSH_COMMAND_MESSAGE_LENGTH (payload_size)``”h]”j)�”}”(hjú h]”hŒ)SSH_COMMAND_MESSAGE_LENGTH (payload_size)”…”�”}”(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/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K�hj�h²hubj )�”}”(hŒ'Compute length of SSH command message. ”h]”hþ)�”}”(hŒ&Compute length of SSH command message.”h]”hŒ&Compute length of SSH command message.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KŽhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j" h´KŽhj�h²hubjN)�”}”(hŒ¢**Parameters** ``payload_size`` Length of the command payload. **Return** Returns the length of a SSH command message with command payload of specified size.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj/ h]”hŒ Parameters”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj- ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K’hj) ubjn)�”}”(hhh]”js)�”}”(hŒ0``payload_size`` Length of the command payload. ”h]”(jy)�”}”(hŒ``payload_size``”h]”j)�”}”(hjN h]”hŒ payload_size”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K�hjH ubj•)�”}”(hhh]”hþ)�”}”(hŒLength of the command payload.”h]”hŒLength of the command payload.”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jc h´K�hjd ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjH ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jc h´K�hjE ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj) ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj‰ h]”hŒReturn”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj‡ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K‘hj) ubhþ)�”}”(hŒSReturns the length of a SSH command message with command payload of specified size.”h]”hŒSReturns the length of a SSH command message with command payload of specified size.”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K‘hj) ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»ŒSSH_MSGOFFSET_FRAME (C macro)”Œc.SSH_MSGOFFSET_FRAME”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSH_MSGOFFSET_FRAME”h]”jË)�”}”(hŒSSH_MSGOFFSET_FRAME”h]”jô)�”}”(hŒSSH_MSGOFFSET_FRAME”h]”jú)�”}”(hjÈ h]”hŒSSH_MSGOFFSET_FRAME”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÎ ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÊ h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K˜ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjÆ h²hh³jå h´K˜ubah}”(h]”jÁ ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jå h´K˜hjà h²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hjà h²hh³jå h´K˜ubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjþ jIjþ jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´Nubhþ)�”}”(hŒ``SSH_MSGOFFSET_FRAME (field)``”h]”j)�”}”(hj h]”hŒSSH_MSGOFFSET_FRAME (field)”…”�”}”(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/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kšhj�h²hubj )�”}”(hŒ;Compute offset in SSH message to specified field in frame. ”h]”hþ)�”}”(hŒ:Compute offset in SSH message to specified field in frame.”h]”hŒ:Compute offset in SSH message to specified field in frame.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K˜hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j, h´K˜hj�h²hubjN)�”}”(hX**Parameters** ``field`` The field for which the offset should be computed. **Return** Returns the offset of the specified :c:type:`struct ssh_frame ` field in the raw SSH message data as. Takes SYN bytes (u16) preceding the frame into account.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj9 h]”hŒ Parameters”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj7 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kœhj3 ubjn)�”}”(hhh]”js)�”}”(hŒ=``field`` The field for which the offset should be computed. ”h]”(jy)�”}”(hŒ ``field``”h]”j)�”}”(hjX h]”hŒfield”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KšhjR ubj•)�”}”(hhh]”hþ)�”}”(hŒ2The field for which the offset should be computed.”h]”hŒ2The field for which the offset should be computed.”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jm h´Kšhjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjR ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jm h´KšhjO ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj3 ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj“ h]”hŒReturn”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj‘ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kœhj3 ubhþ)�”}”(hŒ¨Returns the offset of the specified :c:type:`struct ssh_frame ` field in the raw SSH message data as. Takes SYN bytes (u16) preceding the frame into account.”h]”(hŒ$Returns the offset of the specified ”…”�”}”(hj© h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct ssh_frame `”h]”j)�”}”(hj³ h]”hŒstruct ssh_frame”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj± ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssh_frame”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kœhj© ubhŒ^ field in the raw SSH message data as. Takes SYN bytes (u16) preceding the frame into account.”…”�”}”(hj© h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÐ h´Kœhj3 ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»ŒSSH_MSGOFFSET_COMMAND (C macro)”Œc.SSH_MSGOFFSET_COMMAND”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSH_MSGOFFSET_COMMAND”h]”jË)�”}”(hŒSSH_MSGOFFSET_COMMAND”h]”jô)�”}”(hŒSSH_MSGOFFSET_COMMAND”h]”jú)�”}”(hjõ h]”hŒSSH_MSGOFFSET_COMMAND”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjû ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj÷ h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K¤ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjó h²hh³j h´K¤ubah}”(h]”jî ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j h´K¤hjð h²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hjð h²hh³j h´K¤ubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHj+ jIj+ jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´Nubhþ)�”}”(hŒ!``SSH_MSGOFFSET_COMMAND (field)``”h]”j)�”}”(hj1 h]”hŒSSH_MSGOFFSET_COMMAND (field)”…”�”}”(hj3 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/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K¦hj�h²hubj )�”}”(hŒ=Compute offset in SSH message to specified field in command. ”h]”hþ)�”}”(hŒ` field in the raw SSH message data. Takes SYN bytes (u16) preceding the frame and the frame CRC (u16) between frame and command into account.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjf h]”hŒ Parameters”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjd ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K¨hj` ubjn)�”}”(hhh]”js)�”}”(hŒ=``field`` The field for which the offset should be computed. ”h]”(jy)�”}”(hŒ ``field``”h]”j)�”}”(hj… h]”hŒfield”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjƒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K¦hj ubj•)�”}”(hhh]”hþ)�”}”(hŒ2The field for which the offset should be computed.”h]”hŒ2The field for which the offset should be computed.”…”�”}”(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&]”uh1jrh³jš h´K¦hj| ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj` ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjÀ h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K¨hj` ubhþ)�”}”(hŒÛReturns the offset of the specified :c:type:`struct ssh_command ` field in the raw SSH message data. Takes SYN bytes (u16) preceding the frame and the frame CRC (u16) between frame and command into account.”h]”(hŒ$Returns the offset of the specified ”…”�”}”(hjÖ h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct ssh_command `”h]”j)�”}”(hjà h]”hŒstruct ssh_command”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjÞ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssh_command”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K¨hjÖ ubhŒ� field in the raw SSH message data. Takes SYN bytes (u16) preceding the frame and the frame CRC (u16) between frame and command into account.”…”�”}”(hjÖ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jý h´K¨hj` ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_crc (C function)”Œ c.ssh_crc”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ'u16 ssh_crc (const u8 *buf, size_t len)”h]”jË)�”}”(hŒ&u16 ssh_crc(const u8 *buf, size_t len)”h]”(h)�”}”(hhh]”jú)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj( ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”Œ identifier”Œ reftarget”j- Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jŸŒ ASTIdentifier”“”)�”}”jA Œssh_crc”sbŒ c.ssh_crc”†”asbuh1hhj$ h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K¶ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj$ h²hh³jO h´K¶ubjô)�”}”(hŒssh_crc”h]”jú)�”}”(hjL h]”hŒssh_crc”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj^ ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj$ h²hh³jO h´K¶ubhŒdesc_parameterlist”“”)�”}”(hŒ(const u8 *buf, size_t len)”h]”(hŒdesc_parameter”“”)�”}”(hŒ const u8 *buf”h]”(jÑ)�”}”(hŒconst”h]”hŒconst”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj} ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj} ubh)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj� ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j¢ Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jJ Œ c.ssh_crc”†”asbuh1hhj} ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj} ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jÌ hj} ubjú)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj} ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjw ubj| )�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jú)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjö ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jû Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jJ Œ c.ssh_crc”†”asbuh1hhjò ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjò ubjú)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjò ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjw ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj$ h²hh³jO h´K¶ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj h²hh³jO h´K¶ubah}”(h]”j ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jO h´K¶hj h²hubj&)�”}”(hhh]”hþ)�”}”(hŒCompute CRC for SSH messages.”h]”hŒCompute CRC for SSH messages.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K¶hjLh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj h²hh³jO h´K¶ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjgjIjgjJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hX**Parameters** ``const u8 *buf`` The pointer pointing to the data for which the CRC should be computed. ``size_t len`` The length of the data for which the CRC should be computed. **Return** Returns the CRC computed on the provided data, as used for SSH messages.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjqh]”hŒ Parameters”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kºhjkubjn)�”}”(hhh]”(js)�”}”(hŒY``const u8 *buf`` The pointer pointing to the data for which the CRC should be computed. ”h]”(jy)�”}”(hŒ``const u8 *buf``”h]”j)�”}”(hj�h]”hŒ const u8 *buf”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K·hjŠubj•)�”}”(hhh]”hþ)�”}”(hŒFThe pointer pointing to the data for which the CRC should be computed.”h]”hŒFThe pointer pointing to the data for which the CRC should be computed.”…”�”}”(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&]”uh1jrh³j¥h´K·hj‡ubjs)�”}”(hŒL``size_t len`` The length of the data for which the CRC should be computed. ”h]”(jy)�”}”(hŒ``size_t len``”h]”j)�”}”(hjÉh]”hŒ size_t len”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K¸hjÃubj•)�”}”(hhh]”hþ)�”}”(hŒh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ!Return the next valid request ID.”h]”hŒ!Return the next valid request ID.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KÒhjñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj>h²hh³jmh´KÒubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj jIj jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hŒÛ**Parameters** ``u16 rqid`` The current request ID. **Return** Returns the next valid request ID, following the current request ID provided to this function. This function skips any request IDs reserved for events.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KÖhjubjn)�”}”(hhh]”js)�”}”(hŒ%``u16 rqid`` The current request ID. ”h]”(jy)�”}”(hŒ ``u16 rqid``”h]”j)�”}”(hj5h]”hŒu16 rqid”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KÓhj/ubj•)�”}”(hhh]”hþ)�”}”(hŒThe current request ID.”h]”hŒThe current request ID.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jJh´KÓhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jJh´KÓhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjph]”hŒReturn”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KÕhjubhþ)�”}”(hŒ—Returns the next valid request ID, following the current request ID provided to this function. This function skips any request IDs reserved for events.”h]”hŒ—Returns the next valid request ID, following the current request ID provided to this function. This function skips any request IDs reserved for events.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KÕhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_rqid_to_event (C function)”Œc.ssh_rqid_to_event”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ u16 ssh_rqid_to_event (u16 rqid)”h]”jË)�”}”(hŒu16 ssh_rqid_to_event(u16 rqid)”h]”(h)�”}”(hhh]”jú)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jºŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œssh_rqid_to_event”sbŒc.ssh_rqid_to_event”†”asbuh1hhj±h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kßubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj±h²hh³jÙh´Kßubjô)�”}”(hŒssh_rqid_to_event”h]”jú)�”}”(hjÖh]”hŒssh_rqid_to_event”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjèubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj±h²hh³jÙh´Kßubjv )�”}”(hŒ (u16 rqid)”h]”j| )�”}”(hŒu16 rqid”h]”(h)�”}”(hhh]”jú)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jÔŒc.ssh_rqid_to_event”†”asbuh1hhjubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjubjú)�”}”(hŒrqid”h]”hŒrqid”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjÿubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj±h²hh³jÙh´Kßubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj­h²hh³jÙh´Kßubah}”(h]”j¨ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jÙh´Kßhjªh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ1Convert request ID to its corresponding event ID.”h]”hŒ1Convert request ID to its corresponding event ID.”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kßhj]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjªh²hh³jÙh´Kßubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjxjIjxjJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hŒ9**Parameters** ``u16 rqid`` The request ID to convert.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj‚h]”hŒ Parameters”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kãhj|ubjn)�”}”(hhh]”js)�”}”(hŒ'``u16 rqid`` The request ID to convert.”h]”(jy)�”}”(hŒ ``u16 rqid``”h]”j)�”}”(hj¡h]”hŒu16 rqid”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kåhj›ubj•)�”}”(hhh]”hþ)�”}”(hŒThe request ID to convert.”h]”hŒThe request ID to convert.”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kàhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j¶h´Kåhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_rqid_is_event (C function)”Œc.ssh_rqid_is_event”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ!bool ssh_rqid_is_event (u16 rqid)”h]”jË)�”}”(hŒ bool ssh_rqid_is_event(u16 rqid)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒbool”h]”hŒbool”…”�”}”(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/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kèubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj÷h²hh³j h´Kèubjô)�”}”(hŒssh_rqid_is_event”h]”jú)�”}”(hŒssh_rqid_is_event”h]”hŒssh_rqid_is_event”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj÷h²hh³j h´Kèubjv )�”}”(hŒ (u16 rqid)”h]”j| )�”}”(hŒu16 rqid”h]”(h)�”}”(hhh]”jú)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j@Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j!sbŒc.ssh_rqid_is_event”†”asbuh1hhj7ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj7ubjú)�”}”(hŒrqid”h]”hŒrqid”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj3ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj÷h²hh³j h´Kèubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjóh²hh³j h´Kèubah}”(h]”jîah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j h´Kèhjðh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ.Check if given request ID is a valid event ID.”h]”hŒ.Check if given request ID is a valid event ID.”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kèhj“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjðh²hh³j h´Kèubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj®jIj®jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hŒ7**Parameters** ``u16 rqid`` The request ID to check.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj¸h]”hŒ Parameters”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kìhj²ubjn)�”}”(hhh]”js)�”}”(hŒ%``u16 rqid`` The request ID to check.”h]”(jy)�”}”(hŒ ``u16 rqid``”h]”j)�”}”(hj×h]”hŒu16 rqid”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KîhjÑubj•)�”}”(hhh]”hþ)�”}”(hŒThe request ID to check.”h]”hŒThe request ID to check.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kéhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jìh´KîhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj²ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_tc_to_rqid (C function)”Œc.ssh_tc_to_rqid”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒu16 ssh_tc_to_rqid (u8 tc)”h]”jË)�”}”(hŒu16 ssh_tc_to_rqid(u8 tc)”h]”(h)�”}”(hhh]”jú)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j6Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œssh_tc_to_rqid”sbŒc.ssh_tc_to_rqid”†”asbuh1hhj-h²h•h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kñubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj-h²hh³jUh´Kñubjô)�”}”(hŒssh_tc_to_rqid”h]”jú)�”}”(hjRh]”hŒssh_tc_to_rqid”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjdubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj-h²hh³jUh´Kñubjv )�”}”(hŒ(u8 tc)”h]”j| )�”}”(hŒu8 tc”h]”(h)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jˆŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jPŒc.ssh_tc_to_rqid”†”asbuh1hhjubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjubjú)�”}”(hŒtc”h]”hŒtc”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj{ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj-h²hh³jUh´Kñubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj)h²hh³jUh´Kñubah}”(h]”j$ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jUh´Kñhj&h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ8Convert target category to its corresponding request ID.”h]”hŒ8Convert target category to its corresponding request ID.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´KñhjÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj&h²hh³jUh´Kñubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjôjIjôjJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hŒ;**Parameters** ``u8 tc`` The target category to convert.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjþh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kõhjøubjn)�”}”(hhh]”js)�”}”(hŒ)``u8 tc`` The target category to convert.”h]”(jy)�”}”(hŒ ``u8 tc``”h]”j)�”}”(hjh]”hŒu8 tc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´K÷hjubj•)�”}”(hhh]”hþ)�”}”(hŒThe target category to convert.”h]”hŒThe target category to convert.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kòhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j2h´K÷hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjøubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_tid_to_index (C function)”Œc.ssh_tid_to_index”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒu8 ssh_tid_to_index (u8 tid)”h]”jË)�”}”(hŒu8 ssh_tid_to_index(u8 tid)”h]”(h)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j|Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œssh_tid_to_index”sbŒc.ssh_tid_to_index”†”asbuh1hhjsh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kúubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjsh²hh³j›h´Kúubjô)�”}”(hŒssh_tid_to_index”h]”jú)�”}”(hj˜h]”hŒssh_tid_to_index”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjªubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjsh²hh³j›h´Kúubjv )�”}”(hŒ(u8 tid)”h]”j| )�”}”(hŒu8 tid”h]”(h)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jÎŒmodname”NŒ classname”Njžj¡)�”}”j¤]”j–Œc.ssh_tid_to_index”†”asbuh1hhjÅubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÅubjú)�”}”(hŒtid”h]”hŒtid”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjÁubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjsh²hh³j›h´Kúubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjoh²hh³j›h´Kúubah}”(h]”jjah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j›h´Kúhjlh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ4Convert target ID to its corresponding target index.”h]”hŒ4Convert target ID to its corresponding target index.”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kúhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjlh²hh³j›h´Kúubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj:jIj:jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hŒ6**Parameters** ``u8 tid`` The target ID to convert.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjDh]”hŒ Parameters”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kþhj>ubjn)�”}”(hhh]”js)�”}”(hŒ$``u8 tid`` The target ID to convert.”h]”(jy)�”}”(hŒ ``u8 tid``”h]”j)�”}”(hjch]”hŒu8 tid”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhj]ubj•)�”}”(hhh]”hþ)�”}”(hŒThe target ID to convert.”h]”hŒThe target ID to convert.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Kûhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jxh´MhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_tid_is_valid (C function)”Œc.ssh_tid_is_valid”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒbool ssh_tid_is_valid (u8 tid)”h]”jË)�”}”(hŒbool ssh_tid_is_valid(u8 tid)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¹h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj¹h²hh³jÊh´Mubjô)�”}”(hŒssh_tid_is_valid”h]”jú)�”}”(hŒssh_tid_is_valid”h]”hŒssh_tid_is_valid”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÙubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj¹h²hh³jÊh´Mubjv )�”}”(hŒ(u8 tid)”h]”j| )�”}”(hŒu8 tid”h]”(h)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jþŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jßsbŒc.ssh_tid_is_valid”†”asbuh1hhjõubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjõubjú)�”}”(hŒtid”h]”hŒtid”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjñubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj¹h²hh³jÊh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjµh²hh³jÊh´Mubah}”(h]”j°ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jÊh´Mhj²h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ&Check if target ID is valid/supported.”h]”hŒ&Check if target ID is valid/supported.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MhjQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj²h²hh³jÊh´Mubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjljIjljJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hŒ4**Parameters** ``u8 tid`` The target ID to check.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjvh]”hŒ Parameters”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhjpubjn)�”}”(hhh]”js)�”}”(hŒ"``u8 tid`` The target ID to check.”h]”(jy)�”}”(hŒ ``u8 tid``”h]”j)�”}”(hj•h]”hŒu8 tid”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M hj�ubj•)�”}”(hhh]”hþ)�”}”(hŒThe target ID to check.”h]”hŒThe target ID to check.”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jªh´M hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_span (C struct)”Œ c.ssam_span”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ ssam_span”h]”jË)�”}”(hŒstruct ssam_span”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(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/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjëh²hh³jüh´M ubjô)�”}”(hŒ ssam_span”h]”jú)�”}”(hjéh]”hŒ ssam_span”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjëh²hh³jüh´M ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjçh²hh³jüh´M ubah}”(h]”jâah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jüh´M hjäh²hubj&)�”}”(hhh]”hþ)�”}”(hŒReference to a buffer region.”h]”hŒReference to a buffer region.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M hj.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjäh²hh³jüh´M ubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHjIjIjIjJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hŒª**Definition**:: struct ssam_span { u8 *ptr; size_t len; }; **Members** ``ptr`` Pointer to the buffer region. ``len`` Length of the buffer region.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjQubhŒ:”…”�”}”(hjQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MhjMubj,)�”}”(hŒ2struct ssam_span { u8 *ptr; size_t len; };”h]”hŒ2struct ssam_span { u8 *ptr; size_t len; };”…”�”}”hjnsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MhjMubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hjh]”hŒMembers”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MhjMubjn)�”}”(hhh]”(js)�”}”(hŒ&``ptr`` Pointer to the buffer region. ”h]”(jy)�”}”(hŒ``ptr``”h]”j)�”}”(hjžh]”hŒptr”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhj˜ubj•)�”}”(hhh]”hþ)�”}”(hŒPointer to the buffer region.”h]”hŒPointer to the buffer region.”…”�”}”(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&]”uh1jrh³j³h´Mhj•ubjs)�”}”(hŒ$``len`` Length of the buffer region.”h]”(jy)�”}”(hŒ``len``”h]”j)�”}”(hj×h]”hŒlen”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MhjÑubj•)�”}”(hhh]”hþ)�”}”(hŒLength of the buffer region.”h]”hŒLength of the buffer region.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jìh´Mhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhj�h²hubhþ)�”}”(hŒÙA reference to a (non-owned) buffer segment, consisting of pointer and length. Use of this struct indicates non-owned data, i.e. data of which the life-time is managed (i.e. it is allocated/freed) via another pointer.”h]”hŒÙA reference to a (non-owned) buffer segment, consisting of pointer and length. Use of this struct indicates non-owned data, i.e. data of which the life-time is managed (i.e. it is allocated/freed) via another pointer.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhj�h²hubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_ssh_tid (C enum)”Œc.ssam_ssh_tid”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ ssam_ssh_tid”h]”jË)�”}”(hŒenum ssam_ssh_tid”h]”(jÑ)�”}”(hjÔh]”hŒenum”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjTh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjTh²hh³jeh´Mubjô)�”}”(hŒ ssam_ssh_tid”h]”jú)�”}”(hjRh]”hŒ ssam_ssh_tid”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjtubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjTh²hh³jeh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjPh²hh³jeh´Mubah}”(h]”jKah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jeh´MhjMh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ*Target/source IDs for Serial Hub messages.”h]”hŒ*Target/source IDs for Serial Hub messages.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhj—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjMh²hh³jeh´Mubeh}”(h]”h ]”(jBŒenum”eh"]”h$]”h&]”jGjBjHj²jIj²jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hX**Constants** ``SSAM_SSH_TID_HOST`` We as the kernel Serial Hub driver. ``SSAM_SSH_TID_SAM`` The Surface Aggregator EC. ``SSAM_SSH_TID_KIP`` Keyboard and perihperal controller. ``SSAM_SSH_TID_DEBUG`` Debug connector. ``SSAM_SSH_TID_SURFLINK`` SurfLink connector.”h]”(hþ)�”}”(hŒ **Constants**”h]”jX)�”}”(hj¼h]”hŒ Constants”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhj¶ubjn)�”}”(hhh]”(js)�”}”(hŒ:``SSAM_SSH_TID_HOST`` We as the kernel Serial Hub driver. ”h]”(jy)�”}”(hŒ``SSAM_SSH_TID_HOST``”h]”j)�”}”(hjÛh]”hŒSSAM_SSH_TID_HOST”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M!hjÕubj•)�”}”(hhh]”hþ)�”}”(hŒ#We as the kernel Serial Hub driver.”h]”hŒ#We as the kernel Serial Hub driver.”…”�”}”(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&]”uh1jrh³jðh´M!hjÒubjs)�”}”(hŒ0``SSAM_SSH_TID_SAM`` The Surface Aggregator EC. ”h]”(jy)�”}”(hŒ``SSAM_SSH_TID_SAM``”h]”j)�”}”(hjh]”hŒSSAM_SSH_TID_SAM”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M$hjubj•)�”}”(hhh]”hþ)�”}”(hŒThe Surface Aggregator EC.”h]”hŒThe Surface Aggregator EC.”…”�”}”(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&]”uh1jrh³j)h´M$hjÒubjs)�”}”(hŒ9``SSAM_SSH_TID_KIP`` Keyboard and perihperal controller. ”h]”(jy)�”}”(hŒ``SSAM_SSH_TID_KIP``”h]”j)�”}”(hjMh]”hŒSSAM_SSH_TID_KIP”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M'hjGubj•)�”}”(hhh]”hþ)�”}”(hŒ#Keyboard and perihperal controller.”h]”hŒ#Keyboard and perihperal controller.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jbh´M'hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jbh´M'hjÒubjs)�”}”(hŒ(``SSAM_SSH_TID_DEBUG`` Debug connector. ”h]”(jy)�”}”(hŒ``SSAM_SSH_TID_DEBUG``”h]”j)�”}”(hj†h]”hŒSSAM_SSH_TID_DEBUG”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M*hj€ubj•)�”}”(hhh]”hþ)�”}”(hŒDebug connector.”h]”hŒDebug connector.”…”�”}”(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&]”uh1jrh³j›h´M*hjÒubjs)�”}”(hŒ-``SSAM_SSH_TID_SURFLINK`` SurfLink connector.”h]”(jy)�”}”(hŒ``SSAM_SSH_TID_SURFLINK``”h]”j)�”}”(hj¿h]”hŒSSAM_SSH_TID_SURFLINK”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M,hj¹ubj•)�”}”(hhh]”hþ)�”}”(hŒSurfLink connector.”h]”hŒSurfLink connector.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M-hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÔh´M,hjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ!ssh_packet_base_priority (C enum)”Œc.ssh_packet_base_priority”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssh_packet_base_priority”h]”jË)�”}”(hŒenum ssh_packet_base_priority”h]”(jÑ)�”}”(hjÔh]”hŒenum”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M2ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjh²hh³j&h´M2ubjô)�”}”(hŒssh_packet_base_priority”h]”jú)�”}”(hjh]”hŒssh_packet_base_priority”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj5ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjh²hh³j&h´M2ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjh²hh³j&h´M2ubah}”(h]”j ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j&h´M2hjh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ=Base priorities for :c:type:`struct ssh_packet `.”h]”(hŒBase priorities for ”…”�”}”(hj[h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct ssh_packet `”h]”j)�”}”(hjeh]”hŒstruct ssh_packet”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjcubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¡)�”}”j¤]”jI )�”}”jA jsbŒc.ssh_packet_base_priority”†”asbj¦Œ ssh_packet”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.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/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MbhjXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjh²hh³j&h´M2ubeh}”(h]”h ]”(jBŒenum”eh"]”h$]”h&]”jGjBjHjžjIjžjJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hX**Constants** ``SSH_PACKET_PRIORITY_FLUSH`` Base priority for flush packets. ``SSH_PACKET_PRIORITY_DATA`` Base priority for normal data packets. ``SSH_PACKET_PRIORITY_NAK`` Base priority for NAK packets. ``SSH_PACKET_PRIORITY_ACK`` Base priority for ACK packets.”h]”(hþ)�”}”(hŒ **Constants**”h]”jX)�”}”(hj¨h]”hŒ Constants”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mfhj¢ubjn)�”}”(hhh]”(js)�”}”(hŒ?``SSH_PACKET_PRIORITY_FLUSH`` Base priority for flush packets. ”h]”(jy)�”}”(hŒ``SSH_PACKET_PRIORITY_FLUSH``”h]”j)�”}”(hjÇh]”hŒSSH_PACKET_PRIORITY_FLUSH”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MihjÁubj•)�”}”(hhh]”hþ)�”}”(hŒ Base priority for flush packets.”h]”hŒ Base priority for flush packets.”…”�”}”(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&]”uh1jrh³jÜh´Mihj¾ubjs)�”}”(hŒD``SSH_PACKET_PRIORITY_DATA`` Base priority for normal data packets. ”h]”(jy)�”}”(hŒ``SSH_PACKET_PRIORITY_DATA``”h]”j)�”}”(hjh]”hŒSSH_PACKET_PRIORITY_DATA”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mlhjúubj•)�”}”(hhh]”hþ)�”}”(hŒ&Base priority for normal data packets.”h]”hŒ&Base priority for normal data packets.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´Mlhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jh´Mlhj¾ubjs)�”}”(hŒ;``SSH_PACKET_PRIORITY_NAK`` Base priority for NAK packets. ”h]”(jy)�”}”(hŒ``SSH_PACKET_PRIORITY_NAK``”h]”j)�”}”(hj9h]”hŒSSH_PACKET_PRIORITY_NAK”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mohj3ubj•)�”}”(hhh]”hþ)�”}”(hŒBase priority for NAK packets.”h]”hŒBase priority for NAK packets.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jNh´MohjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jNh´Mohj¾ubjs)�”}”(hŒ:``SSH_PACKET_PRIORITY_ACK`` Base priority for ACK packets.”h]”(jy)�”}”(hŒ``SSH_PACKET_PRIORITY_ACK``”h]”j)�”}”(hjrh]”hŒSSH_PACKET_PRIORITY_ACK”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mqhjlubj•)�”}”(hhh]”hþ)�”}”(hŒBase priority for ACK packets.”h]”hŒBase priority for ACK packets.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mrhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j‡h´Mqhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj¢ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»ŒSSH_PACKET_PRIORITY (C macro)”Œc.SSH_PACKET_PRIORITY”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSH_PACKET_PRIORITY”h]”jË)�”}”(hŒSSH_PACKET_PRIORITY”h]”jô)�”}”(hŒSSH_PACKET_PRIORITY”h]”jú)�”}”(hjÆh]”hŒSSH_PACKET_PRIORITY”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÌubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÈh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mvubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjÄh²hh³jãh´Mvubah}”(h]”j¿ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jãh´MvhjÁh²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÁh²hh³jãh´Mvubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjüjIjüjJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´Nubhþ)�”}”(hŒ#``SSH_PACKET_PRIORITY (base, try)``”h]”j)�”}”(hjh]”hŒSSH_PACKET_PRIORITY (base, try)”…”�”}”(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/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mxhj�h²hubj )�”}”(hŒ@Compute packet priority from base priority and number of tries. ”h]”hþ)�”}”(hŒ?Compute packet priority from base priority and number of tries.”h]”hŒ?Compute packet priority from base priority and number of tries.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mvhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j*h´Mvhj�h²hubjN)�”}”(hXr**Parameters** ``base`` The base priority as suffix of :c:type:`enum ssh_packet_base_priority `, e.g. ``FLUSH``, ``DATA``, ``ACK``, or ``NAK``. ``try`` The number of tries (must be less than 16). **Description** Compute the combined packet priority. The combined priority is dominated by the base priority, whereas the number of (re-)tries decides the precedence of packets with the same base priority, giving higher priority to packets that already have more tries. **Return** Returns the computed priority as value fitting inside a :c:type:`u8`. A higher number means a higher priority.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj7h]”hŒ Parameters”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mzhj1ubjn)�”}”(hhh]”(js)�”}”(hŒ›``base`` The base priority as suffix of :c:type:`enum ssh_packet_base_priority `, e.g. ``FLUSH``, ``DATA``, ``ACK``, or ``NAK``. ”h]”(jy)�”}”(hŒ``base``”h]”j)�”}”(hjVh]”hŒbase”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MyhjPubj•)�”}”(hhh]”hþ)�”}”(hŒ‘The base priority as suffix of :c:type:`enum ssh_packet_base_priority `, e.g. ``FLUSH``, ``DATA``, ``ACK``, or ``NAK``.”h]”(hŒThe base priority as suffix of ”…”�”}”(hjoh²hh³Nh´Nubh)�”}”(hŒB:c:type:`enum ssh_packet_base_priority `”h]”j)�”}”(hjyh]”hŒenum ssh_packet_base_priority”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjwubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssh_packet_base_priority”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MxhjoubhŒ, e.g. ”…”�”}”(hjoh²hh³Nh´Nubj)�”}”(hŒ ``FLUSH``”h]”hŒFLUSH”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjoubhŒ, ”…”�”}”(hjoh²hh³Nh´Nubj)�”}”(hŒ``DATA``”h]”hŒDATA”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjoubhŒ, ”…”�”}”hjosbj)�”}”(hŒ``ACK``”h]”hŒACK”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjoubhŒ, or ”…”�”}”(hjoh²hh³Nh´Nubj)�”}”(hŒ``NAK``”h]”hŒNAK”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjoubhŒ.”…”�”}”(hjoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j–h´Mxhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jkh´MyhjMubjs)�”}”(hŒ4``try`` The number of tries (must be less than 16). ”h]”(jy)�”}”(hŒ``try``”h]”j)�”}”(hjûh]”hŒtry”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mzhjõubj•)�”}”(hhh]”hþ)�”}”(hŒ+The number of tries (must be less than 16).”h]”hŒ+The number of tries (must be less than 16).”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´Mzhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jh´MzhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj1ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj6h]”hŒ Description”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M|hj1ubhþ)�”}”(hŒþCompute the combined packet priority. The combined priority is dominated by the base priority, whereas the number of (re-)tries decides the precedence of packets with the same base priority, giving higher priority to packets that already have more tries.”h]”hŒþCompute the combined packet priority. The combined priority is dominated by the base priority, whereas the number of (re-)tries decides the precedence of packets with the same base priority, giving higher priority to packets that already have more tries.”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M{hj1ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj]h]”hŒReturn”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M€hj1ubhþ)�”}”(hŒnReturns the computed priority as value fitting inside a :c:type:`u8`. A higher number means a higher priority.”h]”(hŒ8Returns the computed priority as value fitting inside a ”…”�”}”(hjsh²hh³Nh´Nubh)�”}”(hŒ :c:type:`u8`”h]”j)�”}”(hj}h]”hŒu8”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj{ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jžj¢j¦Œu8”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M�hjsubhŒ*. A higher number means a higher priority.”…”�”}”(hjsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jšh´M�hj1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ(ssh_packet_priority_get_try (C function)”Œc.ssh_packet_priority_get_try”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ,u8 ssh_packet_priority_get_try (u8 priority)”h]”jË)�”}”(hŒ+u8 ssh_packet_priority_get_try(u8 priority)”h]”(h)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jÊŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œssh_packet_priority_get_try”sbŒc.ssh_packet_priority_get_try”†”asbuh1hhjÁh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mˆubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÁh²hh³jéh´Mˆubjô)�”}”(hŒssh_packet_priority_get_try”h]”jú)�”}”(hjæh]”hŒssh_packet_priority_get_try”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjøubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÁh²hh³jéh´Mˆubjv )�”}”(hŒ (u8 priority)”h]”j| )�”}”(hŒ u8 priority”h]”(h)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jäŒc.ssh_packet_priority_get_try”†”asbuh1hhjubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjubjú)�”}”(hŒpriority”h]”hŒpriority”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjÁh²hh³jéh´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj½h²hh³jéh´Mˆubah}”(h]”j¸ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jéh´Mˆhjºh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ)Get number of tries from packet priority.”h]”hŒ)Get number of tries from packet priority.”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mˆhjmh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjºh²hh³jéh´Mˆubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjˆjIjˆjJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hŒ‰**Parameters** ``u8 priority`` The packet priority. **Return** Returns the number of tries encoded in the specified packet priority.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj’h]”hŒ Parameters”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MŒhjŒubjn)�”}”(hhh]”js)�”}”(hŒ%``u8 priority`` The packet priority. ”h]”(jy)�”}”(hŒ``u8 priority``”h]”j)�”}”(hj±h]”hŒ u8 priority”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M‰hj«ubj•)�”}”(hhh]”hþ)�”}”(hŒThe packet priority.”h]”hŒThe packet priority.”…”�”}”(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&]”uh1jrh³jÆh´M‰hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjŒubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjìh]”hŒReturn”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M‹hjŒubhþ)�”}”(hŒEReturns the number of tries encoded in the specified packet priority.”h]”hŒEReturns the number of tries encoded in the specified packet priority.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M‹hjŒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ)ssh_packet_priority_get_base (C function)”Œc.ssh_packet_priority_get_base”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ-u8 ssh_packet_priority_get_base (u8 priority)”h]”jË)�”}”(hŒ,u8 ssh_packet_priority_get_base(u8 priority)”h]”(h)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j6Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œssh_packet_priority_get_base”sbŒc.ssh_packet_priority_get_base”†”asbuh1hhj-h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M”ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj-h²hh³jUh´M”ubjô)�”}”(hŒssh_packet_priority_get_base”h]”jú)�”}”(hjRh]”hŒssh_packet_priority_get_base”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjdubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj-h²hh³jUh´M”ubjv )�”}”(hŒ (u8 priority)”h]”j| )�”}”(hŒ u8 priority”h]”(h)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jˆŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jPŒc.ssh_packet_priority_get_base”†”asbuh1hhjubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjubjú)�”}”(hŒpriority”h]”hŒpriority”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj{ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj-h²hh³jUh´M”ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj)h²hh³jUh´M”ubah}”(h]”j$ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jUh´M”hj&h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ'Get base priority from packet priority.”h]”hŒ'Get base priority from packet priority.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M”hjÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj&h²hh³jUh´M”ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjôjIjôjJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hŒƒ**Parameters** ``u8 priority`` The packet priority. **Return** Returns the base priority encoded in the given packet priority.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjþh]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M˜hjøubjn)�”}”(hhh]”js)�”}”(hŒ%``u8 priority`` The packet priority. ”h]”(jy)�”}”(hŒ``u8 priority``”h]”j)�”}”(hj h]”hŒ u8 priority”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M•hj ubj•)�”}”(hhh]”hþ)�”}”(hŒThe packet priority.”h]”hŒThe packet priority.”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j2 h´M•hj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j2 h´M•hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjøubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjX h]”hŒReturn”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M—hjøubhþ)�”}”(hŒ?Returns the base priority encoded in the given packet priority.”h]”hŒ?Returns the base priority encoded in the given packet priority.”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M—hjøubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_packet_ops (C struct)”Œc.ssh_packet_ops”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssh_packet_ops”h]”jË)�”}”(hŒstruct ssh_packet_ops”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(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/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mœubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj™ h²hh³jª h´Mœubjô)�”}”(hŒssh_packet_ops”h]”jú)�”}”(hj— h]”hŒssh_packet_ops”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj¹ ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj™ h²hh³jª h´Mœubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj• h²hh³jª h´Mœubah}”(h]”j� ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jª h´Mœhj’ h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ%Callback operations for a SSH packet.”h]”hŒ%Callback operations for a SSH packet.”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÄhjÜ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj’ h²hh³jª h´Mœubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHj÷ jIj÷ jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hXË**Definition**:: struct ssh_packet_ops { void (*release)(struct ssh_packet *p); void (*complete)(struct ssh_packet *p, int status); }; **Members** ``release`` Function called when the packet reference count reaches zero. This callback must be relied upon to ensure that the packet has left the transport system(s). ``complete`` Function called when the packet is completed, either with success or failure. In case of failure, the reason for the failure is indicated by the value of the provided status code argument. This value will be zero in case of success. Note that a call to this callback does not guarantee that the packet is not in use by the transport system any more.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÿ ubhŒ:”…”�”}”(hjÿ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÈhjû ubj,)�”}”(hŒ}struct ssh_packet_ops { void (*release)(struct ssh_packet *p); void (*complete)(struct ssh_packet *p, int status); };”h]”hŒ}struct ssh_packet_ops { void (*release)(struct ssh_packet *p); void (*complete)(struct ssh_packet *p, int status); };”…”�”}”hj!sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÊhjû ubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hj-!h]”hŒMembers”…”�”}”(hj/!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj+!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÏhjû ubjn)�”}”(hhh]”(js)�”}”(hŒ¨``release`` Function called when the packet reference count reaches zero. This callback must be relied upon to ensure that the packet has left the transport system(s). ”h]”(jy)�”}”(hŒ ``release``”h]”j)�”}”(hjL!h]”hŒrelease”…”�”}”(hjN!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjJ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÈhjF!ubj•)�”}”(hhh]”hþ)�”}”(hŒ›Function called when the packet reference count reaches zero. This callback must be relied upon to ensure that the packet has left the transport system(s).”h]”hŒ›Function called when the packet reference count reaches zero. This callback must be relied upon to ensure that the packet has left the transport system(s).”…”�”}”(hje!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÆhjb!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjF!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ja!h´MÈhjC!ubjs)�”}”(hXj``complete`` Function called when the packet is completed, either with success or failure. In case of failure, the reason for the failure is indicated by the value of the provided status code argument. This value will be zero in case of success. Note that a call to this callback does not guarantee that the packet is not in use by the transport system any more.”h]”(jy)�”}”(hŒ ``complete``”h]”j)�”}”(hj†!h]”hŒcomplete”…”�”}”(hjˆ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj„!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÍhj€!ubj•)�”}”(hhh]”hþ)�”}”(hX]Function called when the packet is completed, either with success or failure. In case of failure, the reason for the failure is indicated by the value of the provided status code argument. This value will be zero in case of success. Note that a call to this callback does not guarantee that the packet is not in use by the transport system any more.”h]”hX]Function called when the packet is completed, either with success or failure. In case of failure, the reason for the failure is indicated by the value of the provided status code argument. This value will be zero in case of success. Note that a call to this callback does not guarantee that the packet is not in use by the transport system any more.”…”�”}”(hjŸ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÉhjœ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj€!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j›!h´MÍhjC!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjû ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_packet (C struct)”Œ c.ssh_packet”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ ssh_packet”h]”jË)�”}”(hŒstruct ssh_packet”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(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/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÔubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî!h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÜ!h²hh³jí!h´MÔubjô)�”}”(hŒ ssh_packet”h]”jú)�”}”(hjÚ!h]”hŒ ssh_packet”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjü!ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÜ!h²hh³jí!h´MÔubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjØ!h²hh³jí!h´MÔubah}”(h]”jÓ!ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jí!h´MÔhjÕ!h²hubj&)�”}”(hhh]”hþ)�”}”(hŒSSH transport packet.”h]”hŒSSH transport packet.”…”�”}”(hj""h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÕhj"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÕ!h²hh³jí!h´MÔubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHj:"jIj:"jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hXÁ**Definition**:: struct ssh_packet { struct ssh_ptl *ptl; struct kref refcnt; u8 priority; struct { size_t len; u8 *ptr; } data; unsigned long state; ktime_t timestamp; struct list_head queue_node; struct list_head pending_node; const struct ssh_packet_ops *ops; }; **Members** ``ptl`` Pointer to the packet transport layer. May be ``NULL`` if the packet (or enclosing request) has not been submitted yet. ``refcnt`` Reference count of the packet. ``priority`` Priority of the packet. Must be computed via SSH_PACKET_PRIORITY(). Must only be accessed while holding the queue lock after first submission. ``data`` Raw message data. ``data.len`` Length of the raw message data. ``data.ptr`` Pointer to the raw message data buffer. ``state`` State and type flags describing current packet state (dynamic) and type (static). See :c:type:`enum ssh_packet_flags ` for possible options. ``timestamp`` Timestamp specifying when the latest transmission of a currently pending packet has been started. May be ``KTIME_MAX`` before or in-between transmission attempts. Used for the packet timeout implementation. Must only be accessed while holding the pending lock after first submission. ``queue_node`` The list node for the packet queue. ``pending_node`` The list node for the set of pending packets. ``ops`` Packet operations.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjF"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjB"ubhŒ:”…”�”}”(hjB"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÙhj>"ubj,)�”}”(hX0struct ssh_packet { struct ssh_ptl *ptl; struct kref refcnt; u8 priority; struct { size_t len; u8 *ptr; } data; unsigned long state; ktime_t timestamp; struct list_head queue_node; struct list_head pending_node; const struct ssh_packet_ops *ops; };”h]”hX0struct ssh_packet { struct ssh_ptl *ptl; struct kref refcnt; u8 priority; struct { size_t len; u8 *ptr; } data; unsigned long state; ktime_t timestamp; struct list_head queue_node; struct list_head pending_node; const struct ssh_packet_ops *ops; };”…”�”}”hj_"sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÛhj>"ubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hjp"h]”hŒMembers”…”�”}”(hjr"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjn"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mêhj>"ubjn)�”}”(hhh]”(js)�”}”(hŒ€``ptl`` Pointer to the packet transport layer. May be ``NULL`` if the packet (or enclosing request) has not been submitted yet. ”h]”(jy)�”}”(hŒ``ptl``”h]”j)�”}”(hj�"h]”hŒptl”…”�”}”(hj‘"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj�"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MØhj‰"ubj•)�”}”(hhh]”hþ)�”}”(hŒwPointer to the packet transport layer. May be ``NULL`` if the packet (or enclosing request) has not been submitted yet.”h]”(hŒ.Pointer to the packet transport layer. May be ”…”�”}”(hj¨"h²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj°"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¨"ubhŒA if the packet (or enclosing request) has not been submitted yet.”…”�”}”(hj¨"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M×hj¥"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj‰"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j¤"h´MØhj†"ubjs)�”}”(hŒ*``refcnt`` Reference count of the packet. ”h]”(jy)�”}”(hŒ ``refcnt``”h]”j)�”}”(hjÛ"h]”hŒrefcnt”…”�”}”(hjÝ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÙ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÙhjÕ"ubj•)�”}”(hhh]”hþ)�”}”(hŒReference count of the packet.”h]”hŒReference count of the packet.”…”�”}”(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&]”uh1jrh³jð"h´MÙhj†"ubjs)�”}”(hŒœ``priority`` Priority of the packet. Must be computed via SSH_PACKET_PRIORITY(). Must only be accessed while holding the queue lock after first submission. ”h]”(jy)�”}”(hŒ ``priority``”h]”j)�”}”(hj#h]”hŒpriority”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÜhj#ubj•)�”}”(hhh]”hþ)�”}”(hŒŽPriority of the packet. Must be computed via SSH_PACKET_PRIORITY(). Must only be accessed while holding the queue lock after first submission.”h]”hŒŽPriority of the packet. Must be computed via SSH_PACKET_PRIORITY(). Must only be accessed while holding the queue lock after first submission.”…”�”}”(hj-#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÚhj*#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j)#h´MÜhj†"ubjs)�”}”(hŒ``data`` Raw message data. ”h]”(jy)�”}”(hŒ``data``”h]”j)�”}”(hjN#h]”hŒdata”…”�”}”(hjP#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjL#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÝhjH#ubj•)�”}”(hhh]”hþ)�”}”(hŒRaw message data.”h]”hŒRaw message data.”…”�”}”(hjg#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jc#h´MÝhjd#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjH#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jc#h´MÝhj†"ubjs)�”}”(hŒ-``data.len`` Length of the raw message data. ”h]”(jy)�”}”(hŒ ``data.len``”h]”j)�”}”(hj‡#h]”hŒdata.len”…”�”}”(hj‰#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj…#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MÞhj�#ubj•)�”}”(hhh]”hþ)�”}”(hŒLength of the raw message data.”h]”hŒLength of the raw message data.”…”�”}”(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&]”uh1jrh³jœ#h´MÞhj†"ubjs)�”}”(hŒ5``data.ptr`` Pointer to the raw message data buffer. ”h]”(jy)�”}”(hŒ ``data.ptr``”h]”j)�”}”(hjÀ#h]”hŒdata.ptr”…”�”}”(hjÂ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¾#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mßhjº#ubj•)�”}”(hhh]”hþ)�”}”(hŒ'Pointer to the raw message data buffer.”h]”hŒ'Pointer to the raw message data buffer.”…”�”}”(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&]”uh1jrh³jÕ#h´Mßhj†"ubjs)�”}”(hŒ©``state`` State and type flags describing current packet state (dynamic) and type (static). See :c:type:`enum ssh_packet_flags ` for possible options. ”h]”(jy)�”}”(hŒ ``state``”h]”j)�”}”(hjù#h]”hŒstate”…”�”}”(hjû#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj÷#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mâhjó#ubj•)�”}”(hhh]”hþ)�”}”(hŒžState and type flags describing current packet state (dynamic) and type (static). See :c:type:`enum ssh_packet_flags ` for possible options.”h]”(hŒVState and type flags describing current packet state (dynamic) and type (static). See ”…”�”}”(hj$h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`enum ssh_packet_flags `”h]”j)�”}”(hj$h]”hŒenum ssh_packet_flags”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj$ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssh_packet_flags”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Màhj$ubhŒ for possible options.”…”�”}”(hj$h²hh³Nh´Nubeh}”(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&]”uh1jrh³j$h´Mâhj†"ubjs)�”}”(hX*``timestamp`` Timestamp specifying when the latest transmission of a currently pending packet has been started. May be ``KTIME_MAX`` before or in-between transmission attempts. Used for the packet timeout implementation. Must only be accessed while holding the pending lock after first submission. ”h]”(jy)�”}”(hŒ ``timestamp``”h]”j)�”}”(hjV$h]”hŒ timestamp”…”�”}”(hjX$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjT$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MçhjP$ubj•)�”}”(hhh]”hþ)�”}”(hXTimestamp specifying when the latest transmission of a currently pending packet has been started. May be ``KTIME_MAX`` before or in-between transmission attempts. Used for the packet timeout implementation. Must only be accessed while holding the pending lock after first submission.”h]”(hŒiTimestamp specifying when the latest transmission of a currently pending packet has been started. May be ”…”�”}”(hjo$h²hh³Nh´Nubj)�”}”(hŒ ``KTIME_MAX``”h]”hŒ KTIME_MAX”…”�”}”(hjw$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjo$ubhŒ¥ before or in-between transmission attempts. Used for the packet timeout implementation. Must only be accessed while holding the pending lock after first submission.”…”�”}”(hjo$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mãhjl$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjP$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jk$h´Mçhj†"ubjs)�”}”(hŒ3``queue_node`` The list node for the packet queue. ”h]”(jy)�”}”(hŒ``queue_node``”h]”j)�”}”(hj¢$h]”hŒ queue_node”…”�”}”(hj¤$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj $ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mèhjœ$ubj•)�”}”(hhh]”hþ)�”}”(hŒ#The list node for the packet queue.”h]”hŒ#The list node for the packet 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&]”uh1jrh³j·$h´Mèhj†"ubjs)�”}”(hŒ?``pending_node`` The list node for the set of pending packets. ”h]”(jy)�”}”(hŒ``pending_node``”h]”j)�”}”(hjÛ$h]”hŒ pending_node”…”�”}”(hjÝ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÙ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MéhjÕ$ubj•)�”}”(hhh]”hþ)�”}”(hŒ-The list node for the set of pending packets.”h]”hŒ-The list node for the set of pending packets.”…”�”}”(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&]”uh1jrh³jð$h´Méhj†"ubjs)�”}”(hŒ``ops`` Packet operations.”h]”(jy)�”}”(hŒ``ops``”h]”j)�”}”(hj%h]”hŒops”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Méhj%ubj•)�”}”(hhh]”hþ)�”}”(hŒPacket operations.”h]”hŒPacket operations.”…”�”}”(hj-%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mêhj*%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j)%h´Méhj†"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj>"ube•h}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ ssh_packet_set_data (C function)”Œc.ssh_packet_set_data”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒDvoid ssh_packet_set_data (struct ssh_packet *p, u8 *ptr, size_t len)”h]”jË)�”}”(hŒCvoid ssh_packet_set_data(struct ssh_packet *p, u8 *ptr, size_t len)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjn%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjj%h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}%h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjj%h²hh³j|%h´Mubjô)�”}”(hŒssh_packet_set_data”h]”jú)�”}”(hŒssh_packet_set_data”h]”hŒssh_packet_set_data”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj‹%ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjj%h²hh³j|%h´Mubjv )�”}”(hŒ+(struct ssh_packet *p, u8 *ptr, size_t len)”h]”(j| )�”}”(hŒstruct ssh_packet *p”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj«%h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj§%ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸%h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj§%ubh)�”}”(hhh]”jú)�”}”(hŒ ssh_packet”h]”hŒ ssh_packet”…”�”}”(hjÉ%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÆ%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jË%Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j‘%sbŒc.ssh_packet_set_data”†”asbuh1hhj§%ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé%h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj§%ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj÷%h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj§%ubjú)�”}”(hjÙ h]”hŒp”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj§%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj£%ubj| )�”}”(hŒu8 *ptr”h]”(h)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j!&Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jå%Œc.ssh_packet_set_data”†”asbuh1hhj&ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=&h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj&ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjK&h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj&ubjú)�”}”(hŒptr”h]”hŒptr”…”�”}”(hjX&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj£%ubj| )�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jú)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjt&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjq&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jv&Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jå%Œc.ssh_packet_set_data”†”asbuh1hhjm&ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’&h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjm&ubjú)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjm&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj£%ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjj%h²hh³j|%h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjf%h²hh³j|%h´Mubah}”(h]”ja%ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j|%h´Mhjc%h²hubj&)�”}”(hhh]”hþ)�”}”(hŒSet raw message data of packet.”h]”hŒSet raw message data of packet.”…”�”}”(hjÊ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MhjÇ&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjc%h²hh³j|%h´Mubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjâ&jIjâ&jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hX�**Parameters** ``struct ssh_packet *p`` The packet for which the message data should be set. ``u8 *ptr`` Pointer to the memory holding the message data. ``size_t len`` Length of the message data. **Description** Sets the raw message data buffer of the packet to the provided memory. The memory is not copied. Instead, the caller is responsible for management (i.e. allocation and deallocation) of the memory. The caller must ensure that the provided memory is valid and contains a valid SSH message, starting from the time of submission of the packet until the ``release`` callback has been called. During this time, the memory may not be altered in any way.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjì&h]”hŒ Parameters”…”�”}”(hjî&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjê&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhjæ&ubjn)�”}”(hhh]”(js)�”}”(hŒN``struct ssh_packet *p`` The packet for which the message data should be set. ”h]”(jy)�”}”(hŒ``struct ssh_packet *p``”h]”j)�”}”(hj 'h]”hŒstruct ssh_packet *p”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj 'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhj'ubj•)�”}”(hhh]”hþ)�”}”(hŒ4The packet for which the message data should be set.”h]”hŒ4The packet for which the message data should be set.”…”�”}”(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&]”uh1jrh³j 'h´Mhj'ubjs)�”}”(hŒ<``u8 *ptr`` Pointer to the memory holding the message data. ”h]”(jy)�”}”(hŒ ``u8 *ptr``”h]”j)�”}”(hjD'h]”hŒu8 *ptr”…”�”}”(hjF'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjB'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhj>'ubj•)�”}”(hhh]”hþ)�”}”(hŒ/Pointer to the memory holding the message data.”h]”hŒ/Pointer to the memory holding the message data.”…”�”}”(hj]'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jY'h´MhjZ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj>'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jY'h´Mhj'ubjs)�”}”(hŒ+``size_t len`` Length of the message data. ”h]”(jy)�”}”(hŒ``size_t len``”h]”j)�”}”(hj}'h]”hŒ size_t len”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj{'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhjw'ubj•)�”}”(hhh]”hþ)�”}”(hŒLength of the message data.”h]”hŒLength of the message data.”…”�”}”(hj–'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j’'h´Mhj“'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjw'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j’'h´Mhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjæ&ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj¸'h]”hŒ Description”…”�”}”(hjº'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¶'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhjæ&ubhþ)�”}”(hX¾Sets the raw message data buffer of the packet to the provided memory. The memory is not copied. Instead, the caller is responsible for management (i.e. allocation and deallocation) of the memory. The caller must ensure that the provided memory is valid and contains a valid SSH message, starting from the time of submission of the packet until the ``release`` callback has been called. During this time, the memory may not be altered in any way.”h]”(hX]Sets the raw message data buffer of the packet to the provided memory. The memory is not copied. Instead, the caller is responsible for management (i.e. allocation and deallocation) of the memory. The caller must ensure that the provided memory is valid and contains a valid SSH message, starting from the time of submission of the packet until the ”…”�”}”(hjÎ'h²hh³Nh´Nubj)�”}”(hŒ ``release``”h]”hŒrelease”…”�”}”(hjÖ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÎ'ubhŒV callback has been called. During this time, the memory may not be altered in any way.”…”�”}”(hjÎ'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhjæ&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_request_ops (C struct)”Œc.ssh_request_ops”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssh_request_ops”h]”jË)�”}”(hŒstruct ssh_request_ops”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(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/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj (h²hh³j(h´Mubjô)�”}”(hŒssh_request_ops”h]”jú)�”}”(hj (h]”hŒssh_request_ops”…”�”}”(hj/(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj+(ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj (h²hh³j(h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj(h²hh³j(h´Mubah}”(h]”j(ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j(h´Mhj(h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ&Callback operations for a SSH request.”h]”hŒ&Callback operations for a SSH request.”…”�”}”(hjQ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M=hjN(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj(h²hh³j(h´Mubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHji(jIji(jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hX**Definition**:: struct ssh_request_ops { void (*release)(struct ssh_request *rqst); void (*complete)(struct ssh_request *rqst, const struct ssh_command *cmd, const struct ssam_span *data, int status); }; **Members** ``release`` Function called when the request's reference count reaches zero. This callback must be relied upon to ensure that the request has left the transport systems (both, packet an request systems). ``complete`` Function called when the request is completed, either with success or failure. The command data for the request response is provided via the :c:type:`struct ssh_command ` parameter (``cmd``), the command payload of the request response via the :c:type:`struct ssh_span ` parameter (``data``).”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hju(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjq(ubhŒ:”…”�”}”(hjq(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MAhjm(ubj,)�”}”(hŒÃstruct ssh_request_ops { void (*release)(struct ssh_request *rqst); void (*complete)(struct ssh_request *rqst, const struct ssh_command *cmd, const struct ssam_span *data, int status); };”h]”hŒÃstruct ssh_request_ops { void (*release)(struct ssh_request *rqst); void (*complete)(struct ssh_request *rqst, const struct ssh_command *cmd, const struct ssam_span *data, int status); };”…”�”}”hjŽ(sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MChjm(ubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hjŸ(h]”hŒMembers”…”�”}”(hj¡(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj�(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MHhjm(ubjn)�”}”(hhh]”(js)�”}”(hŒÌ``release`` Function called when the request's reference count reaches zero. This callback must be relied upon to ensure that the request has left the transport systems (both, packet an request systems). ”h]”(jy)�”}”(hŒ ``release``”h]”j)�”}”(hj¾(h]”hŒrelease”…”�”}”(hjÀ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¼(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MAhj¸(ubj•)�”}”(hhh]”hþ)�”}”(hŒ¿Function called when the request's reference count reaches zero. This callback must be relied upon to ensure that the request has left the transport systems (both, packet an request systems).”h]”hŒÁFunction called when the request’s reference count reaches zero. This callback must be relied upon to ensure that the request has left the transport systems (both, packet an request systems).”…”�”}”(hj×(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M?hjÔ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj¸(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÓ(h´MAhjµ(ubjs)�”}”(hXH``complete`` Function called when the request is completed, either with success or failure. The command data for the request response is provided via the :c:type:`struct ssh_command ` parameter (``cmd``), the command payload of the request response via the :c:type:`struct ssh_span ` parameter (``data``).”h]”(jy)�”}”(hŒ ``complete``”h]”j)�”}”(hjø(h]”hŒcomplete”…”�”}”(hjú(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjö(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MEhjò(ubj•)�”}”(hhh]”hþ)�”}”(hX;Function called when the request is completed, either with success or failure. The command data for the request response is provided via the :c:type:`struct ssh_command ` parameter (``cmd``), the command payload of the request response via the :c:type:`struct ssh_span ` parameter (``data``).”h]”(hŒ�Function called when the request is completed, either with success or failure. The command data for the request response is provided via the ”…”�”}”(hj)h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct ssh_command `”h]”j)�”}”(hj)h]”hŒstruct ssh_command”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj)ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssh_command”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MBhj)ubhŒ parameter (”…”�”}”(hj)h²hh³Nh´Nubj)�”}”(hŒ``cmd``”h]”hŒcmd”…”�”}”(hj=)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj)ubhŒ7), the command payload of the request response via the ”…”�”}”(hj)h²hh³Nh´Nubh)�”}”(hŒ$:c:type:`struct ssh_span `”h]”j)�”}”(hjQ)h]”hŒstruct ssh_span”…”�”}”(hjS)h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjO)ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssh_span”uh1hh³j8)h´MBhj)ubhŒ parameter (”…”�”}”hj)sbj)�”}”(hŒ``data``”h]”hŒdata”…”�”}”(hjr)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj)ubhŒ).”…”�”}”(hj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j8)h´MBhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjò(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j )h´MEhjµ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjm(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj¥)h]”hŒ Description”…”�”}”(hj§)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj£)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MIhj�h²hubj )�”}”(hX9If the request does not have any response or has not been completed with success, both ``cmd`` and ``data`` parameters will be NULL. If the request response does not have any command payload, the ``data`` span will be an empty (zero-length) span. In case of failure, the reason for the failure is indicated by the value of the provided status code argument (``status``). This value will be zero in case of success and a regular errno otherwise. Note that a call to this callback does not guarantee that the request is not in use by the transport systems any more. ”h]”(hþ)�”}”(hŒöIf the request does not have any response or has not been completed with success, both ``cmd`` and ``data`` parameters will be NULL. If the request response does not have any command payload, the ``data`` span will be an empty (zero-length) span.”h]”(hŒWIf the request does not have any response or has not been completed with success, both ”…”�”}”(hj¿)h²hh³Nh´Nubj)�”}”(hŒ``cmd``”h]”hŒcmd”…”�”}”(hjÇ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¿)ubhŒ and ”…”�”}”(hj¿)h²hh³Nh´Nubj)�”}”(hŒ``data``”h]”hŒdata”…”�”}”(hjÙ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¿)ubhŒY parameters will be NULL. If the request response does not have any command payload, the ”…”�”}”(hj¿)h²hh³Nh´Nubj)�”}”(hŒ``data``”h]”hŒdata”…”�”}”(hjë)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¿)ubhŒ* span will be an empty (zero-length) span.”…”�”}”(hj¿)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MFhj»)ubhþ)�”}”(hŒÅIn case of failure, the reason for the failure is indicated by the value of the provided status code argument (``status``). This value will be zero in case of success and a regular errno otherwise.”h]”(hŒoIn case of failure, the reason for the failure is indicated by the value of the provided status code argument (”…”�”}”(hj*h²hh³Nh´Nubj)�”}”(hŒ ``status``”h]”hŒstatus”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj*ubhŒL). This value will be zero in case of success and a regular errno otherwise.”…”�”}”(hj*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MKhj»)ubhþ)�”}”(hŒvNote that a call to this callback does not guarantee that the request is not in use by the transport systems any more.”h]”hŒvNote that a call to this callback does not guarantee that the request is not in use by the transport systems any more.”…”�”}”(hj%*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MPhj»)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j*h´MFhj�h²hubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_request (C struct)”Œ c.ssh_request”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ ssh_request”h]”jË)�”}”(hŒstruct ssh_request”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjS*h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjO*h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MVubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja*h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjO*h²hh³j`*h´MVubjô)�”}”(hŒ ssh_request”h]”jú)�”}”(hjM*h]”hŒ ssh_request”…”�”}”(hjs*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjo*ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjO*h²hh³j`*h´MVubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjK*h²hh³j`*h´MVubah}”(h]”jF*ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j`*h´MVhjH*h²hubj&)�”}”(hhh]”hþ)�”}”(hŒSSH transport request.”h]”hŒSSH transport request.”…”�”}”(hj•*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M\hj’*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjH*h²hh³j`*h´MVubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHj­*jIj­*jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hX7**Definition**:: struct ssh_request { struct ssh_packet packet; struct list_head node; unsigned long state; ktime_t timestamp; const struct ssh_request_ops *ops; }; **Members** ``packet`` The underlying SSH transport packet. ``node`` List node for the request queue and pending set. ``state`` State and type flags describing current request state (dynamic) and type (static). See :c:type:`enum ssh_request_flags ` for possible options. ``timestamp`` Timestamp specifying when we start waiting on the response of the request. This is set once the underlying packet has been completed and may be ``KTIME_MAX`` before that, or when the request does not expect a response. Used for the request timeout implementation. ``ops`` Request Operations.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¹*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjµ*ubhŒ:”…”�”}”(hjµ*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M`hj±*ubj,)�”}”(hŒ§struct ssh_request { struct ssh_packet packet; struct list_head node; unsigned long state; ktime_t timestamp; const struct ssh_request_ops *ops; };”h]”hŒ§struct ssh_request { struct ssh_packet packet; struct list_head node; unsigned long state; ktime_t timestamp; const struct ssh_request_ops *ops; };”…”�”}”hjÒ*sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mbhj±*ubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hjã*h]”hŒMembers”…”�”}”(hjå*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjá*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mjhj±*ubjn)�”}”(hhh]”(js)�”}”(hŒ0``packet`` The underlying SSH transport packet. ”h]”(jy)�”}”(hŒ ``packet``”h]”j)�”}”(hj+h]”hŒpacket”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M^hjü*ubj•)�”}”(hhh]”hþ)�”}”(hŒ$The underlying SSH transport packet.”h]”hŒ$The underlying SSH transport packet.”…”�”}”(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&]”uh1jrh³j+h´M^hjù*ubjs)�”}”(hŒ:``node`` List node for the request queue and pending set. ”h]”(jy)�”}”(hŒ``node``”h]”j)�”}”(hj;+h]”hŒnode”…”�”}”(hj=+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj9+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M_hj5+ubj•)�”}”(hhh]”hþ)�”}”(hŒ0List node for the request queue and pending set.”h]”hŒ0List node for the request queue and pending set.”…”�”}”(hjT+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jP+h´M_hjQ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj5+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jP+h´M_hjù*ubjs)�”}”(hŒ¬``state`` State and type flags describing current request state (dynamic) and type (static). See :c:type:`enum ssh_request_flags ` for possible options. ”h]”(jy)�”}”(hŒ ``state``”h]”j)�”}”(hjt+h]”hŒstate”…”�”}”(hjv+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjr+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mbhjn+ubj•)�”}”(hhh]”hþ)�”}”(hŒ¡State and type flags describing current request state (dynamic) and type (static). See :c:type:`enum ssh_request_flags ` for possible options.”h]”(hŒWState and type flags describing current request state (dynamic) and type (static). See ”…”�”}”(hj�+h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`enum ssh_request_flags `”h]”j)�”}”(hj—+h]”hŒenum ssh_request_flags”…”�”}”(hj™+h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj•+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssh_request_flags”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M`hj�+ubhŒ for possible options.”…”�”}”(hj�+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j´+h´M`hjŠ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjn+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j‰+h´Mbhjù*ubjs)�”}”(hX``timestamp`` Timestamp specifying when we start waiting on the response of the request. This is set once the underlying packet has been completed and may be ``KTIME_MAX`` before that, or when the request does not expect a response. Used for the request timeout implementation. ”h]”(jy)�”}”(hŒ ``timestamp``”h]”j)�”}”(hjÑ+h]”hŒ timestamp”…”�”}”(hjÓ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÏ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MghjË+ubj•)�”}”(hhh]”hþ)�”}”(hXTimestamp specifying when we start waiting on the response of the request. This is set once the underlying packet has been completed and may be ``KTIME_MAX`` before that, or when the request does not expect a response. Used for the request timeout implementation.”h]”(hŒ�Timestamp specifying when we start waiting on the response of the request. This is set once the underlying packet has been completed and may be ”…”�”}”(hjê+h²hh³Nh´Nubj)�”}”(hŒ ``KTIME_MAX``”h]”hŒ KTIME_MAX”…”�”}”(hjò+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjê+ubhŒj before that, or when the request does not expect a response. Used for the request timeout implementation.”…”�”}”(hjê+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mchjç+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjË+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jæ+h´Mghjù*ubjs)�”}”(hŒ``ops`` Request Operations.”h]”(jy)�”}”(hŒ``ops``”h]”j)�”}”(hj,h]”hŒops”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mghj,ubj•)�”}”(hhh]”hþ)�”}”(hŒRequest Operations.”h]”hŒRequest Operations.”…”�”}”(hj6,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mhhj3,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j2,h´Mghjù*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj±*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œto_ssh_request (C function)”Œc.to_ssh_request”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ:struct ssh_request * to_ssh_request (struct ssh_packet *p)”h]”jË)�”}”(hŒ8struct ssh_request *to_ssh_request(struct ssh_packet *p)”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjw,h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjs,h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mtubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…,h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjs,h²hh³j„,h´Mtubh)�”}”(hhh]”jú)�”}”(hŒ ssh_request”h]”hŒ ssh_request”…”�”}”(hj–,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj“,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j˜,Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œto_ssh_request”sbŒc.to_ssh_request”†”asbuh1hhjs,h²hh³j„,h´Mtubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·,h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjs,h²hh³j„,h´MtubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjÅ,h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjs,h²hh³j„,h´Mtubjô)�”}”(hŒto_ssh_request”h]”jú)�”}”(hj´,h]”hŒto_ssh_request”…”�”}”(hjÖ,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÒ,ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjs,h²hh³j„,h´Mtubjv )�”}”(hŒ(struct ssh_packet *p)”h]”j| )�”}”(hŒstruct ssh_packet *p”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjñ,h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjí,ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ,h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjí,ubh)�”}”(hhh]”jú)�”}”(hŒ ssh_packet”h]”hŒ ssh_packet”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj -ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j-Œmodname”NŒ classname”Njžj¡)�”}”j¤]”j²,Œc.to_ssh_request”†”asbuh1hhjí,ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj--h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjí,ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj;-h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjí,ubjú)�”}”(hjÙ h]”hŒp”…”�”}”(hjH-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjí,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjé,ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjs,h²hh³j„,h´Mtubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjo,h²hh³j„,h´Mtubah}”(h]”jj,ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j„,h´Mthjl,h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ/Cast a SSH packet to its enclosing SSH request.”h]”hŒ/Cast a SSH packet to its enclosing SSH request.”…”�”}”(hjq-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mthjn-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjl,h²hh³j„,h´Mtubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj‰-jIj‰-jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hX§**Parameters** ``struct ssh_packet *p`` The packet to cast. **Description** Casts the given :c:type:`struct ssh_packet ` to its enclosing :c:type:`struct ssh_request `. The caller is responsible for making sure that the packet is actually wrapped in a :c:type:`struct ssh_request `. **Return** Returns the :c:type:`struct ssh_request ` wrapping the provided packet.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj“-h]”hŒ Parameters”…”�”}”(hj•-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj‘-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mxhj�-ubjn)�”}”(hhh]”js)�”}”(hŒ-``struct ssh_packet *p`` The packet to cast. ”h]”(jy)�”}”(hŒ``struct ssh_packet *p``”h]”j)�”}”(hj²-h]”hŒstruct ssh_packet *p”…”�”}”(hj´-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj°-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Muhj¬-ubj•)�”}”(hhh]”hþ)�”}”(hŒThe packet to cast.”h]”hŒThe packet to cast.”…”�”}”(hjË-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÇ-h´MuhjÈ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj¬-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÇ-h´Muhj©-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj�-ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjí-h]”hŒ Description”…”�”}”(hjï-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjë-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mwhj�-ubhþ)�”}”(hŒôCasts the given :c:type:`struct ssh_packet ` to its enclosing :c:type:`struct ssh_request `. The caller is responsible for making sure that the packet is actually wrapped in a :c:type:`struct ssh_request `.”h]”(hŒCasts the given ”…”�”}”(hj.h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct ssh_packet `”h]”j)�”}”(hj .h]”hŒstruct ssh_packet”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj .ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssh_packet”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mvhj.ubhŒ to its enclosing ”…”�”}”(hj.h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct ssh_request `”h]”j)�”}”(hj1.h]”hŒstruct ssh_request”…”�”}”(hj3.h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj/.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssh_request”uh1hh³j*.h´Mvhj.ubhŒU. The caller is responsible for making sure that the packet is actually wrapped in a ”…”�”}”(hj.h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct ssh_request `”h]”j)�”}”(hjT.h]”hŒstruct ssh_request”…”�”}”(hjV.h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjR.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssh_request”uh1hh³j*.h´Mvhj.ubhŒ.”…”�”}”(hj.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j*.h´Mvhj�-ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj}.h]”hŒReturn”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj{.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mzhj�-ubhþ)�”}”(hŒTReturns the :c:type:`struct ssh_request ` wrapping the provided packet.”h]”(hŒ Returns the ”…”�”}”(hj“.h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct ssh_request `”h]”j)�”}”(hj�.h]”hŒstruct ssh_request”…”�”}”(hjŸ.h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj›.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssh_request”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M{hj“.ubhŒ wrapping the provided packet.”…”�”}”(hj“.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jº.h´M{hj�-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_request_get (C function)”Œc.ssh_request_get”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ`, enclosed in it. See also ssh_request_put(), ssh_packet_get(). **Return** Returns the request provided as input.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj0h]”hŒ Parameters”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M‡hjü/ubjn)�”}”(hhh]”js)�”}”(hŒK``struct ssh_request *r`` The request to increment the reference count of. ”h]”(jy)�”}”(hŒ``struct ssh_request *r``”h]”j)�”}”(hj!0h]”hŒstruct ssh_request *r”…”�”}”(hj#0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M„hj0ubj•)�”}”(hhh]”hþ)�”}”(hŒ0The request to increment the reference count of.”h]”hŒ0The request to increment the reference count of.”…”�”}”(hj:0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j60h´M„hj70ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j60h´M„hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjü/ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj\0h]”hŒ Description”…”�”}”(hj^0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjZ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M†hjü/ubhþ)�”}”(hŒ£Increments the reference count of the given request by incrementing the reference count of the underlying :c:type:`struct ssh_packet `, enclosed in it.”h]”(hŒjIncrements the reference count of the given request by incrementing the reference count of the underlying ”…”�”}”(hjr0h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct ssh_packet `”h]”j)�”}”(hj|0h]”hŒstruct ssh_packet”…”�”}”(hj~0h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjz0ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssh_packet”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M…hjr0ubhŒ, enclosed in it.”…”�”}”(hjr0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j™0h´M…hjü/ubhþ)�”}”(hŒ-See also ssh_request_put(), ssh_packet_get().”h]”hŒ-See also ssh_request_put(), ssh_packet_get().”…”�”}”(hj¤0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mˆhjü/ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjµ0h]”hŒReturn”…”�”}”(hj·0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj³0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´MŠhjü/ubhþ)�”}”(hŒ&Returns the request provided as input.”h]”hŒ&Returns the request provided as input.”…”�”}”(hjË0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M‹hjü/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_request_put (C function)”Œc.ssh_request_put”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ,void ssh_request_put (struct ssh_request *r)”h]”jË)�”}”(hŒ+void ssh_request_put(struct ssh_request *r)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjú0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjö0h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M“ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjö0h²hh³j1h´M“ubjô)�”}”(hŒssh_request_put”h]”jú)�”}”(hŒssh_request_put”h]”hŒssh_request_put”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj1ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjö0h²hh³j1h´M“ubjv )�”}”(hŒ(struct ssh_request *r)”h]”j| )�”}”(hŒstruct ssh_request *r”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj71h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj31ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD1h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj31ubh)�”}”(hhh]”jú)�”}”(hŒ ssh_request”h]”hŒ ssh_request”…”�”}”(hjU1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjR1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jW1Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j1sbŒc.ssh_request_put”†”asbuh1hhj31ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju1h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj31ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjƒ1h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj31ubjú)�”}”(hj¸/h]”hŒr”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj31ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj/1ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjö0h²hh³j1h´M“ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjò0h²hh³j1h´M“ubah}”(h]”jí0ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j1h´M“hjï0h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ%Decrement reference count of request.”h]”hŒ%Decrement reference count of request.”…”�”}”(hj¹1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M“hj¶1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjï0h²hh³j1h´M“ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjÑ1jIjÑ1jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hXø**Parameters** ``struct ssh_request *r`` The request to decrement the reference count of. **Description** Decrements the reference count of the given request by decrementing the reference count of the underlying :c:type:`struct ssh_packet `, enclosed in it. If the reference count reaches zero, the ``release`` callback specified in the request's :c:type:`struct ssh_request_ops `, i.e. ``r->ops->release``, will be called. See also ssh_request_get(), ssh_packet_put().”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjÛ1h]”hŒ Parameters”…”�”}”(hjÝ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÙ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M—hjÕ1ubjn)�”}”(hhh]”js)�”}”(hŒK``struct ssh_request *r`` The request to decrement the reference count of. ”h]”(jy)�”}”(hŒ``struct ssh_request *r``”h]”j)�”}”(hjú1h]”hŒstruct ssh_request *r”…”�”}”(hjü1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjø1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M”hjô1ubj•)�”}”(hhh]”hþ)�”}”(hŒ0The request to decrement the reference count of.”h]”hŒ0The request to decrement the reference count of.”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j2h´M”hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjô1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j2h´M”hjñ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjÕ1ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj52h]”hŒ Description”…”�”}”(hj72h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj32ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M–hjÕ1ubhþ)�”}”(hXZDecrements the reference count of the given request by decrementing the reference count of the underlying :c:type:`struct ssh_packet `, enclosed in it. If the reference count reaches zero, the ``release`` callback specified in the request's :c:type:`struct ssh_request_ops `, i.e. ``r->ops->release``, will be called.”h]”(hŒjDecrements the reference count of the given request by decrementing the reference count of the underlying ”…”�”}”(hjK2h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct ssh_packet `”h]”j)�”}”(hjU2h]”hŒstruct ssh_packet”…”�”}”(hjW2h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjS2ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssh_packet”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M•hjK2ubhŒ;, enclosed in it. If the reference count reaches zero, the ”…”�”}”(hjK2h²hh³Nh´Nubj)�”}”(hŒ ``release``”h]”hŒrelease”…”�”}”(hjw2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjK2ubhŒ' callback specified in the request’s ”…”�”}”(hjK2h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct ssh_request_ops `”h]”j)�”}”(hj‹2h]”hŒstruct ssh_request_ops”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj‰2ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssh_request_ops”uh1hh³jr2h´M•hjK2ubhŒ, i.e. ”…”�”}”(hjK2h²hh³Nh´Nubj)�”}”(hŒ``r->ops->release``”h]”hŒr->ops->release”…”�”}”(hj¬2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjK2ubhŒ, will be called.”…”�”}”(hjK2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jr2h´M•hjÕ1ubhþ)�”}”(hŒ-See also ssh_request_get(), ssh_packet_put().”h]”hŒ-See also ssh_request_get(), ssh_packet_put().”…”�”}”(hjÄ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M›hjÕ1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ!ssh_request_set_data (C function)”Œc.ssh_request_set_data”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒFvoid ssh_request_set_data (struct ssh_request *r, u8 *ptr, size_t len)”h]”jË)�”}”(hŒEvoid ssh_request_set_data(struct ssh_request *r, u8 *ptr, size_t len)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjó2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjï2h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M¥ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjï2h²hh³j3h´M¥ubjô)�”}”(hŒssh_request_set_data”h]”jú)�”}”(hŒssh_request_set_data”h]”hŒssh_request_set_data”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj3ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjï2h²hh³j3h´M¥ubjv )�”}”(hŒ,(struct ssh_request *r, u8 *ptr, size_t len)”h]”(j| )�”}”(hŒstruct ssh_request *r”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj03h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj,3ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=3h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj,3ubh)�”}”(hhh]”jú)�”}”(hŒ ssh_request”h]”hŒ ssh_request”…”�”}”(hjN3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjK3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jP3Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j3sbŒc.ssh_request_set_data”†”asbuh1hhj,3ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn3h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj,3ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj|3h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj,3ubjú)�”}”(hj¸/h]”hŒr”…”�”}”(hj‰3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj,3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj(3ubj| )�”}”(hŒu8 *ptr”h]”(h)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj¤3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj¡3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j¦3Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jj3Œc.ssh_request_set_data”†”asbuh1hhj�3ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ3h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj�3ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjÐ3h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj�3ubjú)�”}”(hŒptr”h]”hŒptr”…”�”}”(hjÝ3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj�3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj(3ubj| )�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jú)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjù3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjö3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jû3Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jj3Œc.ssh_request_set_data”†”asbuh1hhjò3ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjò3ubjú)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj%4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjò3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj(3ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjï2h²hh³j3h´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjë2h²hh³j3h´M¥ubah}”(h]”jæ2ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j3h´M¥hjè2h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ Set raw message data of request.”h]”hŒ Set raw message data of request.”…”�”}”(hjO4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M¥hjL4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjè2h²hh³j3h´M¥ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjg4jIjg4jJ‰jK‰jL‰uh1j¿h²hhj�h³Nh´NubjN)�”}”(hX´**Parameters** ``struct ssh_request *r`` The request for which the message data should be set. ``u8 *ptr`` Pointer to the memory holding the message data. ``size_t len`` Length of the message data. **Description** Sets the raw message data buffer of the underlying packet to the specified buffer. Does not copy the actual message data, just sets the buffer pointer and length. Refer to ssh_packet_set_data() for more details.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjq4h]”hŒ Parameters”…”�”}”(hjs4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjo4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M©hjk4ubjn)�”}”(hhh]”(js)�”}”(hŒP``struct ssh_request *r`` The request for which the message data should be set. ”h]”(jy)�”}”(hŒ``struct ssh_request *r``”h]”j)�”}”(hj�4h]”hŒstruct ssh_request *r”…”�”}”(hj’4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjŽ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M¦hjŠ4ubj•)�”}”(hhh]”hþ)�”}”(hŒ5The request for which the message data should be set.”h]”hŒ5The request for which the message data should be set.”…”�”}”(hj©4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¥4h´M¦hj¦4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjŠ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j¥4h´M¦hj‡4ubjs)�”}”(hŒ<``u8 *ptr`` Pointer to the memory holding the message data. ”h]”(jy)�”}”(hŒ ``u8 *ptr``”h]”j)�”}”(hjÉ4h]”hŒu8 *ptr”…”�”}”(hjË4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÇ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M§hjÃ4ubj•)�”}”(hhh]”hþ)�”}”(hŒ/Pointer to the memory holding the message data.”h]”hŒ/Pointer to the memory holding the message data.”…”�”}”(hjâ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÞ4h´M§hjß4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÃ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÞ4h´M§hj‡4ubjs)�”}”(hŒ+``size_t len`` Length of the message data. ”h]”(jy)�”}”(hŒ``size_t len``”h]”j)�”}”(hj5h]”hŒ size_t len”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M¨hjü4ubj•)�”}”(hhh]”hþ)�”}”(hŒLength of the message data.”h]”hŒLength of the message data.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j5h´M¨hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjü4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j5h´M¨hj‡4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjk4ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj=5h]”hŒ Description”…”�”}”(hj?5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj;5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´Mªhjk4ubhþ)�”}”(hŒÓSets the raw message data buffer of the underlying packet to the specified buffer. Does not copy the actual message data, just sets the buffer pointer and length. Refer to ssh_packet_set_data() for more details.”h]”hŒÓSets the raw message data buffer of the underlying packet to the specified buffer. Does not copy the actual message data, just sets the buffer pointer and length. Refer to ssh_packet_set_data() for more details.”…”�”}”(hjS5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:14: ./include/linux/surface_aggregator/serial_hub.h”h´M©hjk4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssh_packet_get (C function)”Œc.ssh_packet_get”hNt”auh1j®hj�h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ>struct ssh_packet * ssh_packet_get (struct ssh_packet *packet)”h]”jË)�”}”(hŒ`, i.e. ``packet->ops->release``, will be called. See ssh_packet_get() for the counter-part of this function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjG8h]”hŒ Parameters”…”�”}”(hjI8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjE8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ�/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:16: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MhjA8ubjn)�”}”(hhh]”js)�”}”(hŒN``struct ssh_packet *packet`` The packet to decrement the reference count of. ”h]”(jy)�”}”(hŒ``struct ssh_packet *packet``”h]”j)�”}”(hjf8h]”hŒstruct ssh_packet *packet”…”�”}”(hjh8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjd8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ�/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:16: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mhj`8ubj•)�”}”(hhh]”hþ)�”}”(hŒ/The packet to decrement the reference count of.”h]”hŒ/The packet to decrement the reference count of.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j{8h´Mhj|8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj`8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j{8h´Mhj]8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjA8ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj¡8h]”hŒ Description”…”�”}”(hj£8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjŸ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ�/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:16: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´MhjA8ubhþ)�”}”(hŒ¸If the reference count reaches zero, the ``release`` callback specified in the packet's :c:type:`struct ssh_packet_ops `, i.e. ``packet->ops->release``, will be called.”h]”(hŒ)If the reference count reaches zero, the ”…”�”}”(hj·8h²hh³Nh´Nubj)�”}”(hŒ ``release``”h]”hŒrelease”…”�”}”(hj¿8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj·8ubhŒ& callback specified in the packet’s ”…”�”}”(hj·8h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct ssh_packet_ops `”h]”j)�”}”(hjÓ8h]”hŒstruct ssh_packet_ops”…”�”}”(hjÕ8h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjÑ8ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssh_packet_ops”uh1hh³Œ�/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:16: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´Mhj·8ubhŒ, i.e. ”…”�”}”(hj·8h²hh³Nh´Nubj)�”}”(hŒ``packet->ops->release``”h]”hŒpacket->ops->release”…”�”}”(hjõ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj·8ubhŒ, will be called.”…”�”}”(hj·8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jð8h´MhjA8ubhþ)�”}”(hŒ;See ssh_packet_get() for the counter-part of this function.”h]”hŒ;See ssh_packet_get() for the counter-part of this function.”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ�/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:16: ./drivers/platform/surface/aggregator/ssh_packet_layer.c”h´M hjA8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj�h²hh³Nh´Nubeh}”(h]”j1ah ]”h"]”Œserial hub communication”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒController and Core Interface”h]”hŒController and Core Interface”…”�”}”(hj-9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjMuh1hÍhj*9h²hh³hÇh´Kubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_event_flags (C enum)”Œc.ssam_event_flags”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssam_event_flags”h]”jË)�”}”(hŒenum ssam_event_flags”h]”(jÑ)�”}”(hjÔh]”hŒenum”…”�”}”(hjT9h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjP9h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Kubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb9h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjP9h²hh³ja9h´Kubjô)�”}”(hŒssam_event_flags”h]”jú)�”}”(hjN9h]”hŒssam_event_flags”…”�”}”(hjt9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjp9ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjP9h²hh³ja9h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjL9h²hh³ja9h´Kubah}”(h]”jG9ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³ja9h´KhjI9h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ'Flags for enabling/disabling SAM events”h]”hŒ'Flags for enabling/disabling SAM events”…”�”}”(hj–9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Khj“9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjI9h²hh³ja9h´Kubeh}”(h]”h ]”(jBŒenum”eh"]”h$]”h&]”jGjBjHj®9jIj®9jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hŒ\**Constants** ``SSAM_EVENT_SEQUENCED`` The event will be sent via a sequenced data frame.”h]”(hþ)�”}”(hŒ **Constants**”h]”jX)�”}”(hj¸9h]”hŒ Constants”…”�”}”(hjº9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¶9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Khj²9ubjn)�”}”(hhh]”js)�”}”(hŒK``SSAM_EVENT_SEQUENCED`` The event will be sent via a sequenced data frame.”h]”(jy)�”}”(hŒ``SSAM_EVENT_SEQUENCED``”h]”j)�”}”(hj×9h]”hŒSSAM_EVENT_SEQUENCED”…”�”}”(hjÙ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÕ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KhjÑ9ubj•)�”}”(hhh]”hþ)�”}”(hŒ2The event will be sent via a sequenced data frame.”h]”hŒ2The event will be sent via a sequenced data frame.”…”�”}”(hjð9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K hjí9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÑ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jì9h´KhjÎ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj²9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_event (C struct)”Œ c.ssam_event”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ ssam_event”h]”jË)�”}”(hŒstruct ssam_event”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(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/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K%ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?:h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj-:h²hh³j>:h´K%ubjô)�”}”(hŒ ssam_event”h]”jú)�”}”(hj+:h]”hŒ ssam_event”…”�”}”(hjQ:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjM:ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj-:h²hh³j>:h´K%ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj):h²hh³j>:h´K%ubah}”(h]”j$:ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j>:h´K%hj&:h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ'SAM event sent from the EC to the host.”h]”hŒ'SAM event sent from the EC to the host.”…”�”}”(hjs:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K!hjp:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj&:h²hh³j>:h´K%ubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHj‹:jIj‹:jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX**Definition**:: struct ssam_event { u8 target_category; u8 target_id; u8 command_id; u8 instance_id; u16 length; u8 data[]; }; **Members** ``target_category`` Target category of the event source. See :c:type:`enum ssam_ssh_tc `. ``target_id`` Target ID of the event source. ``command_id`` Command ID of the event. ``instance_id`` Instance ID of the event source. ``length`` Length of the event payload in bytes. ``data`` Event payload data.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj—:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj“:ubhŒ:”…”�”}”(hj“:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K%hj�:ubj,)�”}”(hŒ†struct ssam_event { u8 target_category; u8 target_id; u8 command_id; u8 instance_id; u16 length; u8 data[]; };”h]”hŒ†struct ssam_event { u8 target_category; u8 target_id; u8 command_id; u8 instance_id; u16 length; u8 data[]; };”…”�”}”hj°:sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K'hj�:ubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hjÁ:h]”hŒMembers”…”�”}”(hjÃ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¿:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K0hj�:ubjn)�”}”(hhh]”(js)�”}”(hŒg``target_category`` Target category of the event source. See :c:type:`enum ssam_ssh_tc `. ”h]”(jy)�”}”(hŒ``target_category``”h]”j)�”}”(hjà:h]”hŒtarget_category”…”�”}”(hjâ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÞ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K#hjÚ:ubj•)�”}”(hhh]”hþ)�”}”(hŒRTarget category of the event source. See :c:type:`enum ssam_ssh_tc `.”h]”(hŒ)Target category of the event source. See ”…”�”}”(hjù:h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`enum ssam_ssh_tc `”h]”j)�”}”(hj;h]”hŒenum ssam_ssh_tc”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj;ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssam_ssh_tc”uh1hh³jõ:h´K#hjù:ubhŒ.”…”�”}”(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&]”uh1jrh³jõ:h´K#hj×:ubjs)�”}”(hŒ-``target_id`` Target ID of the event source. ”h]”(jy)�”}”(hŒ ``target_id``”h]”j)�”}”(hj<;h]”hŒ target_id”…”�”}”(hj>;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj:;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K$hj6;ubj•)�”}”(hhh]”hþ)�”}”(hŒTarget ID of the event source.”h]”hŒTarget ID of the event source.”…”�”}”(hjU;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jQ;h´K$hjR;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj6;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jQ;h´K$hj×:ubjs)�”}”(hŒ(``command_id`` Command ID of the event. ”h]”(jy)�”}”(hŒ``command_id``”h]”j)�”}”(hju;h]”hŒ command_id”…”�”}”(hjw;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjs;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K%hjo;ubj•)�”}”(hhh]”hþ)�”}”(hŒCommand ID of the event.”h]”hŒCommand ID of the event.”…”�”}”(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&]”uh1jrh³jŠ;h´K%hj×:ubjs)�”}”(hŒ1``instance_id`` Instance ID of the event source. ”h]”(jy)�”}”(hŒ``instance_id``”h]”j)�”}”(hj®;h]”hŒ instance_id”…”�”}”(hj°;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¬;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K&hj¨;ubj•)�”}”(hhh]”hþ)�”}”(hŒ Instance ID of the event source.”h]”hŒ Instance ID of the event source.”…”�”}”(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&]”uh1jrh³jÃ;h´K&hj×:ubjs)�”}”(hŒ1``length`` Length of the event payload in bytes. ”h]”(jy)�”}”(hŒ ``length``”h]”j)�”}”(hjç;h]”hŒlength”…”�”}”(hjé;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjå;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K'hjá;ubj•)�”}”(hhh]”hþ)�”}”(hŒ%Length of the event payload in bytes.”h]”hŒ%Length of the event payload in bytes.”…”�”}”(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&]”uh1jrh³jü;h´K'hj×:ubjs)�”}”(hŒ``data`` Event payload data.”h]”(jy)�”}”(hŒ``data``”h]”j)�”}”(hj <h]”hŒdata”…”�”}”(hj"<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K'hj<ubj•)�”}”(hhh]”hþ)�”}”(hŒEvent payload data.”h]”hŒEvent payload data.”…”�”}”(hj9<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K(hj6<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j5<h´K'hj×:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj�:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_request_flags (C enum)”Œc.ssam_request_flags”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssam_request_flags”h]”jË)�”}”(hŒenum ssam_request_flags”h]”(jÑ)�”}”(hjÔh]”hŒenum”…”�”}”(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/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K.ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ<h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjv<h²hh³j‡<h´K.ubjô)�”}”(hŒssam_request_flags”h]”jú)�”}”(hjt<h]”hŒssam_request_flags”…”�”}”(hjš<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj–<ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjv<h²hh³j‡<h´K.ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjr<h²hh³j‡<h´K.ubah}”(h]”jm<ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j‡<h´K.hjo<h²hubj&)�”}”(hhh]”hþ)�”}”(hŒFlags for SAM requests.”h]”hŒFlags for SAM requests.”…”�”}”(hj¼<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K3hj¹<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjo<h²hh³j‡<h´K.ubeh}”(h]”h ]”(jBŒenum”eh"]”h$]”h&]”jGjBjHjÔ<jIjÔ<jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX **Constants** ``SSAM_REQUEST_HAS_RESPONSE`` Specifies that the request expects a response. If not set, the request will be directly completed after its underlying packet has been transmitted. If set, the request transport system waits for a response of the request. ``SSAM_REQUEST_UNSEQUENCED`` Specifies that the request should be transmitted via an unsequenced packet. If set, the request must not have a response, meaning that this flag and the ``SSAM_REQUEST_HAS_RESPONSE`` flag are mutually exclusive.”h]”(hþ)�”}”(hŒ **Constants**”h]”jX)�”}”(hjÞ<h]”hŒ Constants”…”�”}”(hjà<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÜ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K7hjØ<ubjn)�”}”(hhh]”(js)�”}”(hŒü``SSAM_REQUEST_HAS_RESPONSE`` Specifies that the request expects a response. If not set, the request will be directly completed after its underlying packet has been transmitted. If set, the request transport system waits for a response of the request. ”h]”(jy)�”}”(hŒ``SSAM_REQUEST_HAS_RESPONSE``”h]”j)�”}”(hjý<h]”hŒSSAM_REQUEST_HAS_RESPONSE”…”�”}”(hjÿ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjû<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K=hj÷<ubj•)�”}”(hhh]”hþ)�”}”(hŒÝSpecifies that the request expects a response. If not set, the request will be directly completed after its underlying packet has been transmitted. If set, the request transport system waits for a response of the request.”h]”hŒÝSpecifies that the request expects a response. If not set, the request will be directly completed after its underlying packet has been transmitted. If set, the request transport system waits for a response of the request.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K:hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj÷<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j=h´K=hjô<ubjs)�”}”(hŒð``SSAM_REQUEST_UNSEQUENCED`` Specifies that the request should be transmitted via an unsequenced packet. If set, the request must not have a response, meaning that this flag and the ``SSAM_REQUEST_HAS_RESPONSE`` flag are mutually exclusive.”h]”(jy)�”}”(hŒ``SSAM_REQUEST_UNSEQUENCED``”h]”j)�”}”(hj7=h]”hŒSSAM_REQUEST_UNSEQUENCED”…”�”}”(hj9=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj5=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KAhj1=ubj•)�”}”(hhh]”hþ)�”}”(hŒÓSpecifies that the request should be transmitted via an unsequenced packet. If set, the request must not have a response, meaning that this flag and the ``SSAM_REQUEST_HAS_RESPONSE`` flag are mutually exclusive.”h]”(hŒ™Specifies that the request should be transmitted via an unsequenced packet. If set, the request must not have a response, meaning that this flag and the ”…”�”}”(hjP=h²hh³Nh´Nubj)�”}”(hŒ``SSAM_REQUEST_HAS_RESPONSE``”h]”hŒSSAM_REQUEST_HAS_RESPONSE”…”�”}”(hjX=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjP=ubhŒ flag are mutually exclusive.”…”�”}”(hjP=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K@hjM=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj1=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jL=h´KAhjô<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjØ<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_request (C struct)”Œc.ssam_request”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ ssam_request”h]”jË)�”}”(hŒstruct ssam_request”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(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/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KGubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±=h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjŸ=h²hh³j°=h´KGubjô)�”}”(hŒ ssam_request”h]”jú)�”}”(hj�=h]”hŒ ssam_request”…”�”}”(hjÃ=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj¿=ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjŸ=h²hh³j°=h´KGubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj›=h²hh³j°=h´KGubah}”(h]”j–=ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j°=h´KGhj˜=h²hubj&)�”}”(hhh]”hþ)�”}”(hŒSAM request description.”h]”hŒSAM request description.”…”�”}”(hjå=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KFhjâ=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj˜=h²hh³j°=h´KGubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHjý=jIjý=jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX„**Definition**:: struct ssam_request { u8 target_category; u8 target_id; u8 command_id; u8 instance_id; u16 flags; u16 length; const u8 *payload; }; **Members** ``target_category`` Category of the request's target. See :c:type:`enum ssam_ssh_tc `. ``target_id`` ID of the request's target. ``command_id`` Command ID of the request. ``instance_id`` Instance ID of the request's target. ``flags`` Flags for the request. See :c:type:`enum ssam_request_flags `. ``length`` Length of the request payload in bytes. ``payload`` Request payload data.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj>ubhŒ:”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KJhj>ubj,)�”}”(hŒŸstruct ssam_request { u8 target_category; u8 target_id; u8 command_id; u8 instance_id; u16 flags; u16 length; const u8 *payload; };”h]”hŒŸstruct ssam_request { u8 target_category; u8 target_id; u8 command_id; u8 instance_id; u16 flags; u16 length; const u8 *payload; };”…”�”}”hj">sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KLhj>ubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hj3>h]”hŒMembers”…”�”}”(hj5>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj1>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KVhj>ubjn)�”}”(hhh]”(js)�”}”(hŒd``target_category`` Category of the request's target. See :c:type:`enum ssam_ssh_tc `. ”h]”(jy)�”}”(hŒ``target_category``”h]”j)�”}”(hjR>h]”hŒtarget_category”…”�”}”(hjT>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjP>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KHhjL>ubj•)�”}”(hhh]”hþ)�”}”(hŒOCategory of the request's target. See :c:type:`enum ssam_ssh_tc `.”h]”(hŒ(Category of the request’s target. See ”…”�”}”(hjk>h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`enum ssam_ssh_tc `”h]”j)�”}”(hju>h]”hŒenum ssam_ssh_tc”…”�”}”(hjw>h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjs>ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssam_ssh_tc”uh1hh³jg>h´KHhjk>ubhŒ.”…”�”}”(hjk>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jg>h´KHhjh>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjL>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jg>h´KHhjI>ubjs)�”}”(hŒ*``target_id`` ID of the request's target. ”h]”(jy)�”}”(hŒ ``target_id``”h]”j)�”}”(hj®>h]”hŒ target_id”…”�”}”(hj°>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¬>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KIhj¨>ubj•)�”}”(hhh]”hþ)�”}”(hŒID of the request's target.”h]”hŒID of the request’s target.”…”�”}”(hjÇ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÃ>h´KIhjÄ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj¨>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÃ>h´KIhjI>ubjs)�”}”(hŒ*``command_id`` Command ID of the request. ”h]”(jy)�”}”(hŒ``command_id``”h]”j)�”}”(hjç>h]”hŒ command_id”…”�”}”(hjé>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjå>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KJhjá>ubj•)�”}”(hhh]”hþ)�”}”(hŒCommand ID of the request.”h]”hŒCommand ID of the request.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jü>h´KJhjý>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjá>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jü>h´KJhjI>ubjs)�”}”(hŒ5``instance_id`` Instance ID of the request's target. ”h]”(jy)�”}”(hŒ``instance_id``”h]”j)�”}”(hj ?h]”hŒ instance_id”…”�”}”(hj"?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KKhj?ubj•)�”}”(hhh]”hþ)�”}”(hŒ$Instance ID of the request's target.”h]”hŒ&Instance ID of the request’s target.”…”�”}”(hj9?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j5?h´KKhj6?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j5?h´KKhjI>ubjs)�”}”(hŒ]``flags`` Flags for the request. See :c:type:`enum ssam_request_flags `. ”h]”(jy)�”}”(hŒ ``flags``”h]”j)�”}”(hjY?h]”hŒflags”…”�”}”(hj[?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjW?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KLhjS?ubj•)�”}”(hhh]”hþ)�”}”(hŒRFlags for the request. See :c:type:`enum ssam_request_flags `.”h]”(hŒFlags for the request. See ”…”�”}”(hjr?h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`enum ssam_request_flags `”h]”j)�”}”(hj|?h]”hŒenum ssam_request_flags”…”�”}”(hj~?h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjz?ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_flags”uh1hh³jn?h´KLhjr?ubhŒ.”…”�”}”(hjr?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jn?h´KLhjo?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjS?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jn?h´KLhjI>ubjs)�”}”(hŒ3``length`` Length of the request payload in bytes. ”h]”(jy)�”}”(hŒ ``length``”h]”j)�”}”(hjµ?h]”hŒlength”…”�”}”(hj·?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj³?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KMhj¯?ubj•)�”}”(hhh]”hþ)�”}”(hŒ'Length of the request payload in bytes.”h]”hŒ'Length of the request payload in bytes.”…”�”}”(hjÎ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÊ?h´KMhjË?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj¯?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÊ?h´KMhjI>ubjs)�”}”(hŒ!``payload`` Request payload data.”h]”(jy)�”}”(hŒ ``payload``”h]”j)�”}”(hjî?h]”hŒpayload”…”�”}”(hjð?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjì?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KMhjè?ubj•)�”}”(hhh]”hþ)�”}”(hŒRequest payload data.”h]”hŒRequest payload data.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KNhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjè?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j@h´KMhjI>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj1@h]”hŒ Description”…”�”}”(hj3@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj/@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KQhj*9h²hubhþ)�”}”(hŒôThis struct fully describes a SAM request with payload. It is intended to help set up the actual transport struct, e.g. :c:type:`struct ssam_request_sync `, and specifically its raw message data via ssam_request_write_data().”h]”(hŒxThis struct fully describes a SAM request with payload. It is intended to help set up the actual transport struct, e.g. ”…”�”}”(hjG@h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct ssam_request_sync `”h]”j)�”}”(hjQ@h]”hŒstruct ssam_request_sync”…”�”}”(hjS@h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjO@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_sync”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KNhjG@ubhŒF, and specifically its raw message data via ssam_request_write_data().”…”�”}”(hjG@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jn@h´KNhj*9h²hubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_response (C struct)”Œc.ssam_response”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ ssam_response”h]”jË)�”}”(hŒstruct ssam_response”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(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/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KUubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjŽ@h²hh³jŸ@h´KUubjô)�”}”(hŒ ssam_response”h]”jú)�”}”(hjŒ@h]”hŒ ssam_response”…”�”}”(hj²@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj®@ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjŽ@h²hh³jŸ@h´KUubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjŠ@h²hh³jŸ@h´KUubah}”(h]”j…@ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jŸ@h´KUhj‡@h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ Response buffer for SAM request.”h]”hŒ Response buffer for SAM request.”…”�”}”(hjÔ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K^hjÑ@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj‡@h²hh³jŸ@h´KUubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHjì@jIjì@jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX€**Definition**:: struct ssam_response { size_t capacity; size_t length; u8 *pointer; }; **Members** ``capacity`` Capacity of the buffer, in bytes. ``length`` Length of the actual data stored in the memory pointed to by **pointer**, in bytes. Set by the transport system. ``pointer`` Pointer to the buffer's memory, storing the response payload data.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjø@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjô@ubhŒ:”…”�”}”(hjô@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Kbhjð@ubj,)�”}”(hŒRstruct ssam_response { size_t capacity; size_t length; u8 *pointer; };”h]”hŒRstruct ssam_response { size_t capacity; size_t length; u8 *pointer; };”…”�”}”hjAsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Kdhjð@ubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hj"Ah]”hŒMembers”…”�”}”(hj$Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Kjhjð@ubjn)�”}”(hhh]”(js)�”}”(hŒ/``capacity`` Capacity of the buffer, in bytes. ”h]”(jy)�”}”(hŒ ``capacity``”h]”j)�”}”(hjAAh]”hŒcapacity”…”�”}”(hjCAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj?Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´K`hj;Aubj•)�”}”(hhh]”hþ)�”}”(hŒ!Capacity of the buffer, in bytes.”h]”hŒ!Capacity of the buffer, in bytes.”…”�”}”(hjZAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jVAh´K`hjWAubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj;Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jVAh´K`hj8Aubjs)�”}”(hŒ|``length`` Length of the actual data stored in the memory pointed to by **pointer**, in bytes. Set by the transport system. ”h]”(jy)�”}”(hŒ ``length``”h]”j)�”}”(hjzAh]”hŒlength”…”�”}”(hj|Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjxAubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KbhjtAubj•)�”}”(hhh]”hþ)�”}”(hŒpLength of the actual data stored in the memory pointed to by **pointer**, in bytes. Set by the transport system.”h]”(hŒ=Length of the actual data stored in the memory pointed to by ”…”�”}”(hj“Ah²hh³Nh´NubjX)�”}”(hŒ **pointer**”h]”hŒpointer”…”�”}”(hj›Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj“AubhŒ(, in bytes. Set by the transport system.”…”�”}”(hj“Ah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Kahj�Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjtAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j�Ah´Kbhj8Aubjs)�”}”(hŒN``pointer`` Pointer to the buffer's memory, storing the response payload data.”h]”(jy)�”}”(hŒ ``pointer``”h]”j)�”}”(hjÆAh]”hŒpointer”…”�”}”(hjÈAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÄAubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KbhjÀAubj•)�”}”(hhh]”hþ)�”}”(hŒBPointer to the buffer's memory, storing the response payload data.”h]”hŒDPointer to the buffer’s memory, storing the response payload data.”…”�”}”(hjßAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´KchjÜAubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÀAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÛAh´Kbhj8Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjð@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_request_sync (C struct)”Œc.ssam_request_sync”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssam_request_sync”h]”jË)�”}”(hŒstruct ssam_request_sync”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjBh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Kiubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Bh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjBh²hh³j-Bh´Kiubjô)�”}”(hŒssam_request_sync”h]”jú)�”}”(hjBh]”hŒssam_request_sync”…”�”}”(hj@Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjReturns the return value of the last execution of **request**.”h]”(hŒ2Returns the return value of the last execution of ”…”�”}”(hj:Nh²hh³Nh´NubjX)�”}”(hŒ **request**”h]”hŒrequest”…”�”}”(hjBNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj:NubhŒ.”…”�”}”(hj:Nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MhjÑLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_retry (C macro)”Œ c.ssam_retry”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ ssam_retry”h]”jË)�”}”(hŒ ssam_retry”h]”jô)�”}”(hŒ ssam_retry”h]”jú)�”}”(hjuNh]”hŒ ssam_retry”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj{Nubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjwNh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjsNh²hh³j’Nh´Mubah}”(h]”jnNah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j’Nh´MhjpNh²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hjpNh²hh³j’Nh´Mubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHj«NjIj«NjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´Nubhþ)�”}”(hŒ!``ssam_retry (request, args...)``”h]”j)�”}”(hj±Nh]”hŒssam_retry (request, args...)”…”�”}”(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/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhj*9h²hubj )�”}”(hŒLRetry request in case of I/O errors or timeouts up to three times in total. ”h]”hþ)�”}”(hŒKRetry request in case of I/O errors or timeouts up to three times in total.”h]”hŒKRetry request in case of I/O errors or timeouts up to three times in total.”…”�”}”(hjËNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MhjÇNubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÙNh´Mhj*9h²hubjN)�”}”(hX#**Parameters** ``request`` The request function to execute. Must return an integer. ``args...`` Arguments for the request function. **Description** Executes the given request function, i.e. calls **request**. In case the request returns ``-EREMOTEIO`` (indicates I/O error) or -``ETIMEDOUT`` (request or underlying packet timed out), **request** will be re-executed again, up to three times in total. See __ssam_retry() for a more generic macro for this purpose. **Return** Returns the return value of the last execution of **request**.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjæNh]”hŒ Parameters”…”�”}”(hjèNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjäNubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MhjàNubjn)�”}”(hhh]”(js)�”}”(hŒE``request`` The request function to execute. Must return an integer. ”h]”(jy)�”}”(hŒ ``request``”h]”j)�”}”(hjOh]”hŒrequest”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MhjÿNubj•)�”}”(hhh]”hþ)�”}”(hŒ8The request function to execute. Must return an integer.”h]”hŒ8The request function to execute. Must return an integer.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jOh´MhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÿNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jOh´MhjüNubjs)�”}”(hŒ0``args...`` Arguments for the request function. ”h]”(jy)�”}”(hŒ ``args...``”h]”j)�”}”(hj>Oh]”hŒargs...”…”�”}”(hj@Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjReturns the return value of the last execution of **request**.”h]”(hŒ2Returns the return value of the last execution of ”…”�”}”(hj Ph²hh³Nh´NubjX)�”}”(hŒ **request**”h]”hŒrequest”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj PubhŒ.”…”�”}”(hj Ph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MhjàNubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_request_spec (C struct)”Œc.ssam_request_spec”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssam_request_spec”h]”jË)�”}”(hŒstruct ssam_request_spec”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjNPh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjJPh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M!ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Ph²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjJPh²hh³j[Ph´M!ubjô)�”}”(hŒssam_request_spec”h]”jú)�”}”(hjHPh]”hŒssam_request_spec”…”�”}”(hjnPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjjPubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjJPh²hh³j[Ph´M!ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjFPh²hh³j[Ph´M!ubah}”(h]”jAPah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j[Ph´M!hjCPh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ(Blue-print specification of SAM request.”h]”hŒ(Blue-print specification of SAM request.”…”�”}”(hj�Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M"hj�Ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjCPh²hh³j[Ph´M!ubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHj¨PjIj¨PjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX**Definition**:: struct ssam_request_spec { u8 target_category; u8 target_id; u8 command_id; u8 instance_id; u8 flags; }; **Members** ``target_category`` Category of the request's target. See :c:type:`enum ssam_ssh_tc `. ``target_id`` ID of the request's target. ``command_id`` Command ID of the request. ``instance_id`` Instance ID of the request's target. ``flags`` Flags for the request. See :c:type:`enum ssam_request_flags `.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj´Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj°PubhŒ:”…”�”}”(hj°Ph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M&hj¬Pubj,)�”}”(hŒ|struct ssam_request_spec { u8 target_category; u8 target_id; u8 command_id; u8 instance_id; u8 flags; };”h]”hŒ|struct ssam_request_spec { u8 target_category; u8 target_id; u8 command_id; u8 instance_id; u8 flags; };”…”�”}”hjÍPsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M(hj¬Pubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hjÞPh]”hŒMembers”…”�”}”(hjàPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÜPubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M0hj¬Pubjn)�”}”(hhh]”(js)�”}”(hŒd``target_category`` Category of the request's target. See :c:type:`enum ssam_ssh_tc `. ”h]”(jy)�”}”(hŒ``target_category``”h]”j)�”}”(hjýPh]”hŒtarget_category”…”�”}”(hjÿPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjûPubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M$hj÷Pubj•)�”}”(hhh]”hþ)�”}”(hŒOCategory of the request's target. See :c:type:`enum ssam_ssh_tc `.”h]”(hŒ(Category of the request’s target. See ”…”�”}”(hjQh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`enum ssam_ssh_tc `”h]”j)�”}”(hj Qh]”hŒenum ssam_ssh_tc”…”�”}”(hj"Qh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssam_ssh_tc”uh1hh³jQh´M$hjQubhŒ.”…”�”}”(hjQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jQh´M$hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj÷Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jQh´M$hjôPubjs)�”}”(hŒ*``target_id`` ID of the request's target. ”h]”(jy)�”}”(hŒ ``target_id``”h]”j)�”}”(hjYQh]”hŒ target_id”…”�”}”(hj[Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjWQubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M%hjSQubj•)�”}”(hhh]”hþ)�”}”(hŒID of the request's target.”h]”hŒID of the request’s target.”…”�”}”(hjrQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jnQh´M%hjoQubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjSQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jnQh´M%hjôPubjs)�”}”(hŒ*``command_id`` Command ID of the request. ”h]”(jy)�”}”(hŒ``command_id``”h]”j)�”}”(hj’Qh]”hŒ command_id”…”�”}”(hj”Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj�Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M&hjŒQubj•)�”}”(hhh]”hþ)�”}”(hŒCommand ID of the request.”h]”hŒCommand ID of the request.”…”�”}”(hj«Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j§Qh´M&hj¨Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjŒQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j§Qh´M&hjôPubjs)�”}”(hŒ5``instance_id`` Instance ID of the request's target. ”h]”(jy)�”}”(hŒ``instance_id``”h]”j)�”}”(hjËQh]”hŒ instance_id”…”�”}”(hjÍQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÉQubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M'hjÅQubj•)�”}”(hhh]”hþ)�”}”(hŒ$Instance ID of the request's target.”h]”hŒ&Instance ID of the request’s target.”…”�”}”(hjäQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jàQh´M'hjáQubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÅQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jàQh´M'hjôPubjs)�”}”(hŒ\``flags`` Flags for the request. See :c:type:`enum ssam_request_flags `.”h]”(jy)�”}”(hŒ ``flags``”h]”j)�”}”(hjRh]”hŒflags”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M'hjþQubj•)�”}”(hhh]”hþ)�”}”(hŒRFlags for the request. See :c:type:`enum ssam_request_flags `.”h]”(hŒFlags for the request. See ”…”�”}”(hjRh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`enum ssam_request_flags `”h]”j)�”}”(hj'Rh]”hŒenum ssam_request_flags”…”�”}”(hj)Rh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj%Rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_flags”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M(hjRubhŒ.”…”�”}”(hjRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jDRh´M(hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjþQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jRh´M'hjôPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj¬Pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjjRh]”hŒ Description”…”�”}”(hjlRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjhRubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M+hj*9h²hubhþ)�”}”(hX?Blue-print specification for a SAM request. This struct describes the unique static parameters of a request (i.e. type) without specifying any of its instance-specific data (e.g. payload). It is intended to be used as base for defining simple request functions via the ``SSAM_DEFINE_SYNC_REQUEST_x()`` family of macros.”h]”(hX Blue-print specification for a SAM request. This struct describes the unique static parameters of a request (i.e. type) without specifying any of its instance-specific data (e.g. payload). It is intended to be used as base for defining simple request functions via the ”…”�”}”(hj€Rh²hh³Nh´Nubj)�”}”(hŒ ``SSAM_DEFINE_SYNC_REQUEST_x()``”h]”hŒSSAM_DEFINE_SYNC_REQUEST_x()”…”�”}”(hjˆRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj€RubhŒ family of macros.”…”�”}”(hj€Rh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M(hj*9h²hubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_request_spec_md (C struct)”Œc.ssam_request_spec_md”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssam_request_spec_md”h]”jË)�”}”(hŒstruct ssam_request_spec_md”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjºRh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj¶Rh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M1ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈRh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj¶Rh²hh³jÇRh´M1ubjô)�”}”(hŒssam_request_spec_md”h]”jú)�”}”(hj´Rh]”hŒssam_request_spec_md”…”�”}”(hjÚRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÖRubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj¶Rh²hh³jÇRh´M1ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj²Rh²hh³jÇRh´M1ubah}”(h]”j­Rah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jÇRh´M1hj¯Rh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ6Blue-print specification for multi-device SAM request.”h]”hŒ6Blue-print specification for multi-device SAM request.”…”�”}”(hjüRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M8hjùRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¯Rh²hh³jÇRh´M1ubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHjSjIjSjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hXv**Definition**:: struct ssam_request_spec_md { u8 target_category; u8 command_id; u8 flags; }; **Members** ``target_category`` Category of the request's target. See :c:type:`enum ssam_ssh_tc `. ``command_id`` Command ID of the request. ``flags`` Flags for the request. See :c:type:`enum ssam_request_flags `.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjSubhŒ:”…”�”}”(hjSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M<hjSubj,)�”}”(hŒYstruct ssam_request_spec_md { u8 target_category; u8 command_id; u8 flags; };”h]”hŒYstruct ssam_request_spec_md { u8 target_category; u8 command_id; u8 flags; };”…”�”}”hj9Ssbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M>hjSubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hjJSh]”hŒMembers”…”�”}”(hjLSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjHSubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MDhjSubjn)�”}”(hhh]”(js)�”}”(hŒd``target_category`` Category of the request's target. See :c:type:`enum ssam_ssh_tc `. ”h]”(jy)�”}”(hŒ``target_category``”h]”j)�”}”(hjiSh]”hŒtarget_category”…”�”}”(hjkSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjgSubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M;hjcSubj•)�”}”(hhh]”hþ)�”}”(hŒOCategory of the request's target. See :c:type:`enum ssam_ssh_tc `.”h]”(hŒ(Category of the request’s target. See ”…”�”}”(hj‚Sh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`enum ssam_ssh_tc `”h]”j)�”}”(hjŒSh]”hŒenum ssam_ssh_tc”…”�”}”(hjŽSh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjŠSubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssam_ssh_tc”uh1hh³j~Sh´M;hj‚SubhŒ.”…”�”}”(hj‚Sh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j~Sh´M;hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjcSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j~Sh´M;hj`Subjs)�”}”(hŒ*``command_id`` Command ID of the request. ”h]”(jy)�”}”(hŒ``command_id``”h]”j)�”}”(hjÅSh]”hŒ command_id”…”�”}”(hjÇSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÃSubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M<hj¿Subj•)�”}”(hhh]”hþ)�”}”(hŒCommand ID of the request.”h]”hŒCommand ID of the request.”…”�”}”(hjÞSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÚSh´M<hjÛSubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj¿Subeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÚSh´M<hj`Subjs)�”}”(hŒ\``flags`` Flags for the request. See :c:type:`enum ssam_request_flags `.”h]”(jy)�”}”(hŒ ``flags``”h]”j)�”}”(hjþSh]”hŒflags”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjüSubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M<hjøSubj•)�”}”(hhh]”hþ)�”}”(hŒRFlags for the request. See :c:type:`enum ssam_request_flags `.”h]”(hŒFlags for the request. See ”…”�”}”(hjTh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`enum ssam_request_flags `”h]”j)�”}”(hj!Th]”hŒenum ssam_request_flags”…”�”}”(hj#Th²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjTubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_flags”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M=hjTubhŒ.”…”�”}”(hjTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j>Th´M=hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjøSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jTh´M<hj`Subeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjdTh]”hŒ Description”…”�”}”(hjfTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjbTubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M@hj*9h²hubhþ)�”}”(hXQBlue-print specification for a multi-device SAM request, i.e. a request that is applicable to multiple device instances, described by their individual target and instance IDs. This struct describes the unique static parameters of a request (i.e. type) without specifying any of its instance-specific data (e.g. payload) and without specifying any of its device specific IDs (i.e. target and instance ID). It is intended to be used as base for defining simple multi-device request functions via the ``SSAM_DEFINE_SYNC_REQUEST_MD_x()`` and ``SSAM_DEFINE_SYNC_REQUEST_CL_x()`` families of macros.”h]”(hXòBlue-print specification for a multi-device SAM request, i.e. a request that is applicable to multiple device instances, described by their individual target and instance IDs. This struct describes the unique static parameters of a request (i.e. type) without specifying any of its instance-specific data (e.g. payload) and without specifying any of its device specific IDs (i.e. target and instance ID). It is intended to be used as base for defining simple multi-device request functions via the ”…”�”}”(hjzTh²hh³Nh´Nubj)�”}”(hŒ#``SSAM_DEFINE_SYNC_REQUEST_MD_x()``”h]”hŒSSAM_DEFINE_SYNC_REQUEST_MD_x()”…”�”}”(hj‚Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjzTubhŒ and ”…”�”}”(hjzTh²hh³Nh´Nubj)�”}”(hŒ#``SSAM_DEFINE_SYNC_REQUEST_CL_x()``”h]”hŒSSAM_DEFINE_SYNC_REQUEST_CL_x()”…”�”}”(hj”Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjzTubhŒ families of macros.”…”�”}”(hjzTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M=hj*9h²hubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ$SSAM_DEFINE_SYNC_REQUEST_N (C macro)”Œc.SSAM_DEFINE_SYNC_REQUEST_N”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_N”h]”jË)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_N”h]”jô)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_N”h]”jú)�”}”(hjÀTh]”hŒSSAM_DEFINE_SYNC_REQUEST_N”…”�”}”(hjÊTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÆTubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÂTh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MOubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj¾Th²hh³jÝTh´MOubah}”(h]”j¹Tah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jÝTh´MOhj»Th²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj»Th²hh³jÝTh´MOubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjöTjIjöTjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´Nubhþ)�”}”(hŒ.``SSAM_DEFINE_SYNC_REQUEST_N (name, spec...)``”h]”j)�”}”(hjüTh]”hŒ*SSAM_DEFINE_SYNC_REQUEST_N (name, spec...)”…”�”}”(hjþTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjúTubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MQhj*9h²hubj )�”}”(hŒPDefine synchronous SAM request function with neither argument nor return value. ”h]”hþ)�”}”(hŒODefine synchronous SAM request function with neither argument nor return value.”h]”hŒODefine synchronous SAM request function with neither argument nor return value.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MOhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j$Uh´MOhj*9h²hubjN)�”}”(hXŸ**Parameters** ``name`` Name of the generated function. ``spec...`` Specification (:c:type:`struct ssam_request_spec `) defining the request. **Description** Defines a function executing the synchronous SAM request specified by **spec**, with the request having neither argument nor return value. The generated function takes care of setting up the request struct and buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack. The generated function is defined as ``static int name(struct ssam_controller *ctrl)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is being sent. Refer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj1Uh]”hŒ Parameters”…”�”}”(hj3Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj/Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MShj+Uubjn)�”}”(hhh]”(js)�”}”(hŒ)``name`` Name of the generated function. ”h]”(jy)�”}”(hŒ``name``”h]”j)�”}”(hjPUh]”hŒname”…”�”}”(hjRUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjNUubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MQhjJUubj•)�”}”(hhh]”hþ)�”}”(hŒName of the generated function.”h]”hŒName of the generated function.”…”�”}”(hjiUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jeUh´MQhjfUubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjJUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jeUh´MQhjGUubjs)�”}”(hŒi``spec...`` Specification (:c:type:`struct ssam_request_spec `) defining the request. ”h]”(jy)�”}”(hŒ ``spec...``”h]”j)�”}”(hj‰Uh]”hŒspec...”…”�”}”(hj‹Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj‡Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MRhjƒUubj•)�”}”(hhh]”hþ)�”}”(hŒ\Specification (:c:type:`struct ssam_request_spec `) defining the request.”h]”(hŒSpecification (”…”�”}”(hj¢Uh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct ssam_request_spec `”h]”j)�”}”(hj¬Uh]”hŒstruct ssam_request_spec”…”�”}”(hj®Uh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjªUubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_spec”uh1hh³jžUh´MRhj¢UubhŒ) defining the request.”…”�”}”(hj¢Uh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jžUh´MRhjŸUubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjƒUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jžUh´MRhjGUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj+Uubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjçUh]”hŒ Description”…”�”}”(hjéUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjåUubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MThj+Uubhþ)�”}”(hXƒDefines a function executing the synchronous SAM request specified by **spec**, with the request having neither argument nor return value. The generated function takes care of setting up the request struct and buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”h]”(hŒFDefines a function executing the synchronous SAM request specified by ”…”�”}”(hjýUh²hh³Nh´NubjX)�”}”(hŒ**spec**”h]”hŒspec”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjýUubhX5, with the request having neither argument nor return value. The generated function takes care of setting up the request struct and buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”…”�”}”(hjýUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MShj+Uubhþ)�”}”(hŒüThe generated function is defined as ``static int name(struct ssam_controller *ctrl)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is being sent.”h]”(hŒ%The generated function is defined as ”…”�”}”(hjVh²hh³Nh´Nubj)�”}”(hŒ1``static int name(struct ssam_controller *ctrl)``”h]”hŒ-static int name(struct ssam_controller *ctrl)”…”�”}”(hj&Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjVubhŒ], returning the status of the request, which is zero on success and negative on failure. The ”…”�”}”(hjVh²hh³Nh´Nubj)�”}”(hŒ``ctrl``”h]”hŒctrl”…”�”}”(hj8Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjVubhŒA parameter is the controller via which the request is being sent.”…”�”}”(hjVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MZhj+Uubhþ)�”}”(hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”…”�”}”(hjQVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M_hj+Uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ$SSAM_DEFINE_SYNC_REQUEST_W (C macro)”Œc.SSAM_DEFINE_SYNC_REQUEST_W”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_W”h]”jË)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_W”h]”jô)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_W”h]”jú)�”}”(hjzVh]”hŒSSAM_DEFINE_SYNC_REQUEST_W”…”�”}”(hj„Vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj€Vubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj|Vh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Muubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjxVh²hh³j—Vh´Muubah}”(h]”jsVah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j—Vh´MuhjuVh²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hjuVh²hh³j—Vh´Muubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHj°VjIj°VjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´Nubhþ)�”}”(hŒ5``SSAM_DEFINE_SYNC_REQUEST_W (name, atype, spec...)``”h]”j)�”}”(hj¶Vh]”hŒ1SSAM_DEFINE_SYNC_REQUEST_W (name, atype, spec...)”…”�”}”(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/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mwhj*9h²hubj )�”}”(hŒ7Define synchronous SAM request function with argument. ”h]”hþ)�”}”(hŒ6Define synchronous SAM request function with argument.”h]”hŒ6Define synchronous SAM request function with argument.”…”�”}”(hjÐVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MuhjÌVubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÞVh´Muhj*9h²hubjN)�”}”(hX'**Parameters** ``name`` Name of the generated function. ``atype`` Type of the request's argument. ``spec...`` Specification (:c:type:`struct ssam_request_spec `) defining the request. **Description** Defines a function executing the synchronous SAM request specified by **spec**, with the request taking an argument of type **atype** and having no return value. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack. The generated function is defined as ``static int name(struct ssam_controller *ctrl, const atype *arg)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent. The request argument is specified via the ``arg`` pointer. Refer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjëVh]”hŒ Parameters”…”�”}”(hjíVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjéVubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MyhjåVubjn)�”}”(hhh]”(js)�”}”(hŒ)``name`` Name of the generated function. ”h]”(jy)�”}”(hŒ``name``”h]”j)�”}”(hj Wh]”hŒname”…”�”}”(hj Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MwhjWubj•)�”}”(hhh]”hþ)�”}”(hŒName of the generated function.”h]”hŒName of the generated function.”…”�”}”(hj#Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jWh´Mwhj Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jWh´MwhjWubjs)�”}”(hŒ*``atype`` Type of the request's argument. ”h]”(jy)�”}”(hŒ ``atype``”h]”j)�”}”(hjCWh]”hŒatype”…”�”}”(hjEWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjAWubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mxhj=Wubj•)�”}”(hhh]”hþ)�”}”(hŒType of the request's argument.”h]”hŒ!Type of the request’s argument.”…”�”}”(hj\Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jXWh´MxhjYWubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj=Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jXWh´MxhjWubjs)�”}”(hŒi``spec...`` Specification (:c:type:`struct ssam_request_spec `) defining the request. ”h]”(jy)�”}”(hŒ ``spec...``”h]”j)�”}”(hj|Wh]”hŒspec...”…”�”}”(hj~Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjzWubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MyhjvWubj•)�”}”(hhh]”hþ)�”}”(hŒ\Specification (:c:type:`struct ssam_request_spec `) defining the request.”h]”(hŒSpecification (”…”�”}”(hj•Wh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct ssam_request_spec `”h]”j)�”}”(hjŸWh]”hŒstruct ssam_request_spec”…”�”}”(hj¡Wh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj�Wubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_spec”uh1hh³j‘Wh´Myhj•WubhŒ) defining the request.”…”�”}”(hj•Wh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j‘Wh´Myhj’Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjvWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j‘Wh´MyhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjåVubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjÚWh]”hŒ Description”…”�”}”(hjÜWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjØWubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M{hjåVubhþ)�”}”(hX—Defines a function executing the synchronous SAM request specified by **spec**, with the request taking an argument of type **atype** and having no return value. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”h]”(hŒFDefines a function executing the synchronous SAM request specified by ”…”�”}”(hjðWh²hh³Nh´NubjX)�”}”(hŒ**spec**”h]”hŒspec”…”�”}”(hjøWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjðWubhŒ., with the request taking an argument of type ”…”�”}”(hjðWh²hh³Nh´NubjX)�”}”(hŒ **atype**”h]”hŒatype”…”�”}”(hj Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjðWubhX and having no return value. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”…”�”}”(hjðWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MzhjåVubhþ)�”}”(hXCThe generated function is defined as ``static int name(struct ssam_controller *ctrl, const atype *arg)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent. The request argument is specified via the ``arg`` pointer.”h]”(hŒ%The generated function is defined as ”…”�”}”(hj#Xh²hh³Nh´Nubj)�”}”(hŒC``static int name(struct ssam_controller *ctrl, const atype *arg)``”h]”hŒ?static int name(struct ssam_controller *ctrl, const atype *arg)”…”�”}”(hj+Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj#XubhŒ], returning the status of the request, which is zero on success and negative on failure. The ”…”�”}”(hj#Xh²hh³Nh´Nubj)�”}”(hŒ``ctrl``”h]”hŒctrl”…”�”}”(hj=Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj#XubhŒf parameter is the controller via which the request is sent. The request argument is specified via the ”…”�”}”(hj#Xh²hh³Nh´Nubj)�”}”(hŒ``arg``”h]”hŒarg”…”�”}”(hjOXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj#XubhŒ pointer.”…”�”}”(hj#Xh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M�hjåVubhþ)�”}”(hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”…”�”}”(hjhXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M‡hjåVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ$SSAM_DEFINE_SYNC_REQUEST_R (C macro)”Œc.SSAM_DEFINE_SYNC_REQUEST_R”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_R”h]”jË)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_R”h]”jô)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_R”h]”jú)�”}”(hj‘Xh]”hŒSSAM_DEFINE_SYNC_REQUEST_R”…”�”}”(hj›Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj—Xubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj“Xh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mžubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj�Xh²hh³j®Xh´Mžubah}”(h]”jŠXah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j®Xh´MžhjŒXh²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŒXh²hh³j®Xh´Mžubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjÇXjIjÇXjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´Nubhþ)�”}”(hŒ5``SSAM_DEFINE_SYNC_REQUEST_R (name, rtype, spec...)``”h]”j)�”}”(hjÍXh]”hŒ1SSAM_DEFINE_SYNC_REQUEST_R (name, rtype, spec...)”…”�”}”(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/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M hj*9h²hubj )�”}”(hŒ;Define synchronous SAM request function with return value. ”h]”hþ)�”}”(hŒ:Define synchronous SAM request function with return value.”h]”hŒ:Define synchronous SAM request function with return value.”…”�”}”(hjçXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MžhjãXubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³jõXh´Mžhj*9h²hubjN)�”}”(hXP**Parameters** ``name`` Name of the generated function. ``rtype`` Type of the request's return value. ``spec...`` Specification (:c:type:`struct ssam_request_spec `) defining the request. **Description** Defines a function executing the synchronous SAM request specified by **spec**, with the request taking no argument but having a return value of type **rtype**. The generated function takes care of setting up the request and response structs, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack. The generated function is defined as ``static int name(struct ssam_controller *ctrl, rtype *ret)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent. The request's return value is written to the memory pointed to by the ``ret`` parameter. Refer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjYh]”hŒ Parameters”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M¢hjüXubjn)�”}”(hhh]”(js)�”}”(hŒ)``name`` Name of the generated function. ”h]”(jy)�”}”(hŒ``name``”h]”j)�”}”(hj!Yh]”hŒname”…”�”}”(hj#Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M hjYubj•)�”}”(hhh]”hþ)�”}”(hŒName of the generated function.”h]”hŒName of the generated function.”…”�”}”(hj:Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j6Yh´M hj7Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j6Yh´M hjYubjs)�”}”(hŒ.``rtype`` Type of the request's return value. ”h]”(jy)�”}”(hŒ ``rtype``”h]”j)�”}”(hjZYh]”hŒrtype”…”�”}”(hj\Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjXYubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M¡hjTYubj•)�”}”(hhh]”hþ)�”}”(hŒ#Type of the request's return value.”h]”hŒ%Type of the request’s return value.”…”�”}”(hjsYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³joYh´M¡hjpYubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjTYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³joYh´M¡hjYubjs)�”}”(hŒi``spec...`` Specification (:c:type:`struct ssam_request_spec `) defining the request. ”h]”(jy)�”}”(hŒ ``spec...``”h]”j)�”}”(hj“Yh]”hŒspec...”…”�”}”(hj•Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj‘Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M¢hj�Yub••j•)�”}”(hhh]”hþ)�”}”(hŒ\Specification (:c:type:`struct ssam_request_spec `) defining the request.”h]”(hŒSpecification (”…”�”}”(hj¬Yh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct ssam_request_spec `”h]”j)�”}”(hj¶Yh]”hŒstruct ssam_request_spec”…”�”}”(hj¸Yh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj´Yubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_spec”uh1hh³j¨Yh´M¢hj¬YubhŒ) defining the request.”…”�”}”(hj¬Yh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¨Yh´M¢hj©Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj�Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j¨Yh´M¢hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjüXubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjñYh]”hŒ Description”…”�”}”(hjóYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjïYubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M¤hjüXubhþ)�”}”(hX¤Defines a function executing the synchronous SAM request specified by **spec**, with the request taking no argument but having a return value of type **rtype**. The generated function takes care of setting up the request and response structs, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”h]”(hŒFDefines a function executing the synchronous SAM request specified by ”…”�”}”(hjZh²hh³Nh´NubjX)�”}”(hŒ**spec**”h]”hŒspec”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjZubhŒH, with the request taking no argument but having a return value of type ”…”�”}”(hjZh²hh³Nh´NubjX)�”}”(hŒ **rtype**”h]”hŒrtype”…”�”}”(hj!Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjZubhX. The generated function takes care of setting up the request and response structs, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”…”�”}”(hjZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M£hjüXubhþ)�”}”(hX[The generated function is defined as ``static int name(struct ssam_controller *ctrl, rtype *ret)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent. The request's return value is written to the memory pointed to by the ``ret`` parameter.”h]”(hŒ%The generated function is defined as ”…”�”}”(hj:Zh²hh³Nh´Nubj)�”}”(hŒ=``static int name(struct ssam_controller *ctrl, rtype *ret)``”h]”hŒ9static int name(struct ssam_controller *ctrl, rtype *ret)”…”�”}”(hjBZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj:ZubhŒ], returning the status of the request, which is zero on success and negative on failure. The ”…”�”}”(hj:Zh²hh³Nh´Nubj)�”}”(hŒ``ctrl``”h]”hŒctrl”…”�”}”(hjTZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj:ZubhŒ„ parameter is the controller via which the request is sent. The request’s return value is written to the memory pointed to by the ”…”�”}”(hj:Zh²hh³Nh´Nubj)�”}”(hŒ``ret``”h]”hŒret”…”�”}”(hjfZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj:ZubhŒ parameter.”…”�”}”(hj:Zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MªhjüXubhþ)�”}”(hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M°hjüXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ%SSAM_DEFINE_SYNC_REQUEST_WR (C macro)”Œc.SSAM_DEFINE_SYNC_REQUEST_WR”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_WR”h]”jË)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_WR”h]”jô)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_WR”h]”jú)�”}”(hj¨Zh]”hŒSSAM_DEFINE_SYNC_REQUEST_WR”…”�”}”(hj²Zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj®Zubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjªZh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MÙubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj¦Zh²hh³jÅZh´MÙubah}”(h]”j¡Zah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jÅZh´MÙhj£Zh²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj£Zh²hh³jÅZh´MÙubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjÞZjIjÞZjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´Nubhþ)�”}”(hŒ=``SSAM_DEFINE_SYNC_REQUEST_WR (name, atype, rtype, spec...)``”h]”j)�”}”(hjäZh]”hŒ9SSAM_DEFINE_SYNC_REQUEST_WR (name, atype, rtype, spec...)”…”�”}”(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/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MÛhj*9h²hubj )�”}”(hŒMDefine synchronous SAM request function with both argument and return value. ”h]”hþ)�”}”(hŒLDefine synchronous SAM request function with both argument and return value.”h]”hŒLDefine synchronous SAM request function with both argument and return value.”…”�”}”(hjþZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MÙhjúZubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j [h´MÙhj*9h²hubjN)�”}”(hXÜ**Parameters** ``name`` Name of the generated function. ``atype`` Type of the request's argument. ``rtype`` Type of the request's return value. ``spec...`` Specification (:c:type:`struct ssam_request_spec `) defining the request. **Description** Defines a function executing the synchronous SAM request specified by **spec**, with the request taking an argument of type **atype** and having a return value of type **rtype**. The generated function takes care of setting up the request and response structs, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack. The generated function is defined as ``static int name(struct ssam_controller *ctrl, const atype *arg, rtype *ret)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent. The request argument is specified via the ``arg`` pointer. The request's return value is written to the memory pointed to by the ``ret`` parameter. Refer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj[h]”hŒ Parameters”…”�”}”(hj²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MÝhj[ubjn)�”}”(hhh]”(js)�”}”(hŒ)``name`` Name of the generated function. ”h]”(jy)�”}”(hŒ``name``”h]”j)�”}”(hj8[h]”hŒname”…”�”}”(hj:[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj6[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MÛhj2[ubj•)�”}”(hhh]”hþ)�”}”(hŒName of the generated function.”h]”hŒName of the generated function.”…”�”}”(hjQ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jM[h´MÛhjN[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj2[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jM[h´MÛhj/[ubjs)�”}”(hŒ*``atype`` Type of the request's argument. ”h]”(jy)�”}”(hŒ ``atype``”h]”j)�”}”(hjq[h]”hŒatype”…”�”}”(hjs[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjo[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MÜhjk[ubj•)�”}”(hhh]”hþ)�”}”(hŒType of the request's argument.”h]”hŒ!Type of the request’s argument.”…”�”}”(hjŠ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j†[h´MÜhj‡[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjk[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j†[h´MÜhj/[ubjs)�”}”(hŒ.``rtype`` Type of the request's return value. ”h]”(jy)�”}”(hŒ ``rtype``”h]”j)�”}”(hjª[h]”hŒrtype”…”�”}”(hj¬[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¨[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MÝhj¤[ubj•)�”}”(hhh]”hþ)�”}”(hŒ#Type of the request's return value.”h]”hŒ%Type of the request’s return value.”…”�”}”(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&]”uh1jrh³j¿[h´MÝhj/[ubjs)�”}”(hŒi``spec...`` Specification (:c:type:`struct ssam_request_spec `) defining the request. ”h]”(jy)�”}”(hŒ ``spec...``”h]”j)�”}”(hjã[h]”hŒspec...”…”�”}”(hjå[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjá[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MÞhjÝ[ubj•)�”}”(hhh]”hþ)�”}”(hŒ\Specification (:c:type:`struct ssam_request_spec `) defining the request.”h]”(hŒSpecification (”…”�”}”(hjü[h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct ssam_request_spec `”h]”j)�”}”(hj\h]”hŒstruct ssam_request_spec”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj\ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_spec”uh1hh³jø[h´MÞhjü[ubhŒ) defining the request.”…”�”}”(hjü[h²hh³Nh´Nubeh}”(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&]”uh1jrh³jø[h´MÞhj/[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj[ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjA\h]”hŒ Description”…”�”}”(hjC\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj?\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Màhj[ubhþ)�”}”(hX¶Defines a function executing the synchronous SAM request specified by **spec**, with the request taking an argument of type **atype** and having a return value of type **rtype**. The generated function takes care of setting up the request and response structs, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”h]”(hŒFDefines a function executing the synchronous SAM request specified by ”…”�”}”(hjW\h²hh³Nh´NubjX)�”}”(hŒ**spec**”h]”hŒspec”…”�”}”(hj_\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjW\ubhŒ., with the request taking an argument of type ”…”�”}”(hjW\h²hh³Nh´NubjX)�”}”(hŒ **atype**”h]”hŒatype”…”�”}”(hjq\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjW\ubhŒ# and having a return value of type ”…”�”}”(hjW\h²hh³Nh´NubjX)�”}”(hŒ **rtype**”h]”hŒrtype”…”�”}”(hjƒ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjW\ubhX. The generated function takes care of setting up the request and response structs, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”…”�”}”(hjW\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mßhj[ubhþ)�”}”(hX¨The generated function is defined as ``static int name(struct ssam_controller *ctrl, const atype *arg, rtype *ret)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent. The request argument is specified via the ``arg`` pointer. The request's return value is written to the memory pointed to by the ``ret`` parameter.”h]”(hŒ%The generated function is defined as ”…”�”}”(hjœ\h²hh³Nh´Nubj)�”}”(hŒO``static int name(struct ssam_controller *ctrl, const atype *arg, rtype *ret)``”h]”hŒKstatic int name(struct ssam_controller *ctrl, const atype *arg, rtype *ret)”…”�”}”(hj¤\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjœ\ubhŒ], returning the status of the request, which is zero on success and negative on failure. The ”…”�”}”(hjœ\h²hh³Nh´Nubj)�”}”(hŒ``ctrl``”h]”hŒctrl”…”�”}”(hj¶\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjœ\ubhŒf parameter is the controller via which the request is sent. The request argument is specified via the ”…”�”}”(hjœ\h²hh³Nh´Nubj)�”}”(hŒ``arg``”h]”hŒarg”…”�”}”(hjÈ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjœ\ubhŒR pointer. The request’s return value is written to the memory pointed to by the ”…”�”}”(hjœ\h²hh³Nh´Nubj)�”}”(hŒ``ret``”h]”hŒret”…”�”}”(hjÚ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjœ\ubhŒ parameter.”…”�”}”(hjœ\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mæhj[ubhþ)�”}”(hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”…”�”}”(hjó\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Míhj[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ'SSAM_DEFINE_SYNC_REQUEST_MD_N (C macro)”Œc.SSAM_DEFINE_SYNC_REQUEST_MD_N”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_MD_N”h]”jË)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_MD_N”h]”jô)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_MD_N”h]”jú)�”}”(hj]h]”hŒSSAM_DEFINE_SYNC_REQUEST_MD_N”…”�”}”(hj&]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj"]ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj]h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj]h²hh³j9]h´Mubah}”(h]”j]ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j9]h´Mhj]h²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]h²hh³j9]h´Mubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjR]jIjR]jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´Nubhþ)�”}”(hŒ1``SSAM_DEFINE_SYNC_REQUEST_MD_N (name, spec...)``”h]”j)�”}”(hjX]h]”hŒ-SSAM_DEFINE_SYNC_REQUEST_MD_N (name, spec...)”…”�”}”(hjZ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjV]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhj*9h²hubj )�”}”(hŒ]Define synchronous multi-device SAM request function with neither argument nor return value. ”h]”hþ)�”}”(hŒ\Define synchronous multi-device SAM request function with neither argument nor return value.”h]”hŒ\Define synchronous multi-device SAM request function with neither argument nor return value.”…”�”}”(hjr]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhjn]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j€]h´Mhj*9h²hubjN)�”}”(hXO**Parameters** ``name`` Name of the generated function. ``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. **Description** Defines a function executing the synchronous SAM request specified by **spec**, with the request having neither argument nor return value. Device specifying parameters are not hard-coded, but instead must be provided to the function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack. The generated function is defined as ``static int name(struct ssam_controller *ctrl, u8 tid, u8 iid)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent, ``tid`` the target ID for the request, and ``iid`` the instance ID. Refer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj�]h]”hŒ Parameters”…”�”}”(hj�]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj‹]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhj‡]ubjn)�”}”(hhh]”(js)�”}”(hŒ)``name`` Name of the generated function. ”h]”(jy)�”}”(hŒ``name``”h]”j)�”}”(hj¬]h]”hŒname”…”�”}”(hj®]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjª]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhj¦]ubj•)�”}”(hhh]”hþ)�”}”(hŒName of the generated function.”h]”hŒName of the generated function.”…”�”}”(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&]”uh1jrh³jÁ]h´Mhj£]ubjs)�”}”(hŒo``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. ”h]”(jy)�”}”(hŒ ``spec...``”h]”j)�”}”(hjå]h]”hŒspec...”…”�”}”(hjç]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjã]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhjß]ubj•)�”}”(hhh]”hþ)�”}”(hŒbSpecification (:c:type:`struct ssam_request_spec_md `) defining the request.”h]”(hŒSpecification (”…”�”}”(hjþ]h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`struct ssam_request_spec_md `”h]”j)�”}”(hj^h]”hŒstruct ssam_request_spec_md”…”�”}”(hj ^h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj^ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_spec_md”uh1hh³jú]h´Mhjþ]ubhŒ) defining the request.”…”�”}”(hjþ]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jú]h´Mhjû]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjß]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jú]h´Mhj£]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj‡]ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjC^h]”hŒ Description”…”�”}”(hjE^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjA^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhj‡]ubhþ)�”}”(hXßDefines a function executing the synchronous SAM request specified by **spec**, with the request having neither argument nor return value. Device specifying parameters are not hard-coded, but instead must be provided to the function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”h]”(hŒFDefines a function executing the synchronous SAM request specified by ”…”�”}”(hjY^h²hh³Nh´NubjX)�”}”(hŒ**spec**”h]”hŒspec”…”�”}”(hja^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjY^ubhX‘, with the request having neither argument nor return value. Device specifying parameters are not hard-coded, but instead must be provided to the function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”…”�”}”(hjY^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhj‡]ubhþ)�”}”(hXJThe generated function is defined as ``static int name(struct ssam_controller *ctrl, u8 tid, u8 iid)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent, ``tid`` the target ID for the request, and ``iid`` the instance ID.”h]”(hŒ%The generated function is defined as ”…”�”}”(hjz^h²hh³Nh´Nubj)�”}”(hŒA``static int name(struct ssam_controller *ctrl, u8 tid, u8 iid)``”h]”hŒ=static int name(struct ssam_controller *ctrl, u8 tid, u8 iid)”…”�”}”(hj‚^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjz^ubhŒ], returning the status of the request, which is zero on success and negative on failure. The ”…”�”}”(hjz^h²hh³Nh´Nubj)�”}”(hŒ``ctrl``”h]”hŒctrl”…”�”}”(hj”^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjz^ubhŒ< parameter is the controller via which the request is sent, ”…”�”}”(hjz^h²hh³Nh´Nubj)�”}”(hŒ``tid``”h]”hŒtid”…”�”}”(hj¦^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjz^ubhŒ$ the target ID for the request, and ”…”�”}”(hjz^h²hh³Nh´Nubj)�”}”(hŒ``iid``”h]”hŒiid”…”�”}”(hj¸^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjz^ubhŒ the instance ID.”…”�”}”(hjz^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M"hj‡]ubhþ)�”}”(hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”…”�”}”(hjÑ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M(hj‡]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ'SSAM_DEFINE_SYNC_REQUEST_MD_W (C macro)”Œc.SSAM_DEFINE_SYNC_REQUEST_MD_W”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_MD_W”h]”jË)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_MD_W”h]”jô)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_MD_W”h]”jú)�”}”(hjú^h]”hŒSSAM_DEFINE_SYNC_REQUEST_MD_W”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj_ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjü^h²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M>ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjø^h²hh³j_h´M>ubah}”(h]”jó^ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j_h´M>hjõ^h²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hjõ^h²hh³j_h´M>ubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHj0_jIj0_jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´Nubhþ)�”}”(hŒ8``SSAM_DEFINE_SYNC_REQUEST_MD_W (name, atype, spec...)``”h]”j)�”}”(hj6_h]”hŒ4SSAM_DEFINE_SYNC_REQUEST_MD_W (name, atype, spec...)”…”�”}”(hj8_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj4_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M@hj*9h²hubj )�”}”(hŒDDefine synchronous multi-device SAM request function with argument. ”h]”hþ)�”}”(hŒCDefine synchronous multi-device SAM request function with argument.”h]”hŒCDefine synchronous multi-device SAM request function with argument.”…”�”}”(hjP_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M>hjL_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j^_h´M>hj*9h²hubjN)�”}”(hXà**Parameters** ``name`` Name of the generated function. ``atype`` Type of the request's argument. ``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. **Description** Defines a function executing the synchronous SAM request specified by **spec**, with the request taking an argument of type **atype** and having no return value. Device specifying parameters are not hard-coded, but instead must be provided to the function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack. The generated function is defined as ``static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent, ``tid`` the target ID for the request, and ``iid`` the instance ID. The request argument is specified via the ``arg`` pointer. Refer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjk_h]”hŒ Parameters”…”�”}”(hjm_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhji_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MBhje_ubjn)�”}”(hhh]”(js)�”}”(hŒ)``name`` Name of the generated function. ”h]”(jy)�”}”(hŒ``name``”h]”j)�”}”(hjŠ_h]”hŒname”…”�”}”(hjŒ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjˆ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M@hj„_ubj•)�”}”(hhh]”hþ)�”}”(hŒName of the generated function.”h]”hŒName of the generated function.”…”�”}”(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&]”uh1jrh³jŸ_h´M@hj�_ubjs)�”}”(hŒ*``atype`` Type of the request's argument. ”h]”(jy)�”}”(hŒ ``atype``”h]”j)�”}”(hjÃ_h]”hŒatype”…”�”}”(hjÅ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÁ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MAhj½_ubj•)�”}”(hhh]”hþ)�”}”(hŒType of the request's argument.”h]”hŒ!Type of the request’s argument.”…”�”}”(hjÜ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jØ_h´MAhjÙ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj½_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jØ_h´MAhj�_ubjs)�”}”(hŒo``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. ”h]”(jy)�”}”(hŒ ``spec...``”h]”j)�”}”(hjü_h]”hŒspec...”…”�”}”(hjþ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjú_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MBhjö_ubj•)�”}”(hhh]”hþ)�”}”(hŒbSpecification (:c:type:`struct ssam_request_spec_md `) defining the request.”h]”(hŒSpecification (”…”�”}”(hj`h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`struct ssam_request_spec_md `”h]”j)�”}”(hj`h]”hŒstruct ssam_request_spec_md”…”�”}”(hj!`h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj`ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_spec_md”uh1hh³j`h´MBhj`ubhŒ) defining the request.”…”�”}”(hj`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j`h´MBhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjö_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j`h´MBhj�_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhje_ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjZ`h]”hŒ Description”…”�”}”(hj\`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjX`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MDhje_ubhþ)�”}”(hXöDefines a function executing the synchronous SAM request specified by **spec**, with the request taking an argument of type **atype** and having no return value. Device specifying parameters are not hard-coded, but instead must be provided to the function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”h]”(hŒFDefines a function executing the synchronous SAM request specified by ”…”�”}”(hjp`h²hh³Nh´NubjX)�”}”(hŒ**spec**”h]”hŒspec”…”�”}”(hjx`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjp`ubhŒ., with the request taking an argument of type ”…”�”}”(hjp`h²hh³Nh´NubjX)�”}”(hŒ **atype**”h]”hŒatype”…”�”}”(hjŠ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjp`ubhXq and having no return value. Device specifying parameters are not hard-coded, but instead must be provided to the function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”…”�”}”(hjp`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MChje_ubhþ)�”}”(hX—The generated function is defined as ``static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent, ``tid`` the target ID for the request, and ``iid`` the instance ID. The request argument is specified via the ``arg`` pointer.”h]”(hŒ%The generated function is defined as ”…”�”}”(hj£`h²hh³Nh´Nubj)�”}”(hŒS``static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg)``”h]”hŒOstatic int name(struct ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg)”…”�”}”(hj«`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj£`ubhŒ], returning the status of the request, which is zero on success and negative on failure. The ”…”�”}”(hj£`h²hh³Nh´Nubj)�”}”(hŒ``ctrl``”h]”hŒctrl”…”�”}”(hj½`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj£`ubhŒ< parameter is the controller via which the request is sent, ”…”�”}”(hj£`h²hh³Nh´Nubj)�”}”(hŒ``tid``”h]”hŒtid”…”�”}”(hjÏ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj£`ubhŒ$ the target ID for the request, and ”…”�”}”(hj£`h²hh³Nh´Nubj)�”}”(hŒ``iid``”h]”hŒiid”…”�”}”(hjá`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj£`ubhŒ< the instance ID. The request argument is specified via the ”…”�”}”(hj£`h²hh³Nh´Nubj)�”}”(hŒ``arg``”h]”hŒarg”…”�”}”(hjó`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj£`ubhŒ pointer.”…”�”}”(hj£`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MKhje_ubhþ)�”}”(hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MRhje_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ'SSAM_DEFINE_SYNC_REQUEST_MD_R (C macro)”Œc.SSAM_DEFINE_SYNC_REQUEST_MD_R”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_MD_R”h]”jË)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_MD_R”h]”jô)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_MD_R”h]”jú)�”}”(hj5ah]”hŒSSAM_DEFINE_SYNC_REQUEST_MD_R”…”�”}”(hj?ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj;aubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj7ah²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Miubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj3ah²hh³jRah´Miubah}”(h]”j.aah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jRah´Mihj0ah²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj0ah²hh³jRah´Miubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjkajIjkajJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´Nubhþ)�”}”(hŒ8``SSAM_DEFINE_SYNC_REQUEST_MD_R (name, rtype, spec...)``”h]”j)�”}”(hjqah]”hŒ4SSAM_DEFINE_SYNC_REQUEST_MD_R (name, rtype, spec...)”…”�”}”(hjsah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjoaubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mkhj*9h²hubj )�”}”(hŒHDefine synchronous multi-device SAM request function with return value. ”h]”hþ)�”}”(hŒGDefine synchronous multi-device SAM request function with return value.”h]”hŒGDefine synchronous multi-device SAM request function with return value.”…”�”}”(hj‹ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mihj‡aubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j™ah´Mihj*9h²hubjN)�”}”(hX **Parameters** ``name`` Name of the generated function. ``rtype`` Type of the request's return value. ``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. **Description** Defines a function executing the synchronous SAM request specified by **spec**, with the request taking no argument but having a return value of type **rtype**. Device specifying parameters are not hard-coded, but instead must be provided to the function. The generated function takes care of setting up the request and response structs, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack. The generated function is defined as ``static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, rtype *ret)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent, ``tid`` the target ID for the request, and ``iid`` the instance ID. The request's return value is written to the memory pointed to by the ``ret`` parameter. Refer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj¦ah]”hŒ Parameters”…”�”}”(hj¨ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¤aubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mmhj aubjn)�”}”(hhh]”(js)�”}”(hŒ)``name`` Name of the generated function. ”h]”(jy)�”}”(hŒ``name``”h]”j)�”}”(hjÅah]”hŒname”…”�”}”(hjÇah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÃaubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mkhj¿aubj•)�”}”(hhh]”hþ)�”}”(hŒName of the generated function.”h]”hŒName of the generated function.”…”�”}”(hjÞah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÚah´MkhjÛaubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj¿aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÚah´Mkhj¼aubjs)�”}”(hŒ.``rtype`` Type of the request's return value. ”h]”(jy)�”}”(hŒ ``rtype``”h]”j)�”}”(hjþah]”hŒrtype”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjüaubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mlhjøaubj•)�”}”(hhh]”hþ)�”}”(hŒ#Type of the request's return value.”h]”hŒ%Type of the request’s return value.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jbh´Mlhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjøaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jbh´Mlhj¼aubjs)�”}”(hŒo``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. ”h]”(jy)�”}”(hŒ ``spec...``”h]”j)�”}”(hj7bh]”hŒspec...”…”�”}”(hj9bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj5bubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mmhj1bubj•)�”}”(hhh]”hþ)�”}”(hŒbSpecification (:c:type:`struct ssam_request_spec_md `) defining the request.”h]”(hŒSpecification (”…”�”}”(hjPbh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`struct ssam_request_spec_md `”h]”j)�”}”(hjZbh]”hŒstruct ssam_request_spec_md”…”�”}”(hj\bh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjXbubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_spec_md”uh1hh³jLbh´MmhjPbubhŒ) defining the request.”…”�”}”(hjPbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jLbh´MmhjMbubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj1bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jLbh´Mmhj¼aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj aubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj•bh]”hŒ Description”…”�”}”(hj—bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj“bubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mohj aubhþ)�”}”(hXDefines a function executing the synchronous SAM request specified by **spec**, with the request taking no argument but having a return value of type **rtype**. Device specifying parameters are not hard-coded, but instead must be provided to the function. The generated function takes care of setting up the request and response structs, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”h]”(hŒFDefines a function executing the synchronous SAM request specified by ”…”�”}”(hj«bh²hh³Nh´NubjX)�”}”(hŒ**spec**”h]”hŒspec”…”�”}”(hj³bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj«bubhŒH, with the request taking no argument but having a return value of type ”…”�”}”(hj«bh²hh³Nh´NubjX)�”}”(hŒ **rtype**”h]”hŒrtype”…”�”}”(hjÅbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj«bubhXd. Device specifying parameters are not hard-coded, but instead must be provided to the function. The generated function takes care of setting up the request and response structs, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”…”�”}”(hj«bh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mnhj aubhþ)�”}”(hX¯The generated function is defined as ``static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, rtype *ret)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent, ``tid`` the target ID for the request, and ``iid`` the instance ID. The request's return value is written to the memory pointed to by the ``ret`` parameter.”h]”(hŒ%The generated function is defined as ”…”�”}”(hjÞbh²hh³Nh´Nubj)�”}”(hŒM``static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, rtype *ret)``”h]”hŒIstatic int name(struct ssam_controller *ctrl, u8 tid, u8 iid, rtype *ret)”…”�”}”(hjæbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÞbubhŒ], returning the status of the request, which is zero on success and negative on failure. The ”…”�”}”(hjÞbh²hh³Nh´Nubj)�”}”(hŒ``ctrl``”h]”hŒctrl”…”�”}”(hjøbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÞbubhŒ< parameter is the controller via which the request is sent, ”…”�”}”(hjÞbh²hh³Nh´Nubj)�”}”(hŒ``tid``”h]”hŒtid”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÞbubhŒ$ the target ID for the request, and ”…”�”}”(hjÞbh²hh³Nh´Nubj)�”}”(hŒ``iid``”h]”hŒiid”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÞbubhŒZ the instance ID. The request’s return value is written to the memory pointed to by the ”…”�”}”(hjÞbh²hh³Nh´Nubj)�”}”(hŒ``ret``”h]”hŒret”…”�”}”(hj.ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÞbubhŒ parameter.”…”�”}”(hjÞbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mvhj aubhþ)�”}”(hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”…”�”}”(hjGch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M}hj aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ(SSAM_DEFINE_SYNC_REQUEST_MD_WR (C macro)”Œ c.SSAM_DEFINE_SYNC_REQUEST_MD_WR”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_MD_WR”h]”jË)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_MD_WR”h]”jô)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_MD_WR”h]”jú)�”}”(hjpch]”hŒSSAM_DEFINE_SYNC_REQUEST_MD_WR”…”�”}”(hjzch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjvcubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjrch²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M¦ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjnch²hh³j�ch´M¦ubah}”(h]”jicah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j�ch´M¦hjkch²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hjkch²hh³j�ch´M¦ubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHj¦cjIj¦cjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´Nubhþ)�”}”(hŒ@``SSAM_DEFINE_SYNC_REQUEST_MD_WR (name, atype, rtype, spec...)``”h]”j)�”}”(hj¬ch]”hŒ`) defining the request. **Description** Defines a function executing the synchronous SAM request specified by **spec**, with the request taking an argument of type **atype** and having a return value of type **rtype**. Device specifying parameters are not hard-coded, but instead must be provided to the function. The generated function takes care of setting up the request and response structs, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack. The generated function is defined as ``static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg, rtype *ret)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent, ``tid`` the target ID for the request, and ``iid`` the instance ID. The request argument is specified via the ``arg`` pointer. The request's return value is written to the memory pointed to by the ``ret`` parameter. Refer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjách]”hŒ Parameters”…”�”}”(hjãch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjßcubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MªhjÛcubjn)�”}”(hhh]”(js)�”}”(hŒ)``name`` Name of the generated function. ”h]”(jy)�”}”(hŒ``name``”h]”j)�”}”(hjdh]”hŒname”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjþcubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M¨hjúcubj•)�”}”(hhh]”hþ)�”}”(hŒName of the generated function.”h]”hŒName of the generated function.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jdh´M¨hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjúcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jdh´M¨hj÷cubjs)�”}”(hŒ*``atype`` Type of the request's argument. ”h]”(jy)�”}”(hŒ ``atype``”h]”j)�”}”(hj9dh]”hŒatype”…”�”}”(hj;dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj7dubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M©hj3dubj•)�”}”(hhh]”hþ)�”}”(hŒType of the request's argument.”h]”hŒ!Type of the request’s argument.”…”�”}”(hjRdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jNdh´M©hjOdubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj3dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jNdh´M©hj÷cubjs)�”}”(hŒ.``rtype`` Type of the request's return value. ”h]”(jy)�”}”(hŒ ``rtype``”h]”j)�”}”(hjrdh]”hŒrtype”…”�”}”(hjtdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjpdubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mªhjldubj•)�”}”(hhh]”hþ)�”}”(hŒ#Type of the request's return value.”h]”hŒ%Type of the request’s return value.”…”�”}”(hj‹dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j‡dh´Mªhjˆdubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjldubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j‡dh´Mªhj÷cubjs)�”}”(hŒo``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. ”h]”(jy)�”}”(hŒ ``spec...``”h]”j)�”}”(hj«dh]”hŒspec...”…”�”}”(hj­dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj©dubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M«hj¥dubj•)�”}”(hhh]”hþ)�”}”(hŒbSpecification (:c:type:`struct ssam_request_spec_md `) defining the request.”h]”(hŒSpecification (”…”�”}”(hjÄdh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`struct ssam_request_spec_md `”h]”j)�”}”(hjÎdh]”hŒstruct ssam_request_spec_md”…”�”}”(hjÐdh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjÌdubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_spec_md”uh1hh³jÀdh´M«hjÄdubhŒ) defining the request.”…”�”}”(hjÄdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÀdh´M«hjÁdubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj¥dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÀdh´M«hj÷cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjÛcubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj eh]”hŒ Description”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M­hjÛcubhþ)�”}”(hXDefines a function executing the synchronous SAM request specified by **spec**, with the request taking an argument of type **atype** and having a return value of type **rtype**. Device specifying parameters are not hard-coded, but instead must be provided to the function. The generated function takes care of setting up the request and response structs, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”h]”(hŒFDefines a function executing the synchronous SAM request specified by ”…”�”}”(hjeh²hh³Nh´NubjX)�”}”(hŒ**spec**”h]”hŒspec”…”�”}”(hj'eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjeubhŒ., with the request taking an argument of type ”…”�”}”(hjeh²hh³Nh´NubjX)�”}”(hŒ **atype**”h]”hŒatype”…”�”}”(hj9eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjeubhŒ# and having a return value of type ”…”�”}”(hjeh²hh³Nh´NubjX)�”}”(hŒ **rtype**”h]”hŒrtype”…”�”}”(hjKeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjeubhXd. Device specifying parameters are not hard-coded, but instead must be provided to the function. The generated function takes care of setting up the request and response structs, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”…”�”}”(hjeh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M¬hjÛcubhþ)�”}”(hXüThe generated function is defined as ``static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg, rtype *ret)``, returning the status of the request, which is zero on success and negative on failure. The ``ctrl`` parameter is the controller via which the request is sent, ``tid`` the target ID for the request, and ``iid`` the instance ID. The request argument is specified via the ``arg`` pointer. The request's return value is written to the memory pointed to by the ``ret`` parameter.”h]”(hŒ%The generated function is defined as ”…”�”}”(hjdeh²hh³Nh´Nubj)�”}”(hŒ_``static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg, rtype *ret)``”h]”hŒ[static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg, rtype *ret)”…”�”}”(hjleh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjdeubhŒ], returning the status of the request, which is zero on success and negative on failure. The ”…”�”}”(hjdeh²hh³Nh´Nubj)�”}”(hŒ``ctrl``”h]”hŒctrl”…”�”}”(hj~eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjdeubhŒ< parameter is the controller via which the request is sent, ”…”�”}”(hjdeh²hh³Nh´Nubj)�”}”(hŒ``tid``”h]”hŒtid”…”�”}”(hj�eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjdeubhŒ$ the target ID for the request, and ”…”�”}”(hjdeh²hh³Nh´Nubj)�”}”(hŒ``iid``”h]”hŒiid”…”�”}”(hj¢eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjdeubhŒ< the instance ID. The request argument is specified via the ”…”�”}”(hjdeh²hh³Nh´Nubj)�”}”(hŒ``arg``”h]”hŒarg”…”�”}”(hj´eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjdeubhŒR pointer. The request’s return value is written to the memory pointed to by the ”…”�”}”(hjdeh²hh³Nh´Nubj)�”}”(hŒ``ret``”h]”hŒret”…”�”}”(hjÆeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjdeubhŒ parameter.”…”�”}”(hjdeh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M´hjÛcubhþ)�”}”(hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”…”�”}”(hjßeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M¼hjÛcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_notif_flags (C enum)”Œc.ssam_notif_flags”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssam_notif_flags”h]”jË)�”}”(hŒenum ssam_notif_flags”h]”(jÑ)�”}”(hjÔh]”hŒenum”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj fh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MÂubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj fh²hh³jfh´MÂubjô)�”}”(hŒssam_notif_flags”h]”jú)�”}”(hjfh]”hŒssam_notif_flags”…”�”}”(hj.fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj*fubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj fh²hh³jfh´MÂubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjfh²hh³jfh´MÂubah}”(h]”jfah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jfh´MÂhjfh²hubj&)�”}”(hhh]”hþ)�”}”(hŒBFlags used in return values from SSAM notifier callback functions.”h]”hŒBFlags used in return values from SSAM notifier callback functions.”…”�”}”(hjPfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MìhjMfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjfh²hh³jfh´MÂubeh}”(h]”h ]”(jBŒenum”eh"]”h$]”h&]”jGjBjHjhfjIjhfjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hXu**Constants** ``SSAM_NOTIF_HANDLED`` Indicates that the notification has been handled. This flag should be set by the handler if the handler can act/has acted upon the event provided to it. This flag should not be set if the handler is not a primary handler intended for the provided event. ``SSAM_NOTIF_STOP`` Indicates that the notifier traversal should stop. If this flag is returned from a notifier callback, notifier chain traversal will immediately stop and any remaining notifiers will not be called. This flag is automatically set when ssam_notifier_from_errno() is called with a negative error value.”h]”(hþ)�”}”(hŒ **Constants**”h]”jX)�”}”(hjrfh]”hŒ Constants”…”�”}”(hjtfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjpfubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mðhjlfubjn)�”}”(hhh]”(js)�”}”(hX``SSAM_NOTIF_HANDLED`` Indicates that the notification has been handled. This flag should be set by the handler if the handler can act/has acted upon the event provided to it. This flag should not be set if the handler is not a primary handler intended for the provided event. ”h]”(jy)�”}”(hŒ``SSAM_NOTIF_HANDLED``”h]”j)�”}”(hj‘fh]”hŒSSAM_NOTIF_HANDLED”…”�”}”(hj“fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj�fubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Möhj‹fubj•)�”}”(hhh]”hþ)�”}”(hŒýIndicates that the notification has been handled. This flag should be set by the handler if the handler can act/has acted upon the event provided to it. This flag should not be set if the handler is not a primary handler intended for the provided event.”h]”hŒýIndicates that the notification has been handled. This flag should be set by the handler if the handler can act/has acted upon the event provided to it. This flag should not be set if the handler is not a primary handler intended for the provided event.”…”�”}”(hjªfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Móhj§fubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj‹fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j¦fh´Möhjˆfubjs)�”}”(hX>``SSAM_NOTIF_STOP`` Indicates that the notifier traversal should stop. If this flag is returned from a notifier callback, notifier chain traversal will immediately stop and any remaining notifiers will not be called. This flag is automatically set when ssam_notifier_from_errno() is called with a negative error value.”h]”(jy)�”}”(hŒ``SSAM_NOTIF_STOP``”h]”j)�”}”(hjËfh]”hŒSSAM_NOTIF_STOP”…”�”}”(hjÍfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÉfubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MühjÅfubj•)�”}”(hhh]”hþ)�”}”(hX*Indicates that the notifier traversal should stop. If this flag is returned from a notifier callback, notifier chain traversal will immediately stop and any remaining notifiers will not be called. This flag is automatically set when ssam_notifier_from_errno() is called with a negative error value.”h]”hX*Indicates that the notifier traversal should stop. If this flag is returned from a notifier callback, notifier chain traversal will immediately stop and any remaining notifiers will not be called. This flag is automatically set when ssam_notifier_from_errno() is called with a negative error value.”…”�”}”(hjäfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mùhjáfubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÅfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jàfh´Mühjˆfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjlfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjgh]”hŒ Description”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj gubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mÿhj*9h²hubj )�”}”(hŒ¥If this flag has not been set by any handler after the notifier chain has been traversed, a warning will be emitted, stating that the event has not been handled. ”h]”hþ)�”}”(hŒ¡If this flag has not been set by any handler after the notifier chain has been traversed, a warning will be emitted, stating that the event has not been handled.”h]”hŒ¡If this flag has not been set by any handler after the notifier chain has been traversed, a warning will be emitted, stating that the event has not been handled.”…”�”}”(hj(gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Môhj$gubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j6gh´Môhj*9h²hubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_notifier_block (C struct)”Œc.ssam_notifier_block”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssam_notifier_block”h]”jË)�”}”(hŒstruct ssam_notifier_block”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjVgh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjRgh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mûubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdgh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjRgh²hh³jcgh´Mûubjô)�”}”(hŒssam_notifier_block”h]”jú)�”}”(hjPgh]”hŒssam_notifier_block”…”�”}”(hjvgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjrgubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjRgh²hh³jcgh´Mûubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjNgh²hh³jcgh´Mûubah}”(h]”jIgah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jcgh´MûhjKgh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ1Base notifier block for SSAM event notifications.”h]”hŒ1Base notifier block for SSAM event notifications.”…”�”}”(hj˜gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M hj•gh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjKgh²hh³jcgh´Mûubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHj°gjIj°gjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hXW**Definition**:: struct ssam_notifier_block { struct list_head node; ssam_notifier_fn_t fn; int priority; }; **Members** ``node`` The node for the list of notifiers. ``fn`` The callback function of this notifier. This function takes the respective notifier block and event as input and should return a notifier value, which can either be obtained from the flags provided in :c:type:`enum ssam_notif_flags `, converted from a standard error value via ssam_notifier_from_errno(), or a combination of both (e.g. ``ssam_notifier_from_errno(e) | SSAM_NOTIF_HANDLED``). ``priority`` Priority value determining the order in which notifier callbacks will be called. A higher value means higher priority, i.e. the associated callback will be executed earlier than other (lower priority) callbacks.”•h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¼gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¸gubhŒ:”…”�”}”(hj¸gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhj´gubj,)�”}”(hŒgstruct ssam_notifier_block { struct list_head node; ssam_notifier_fn_t fn; int priority; };”h]”hŒgstruct ssam_notifier_block { struct list_head node; ssam_notifier_fn_t fn; int priority; };”…”�”}”hjÕgsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhj´gubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hjægh]”hŒMembers”…”�”}”(hjègh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjägubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhj´gubjn)�”}”(hhh]”(js)�”}”(hŒ-``node`` The node for the list of notifiers. ”h]”(jy)�”}”(hŒ``node``”h]”j)�”}”(hjhh]”hŒnode”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhjÿgubj•)�”}”(hhh]”hþ)�”}”(hŒ#The node for the list of notifiers.”h]”hŒ#The node for the list of notifiers.”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jhh´Mhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÿgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jhh´Mhjügubjs)�”}”(hX ``fn`` The callback function of this notifier. This function takes the respective notifier block and event as input and should return a notifier value, which can either be obtained from the flags provided in :c:type:`enum ssam_notif_flags `, converted from a standard error value via ssam_notifier_from_errno(), or a combination of both (e.g. ``ssam_notifier_from_errno(e) | SSAM_NOTIF_HANDLED``). ”h]”(jy)�”}”(hŒ``fn``”h]”j)�”}”(hj>hh]”hŒfn”…”�”}”(hj@hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj`, converted from a standard error value via ssam_notifier_from_errno(), or a combination of both (e.g. ``ssam_notifier_from_errno(e) | SSAM_NOTIF_HANDLED``).”h]”(hŒÉThe callback function of this notifier. This function takes the respective notifier block and event as input and should return a notifier value, which can either be obtained from the flags provided in ”…”�”}”(hjWhh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`enum ssam_notif_flags `”h]”j)�”}”(hjahh]”hŒenum ssam_notif_flags”…”�”}”(hjchh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj_hubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_notif_flags”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MhjWhubhŒg, converted from a standard error value via ssam_notifier_from_errno(), or a combination of both (e.g. ”…”�”}”(hjWhh²hh³Nh´Nubj)�”}”(hŒ4``ssam_notifier_from_errno(e) | SSAM_NOTIF_HANDLED``”h]”hŒ0ssam_notifier_from_errno(e) | SSAM_NOTIF_HANDLED”…”�”}”(hjƒhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjWhubhŒ).”…”�”}”(hjWhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j~hh´MhjThubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj8hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jShh´Mhjügubjs)�”}”(hŒà``priority`` Priority value determining the order in which notifier callbacks will be called. A higher value means higher priority, i.e. the associated callback will be executed earlier than other (lower priority) callbacks.”h]”(jy)�”}”(hŒ ``priority``”h]”j)�”}”(hj­hh]”hŒpriority”…”�”}”(hj¯hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj«hubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mhj§hubj•)�”}”(hhh]”hþ)�”}”(hŒÓPriority value determining the order in which notifier callbacks will be called. A higher value means higher priority, i.e. the associated callback will be executed earlier than other (lower priority) callbacks.”h]”hŒÓPriority value determining the order in which notifier callbacks will be called. A higher value means higher priority, i.e. the associated callback will be executed earlier than other (lower priority) callbacks.”…”�”}”(hjÆhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MhjÃhubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj§hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÂhh´Mhjügubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj´gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ%ssam_notifier_from_errno (C function)”Œc.ssam_notifier_from_errno”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ&u32 ssam_notifier_from_errno (int err)”h]”jË)�”}”(hŒ%u32 ssam_notifier_from_errno(int err)”h]”(h)�”}”(hhh]”jú)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j iŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œssam_notifier_from_errno”sbŒc.ssam_notifier_from_errno”†”asbuh1hhjih²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,ih²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjih²hh³j+ih´M ubjô)�”}”(hŒssam_notifier_from_errno”h]”jú)�”}”(hj(ih]”hŒssam_notifier_from_errno”…”�”}”(hj>ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj:iubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjih²hh³j+ih´M ubjv )�”}”(hŒ (int err)”h]”j| )�”}”(hŒint err”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjYih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjUiubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgih²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjUiubjú)�”}”(hŒerr”h]”hŒerr”…”�”}”(hjuih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjUiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjQiubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjih²hh³j+ih´M ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjÿhh²hh³j+ih´M ubah}”(h]”júhah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j+ih´M hjühh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ5Convert standard error value to notifier return code.”h]”hŒ5Convert standard error value to notifier return code.”…”�”}”(hjŸih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M hjœih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjühh²hh³j+ih´M ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj·ijIj·ijJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hXX**Parameters** ``int err`` The error code to convert, must be negative (in case of failure) or zero (in case of success). **Return** Returns the notifier return value obtained by converting the specified **err** value. In case **err** is negative, the ``SSAM_NOTIF_STOP`` flag will be set, causing notifier call chain traversal to abort.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjÁih]”hŒ Parameters”…”�”}”(hjÃih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¿iubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M$hj»iubjn)�”}”(hhh]”js)�”}”(hŒk``int err`` The error code to convert, must be negative (in case of failure) or zero (in case of success). ”h]”(jy)�”}”(hŒ ``int err``”h]”j)�”}”(hjàih]”hŒint err”…”�”}”(hjâih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÞiubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M#hjÚiubj•)�”}”(hhh]”hþ)�”}”(hŒ^The error code to convert, must be negative (in case of failure) or zero (in case of success).”h]”hŒ^The error code to convert, must be negative (in case of failure) or zero (in case of success).”…”�”}”(hjùih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M"hjöiubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÚiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jõih´M#hj×iubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj»iubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjjh]”hŒReturn”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M%hj»iubhþ)�”}”(hŒÌReturns the notifier return value obtained by converting the specified **err** value. In case **err** is negative, the ``SSAM_NOTIF_STOP`` flag will be set, causing notifier call chain traversal to abort.”h]”(hŒGReturns the notifier return value obtained by converting the specified ”…”�”}”(hj2jh²hh³Nh´NubjX)�”}”(hŒ**err**”h]”hŒerr”…”�”}”(hj:jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj2jubhŒ value. In case ”…”�”}”(hj2jh²hh³Nh´NubjX)�”}”(hŒ**err**”h]”hŒerr”…”�”}”(hjLjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj2jubhŒ is negative, the ”…”�”}”(hj2jh²hh³Nh´Nubj)�”}”(hŒ``SSAM_NOTIF_STOP``”h]”hŒSSAM_NOTIF_STOP”…”�”}”(hj^jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj2jubhŒB flag will be set, causing notifier call chain traversal to abort.”…”�”}”(hj2jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M%hj»iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ#ssam_notifier_to_errno (C function)”Œc.ssam_notifier_to_errno”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ$int ssam_notifier_to_errno (u32 ret)”h]”jË)�”}”(hŒ#int ssam_notifier_to_errno(u32 ret)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj—jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj“jh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M2ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦jh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj“jh²hh³j¥jh´M2ubjô)�”}”(hŒssam_notifier_to_errno”h]”jú)�”}”(hŒssam_notifier_to_errno”h]”hŒssam_notifier_to_errno”…”�”}”(hj¸jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj´jubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj“jh²hh³j¥jh´M2ubjv )�”}”(hŒ (u32 ret)”h]”j| )�”}”(hŒu32 ret”h]”(h)�”}”(hhh]”jú)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj×jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÔjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jÙjŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jºjsbŒc.ssam_notifier_to_errno”†”asbuh1hhjÐjubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷jh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÐjubjú)�”}”(hŒret”h]”hŒret”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÐjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjÌjubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj“jh²hh³j¥jh´M2ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj�jh²hh³j¥jh´M2ubah}”(h]”jŠjah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j¥jh´M2hjŒjh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ5Convert notifier return code to standard error value.”h]”hŒ5Convert notifier return code to standard error value.”…”�”}”(hj/kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M2hj,kh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŒjh²hh³j¥jh´M2ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjGkjIjGkjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hŒª**Parameters** ``u32 ret`` The notifier return value to convert. **Return** Returns the negative error value encoded in **ret** or zero if **ret** indicates success.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjQkh]”hŒ Parameters”…”�”}”(hjSkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjOkubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M6hjKkubjn)�”}”(hhh]”js)�”}”(hŒ2``u32 ret`` The notifier return value to convert. ”h]”(jy)�”}”(hŒ ``u32 ret``”h]”j)�”}”(hjpkh]”hŒu32 ret”…”�”}”(hjrkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjnkubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M4hjjkubj•)�”}”(hhh]”hþ)�”}”(hŒ%The notifier return value to convert.”h]”hŒ%The notifier return value to convert.”…”�”}”(hj‰kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j…kh´M4hj†kubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j…kh´M4hjgkubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjKkubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj«kh]”hŒReturn”…”�”}”(hj­kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj©kubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M6hjKkubhþ)�”}”(hŒYReturns the negative error value encoded in **ret** or zero if **ret** indicates success.”h]”(hŒ,Returns the negative error value encoded in ”…”�”}”(hjÁkh²hh³Nh´NubjX)�”}”(hŒ**ret**”h]”hŒret”…”�”}”(hjÉkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÁkubhŒ or zero if ”…”�”}”(hjÁkh²hh³Nh´NubjX)�”}”(hŒ**ret**”h]”hŒret”…”�”}”(hjÛkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÁkubhŒ indicates success.”…”�”}”(hjÁkh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M6hjKkubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_event_registry (C struct)”Œc.ssam_event_registry”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssam_event_registry”h]”jË)�”}”(hŒstruct ssam_event_registry”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjlh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M<ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"lh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjlh²hh³j!lh´M<ubjô)�”}”(hŒssam_event_registry”h]”jú)�”}”(hjlh]”hŒssam_event_registry”…”�”}”(hj4lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj0lubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjlh²hh³j!lh´M<ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj lh²hh³j!lh´M<ubah}”(h]”jlah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j!lh´M<hj lh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ0Registry specification used for enabling events.”h]”hŒ0Registry specification used for enabling events.”…”�”}”(hjVlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MBhjSlh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj lh²hh³j!lh´M<ubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHjnljIjnljJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX—**Definition**:: struct ssam_event_registry { u8 target_category; u8 target_id; u8 cid_enable; u8 cid_disable; }; **Members** ``target_category`` Target category for the event registry requests. ``target_id`` Target ID for the event registry requests. ``cid_enable`` Command ID for the event-enable request. ``cid_disable`` Command ID for the event-disable request.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjzlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjvlubhŒ:”…”�”}”(hjvlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MFhjrlubj,)�”}”(hŒpstruct ssam_event_registry { u8 target_category; u8 target_id; u8 cid_enable; u8 cid_disable; };”h]”hŒpstruct ssam_event_registry { u8 target_category; u8 target_id; u8 cid_enable; u8 cid_disable; };”…”�”}”hj“lsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MHhjrlubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hj¤lh]”hŒMembers”…”�”}”(hj¦lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¢lubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MOhjrlubjn)�”}”(hhh]”(js)�”}”(hŒE``target_category`` Target category for the event registry requests. ”h]”(jy)�”}”(hŒ``target_category``”h]”j)�”}”(hjÃlh]”hŒtarget_category”…”�”}”(hjÅlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÁlubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MDhj½lubj•)�”}”(hhh]”hþ)�”}”(hŒ0Target category for the event registry requests.”h]”hŒ0Target category for the event registry requests.”…”�”}”(hjÜlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jØlh´MDhjÙlubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj½lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jØlh´MDhjºlubjs)�”}”(hŒ9``target_id`` Target ID for the event registry requests. ”h]”(jy)�”}”(hŒ ``target_id``”h]”j)�”}”(hjülh]”hŒ target_id”…”�”}”(hjþlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjúlubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MEhjölubj•)�”}”(hhh]”hþ)�”}”(hŒ*Target ID for the event registry requests.”h]”hŒ*Target ID for the event registry requests.”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jmh´MEhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjölubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jmh´MEhjºlubjs)�”}”(hŒ8``cid_enable`` Command ID for the event-enable request. ”h]”(jy)�”}”(hŒ``cid_enable``”h]”j)�”}”(hj5mh]”hŒ cid_enable”…”�”}”(hj7mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj3mubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MFhj/mubj•)�”}”(hhh]”hþ)�”}”(hŒ(Command ID for the event-enable request.”h]”hŒ(Command ID for the event-enable request.”…”�”}”(hjNmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jJmh´MFhjKmubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj/mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jJmh´MFhjºlubjs)�”}”(hŒ9``cid_disable`` Command ID for the event-disable request.”h]”(jy)�”}”(hŒ``cid_disable``”h]”j)�”}”(hjnmh]”hŒ cid_disable”…”�”}”(hjpmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjlmubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MFhjhmubj•)�”}”(hhh]”hþ)�”}”(hŒ)Command ID for the event-disable request.”h]”hŒ)Command ID for the event-disable request.”…”�”}”(hj‡mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MGhj„mubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjhmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jƒmh´MFhjºlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjrlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj±mh]”hŒ Description”…”�”}”(hj³mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¯mubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MJhj*9h²hubhþ)�”}”(hXThis struct describes a SAM event registry via the minimal collection of SAM IDs specifying the requests to use for enabling and disabling an event. The individual event to be enabled/disabled itself is specified via :c:type:`struct ssam_event_id `.”h]”(hŒÙThis struct describes a SAM event registry via the minimal collection of SAM IDs specifying the requests to use for enabling and disabling an event. The individual event to be enabled/disabled itself is specified via ”…”�”}”(hjÇmh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct ssam_event_id `”h]”j)�”}”(hjÑmh]”hŒstruct ssam_event_id”…”�”}”(hjÓmh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjÏmubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssam_event_id”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MGhjÇmubhŒ.”…”�”}”(hjÇmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jîmh´MGhj*9h²hubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_event_id (C struct)”Œc.ssam_event_id”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ ssam_event_id”h]”jË)�”}”(hŒstruct ssam_event_id”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjnh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MOubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjnh²hh³jnh´MOubjô)�”}”(hŒ ssam_event_id”h]”jú)�”}”(hj nh]”hŒ ssam_event_id”…”�”}”(hj2nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj.nubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjnh²hh³jnh´MOubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj nh²hh³jnh´MOubah}”(h]”jnah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jnh´MOhjnh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ)Unique event ID used for enabling events.”h]”hŒ)Unique event ID used for enabling events.”…”�”}”(hjTnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MUhjQnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjnh²hh³jnh´MOubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHjlnjIjlnjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hŒÖ**Definition**:: struct ssam_event_id { u8 target_category; u8 instance; }; **Members** ``target_category`` Target category of the event source. ``instance`` Instance ID of the event source.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjxnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjtnubhŒ:”…”�”}”(hjtnh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MYhjpnubj,)�”}”(hŒBstruct ssam_event_id { u8 target_category; u8 instance; };”h]”hŒBstruct ssam_event_id { u8 target_category; u8 instance; };”…”�”}”hj‘nsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M[hjpnubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hj¢nh]”hŒMembers”…”�”}”(hj¤nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M`hjpnubjn)�”}”(hhh]”(js)�”}”(hŒ9``target_category`` Target category of the event source. ”h]”(jy)�”}”(hŒ``target_category``”h]”j)�”}”(hjÁnh]”hŒtarget_category”…”�”}”(hjÃnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¿nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MWhj»nubj•)�”}”(hhh]”hþ)�”}”(hŒ$Target category of the event source.”h]”hŒ$Target category of the event source.”…”�”}”(hjÚnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÖnh´MWhj×nubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj»nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÖnh´MWhj¸nubjs)�”}”(hŒ-``instance`` Instance ID of the event source.”h]”(jy)�”}”(hŒ ``instance``”h]”j)�”}”(hjúnh]”hŒinstance”…”�”}”(hjünh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjønubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MWhjônubj•)�”}”(hhh]”hþ)�”}”(hŒ Instance ID of the event source.”h]”hŒ Instance ID of the event source.”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MXhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjônubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³joh´MWhj¸nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjpnubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj=oh]”hŒ Description”…”�”}”(hj?oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj;oubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M[hj*9h²hubhþ)�”}”(hŒÜThis struct specifies the event to be enabled/disabled via an externally provided registry. It does not specify the registry to be used itself, this is done via :c:type:`struct ssam_event_registry `.”h]”(hŒ¡This struct specifies the event to be enabled/disabled via an externally provided registry. It does not specify the registry to be used itself, this is done via ”…”�”}”(hjSoh²hh³Nh´Nubh)�”}”(hŒ::c:type:`struct ssam_event_registry `”h]”j)�”}”(hj]oh]”hŒstruct ssam_event_registry”…”�”}”(hj_oh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj[oubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_event_registry”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MXhjSoubhŒ.”…”�”}”(hjSoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jzoh´MXhj*9h²hubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_event_mask (C enum)”Œc.ssam_event_mask”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssam_event_mask”h]”jË)�”}”(hŒenum ssam_event_mask”h]”(jÑ)�”}”(hjÔh]”hŒenum”…”�”}”(hjžoh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjšoh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M_ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬oh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjšoh²hh³j«oh´M_ubjô)�”}”(hŒssam_event_mask”h]”jú)�”}”(hj˜oh]”hŒssam_event_mask”…”�”}”(hj¾oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjºoubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjšoh²hh³j«oh´M_ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj–oh²hh³j«oh´M_ubah}”(h]”j‘oah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j«oh´M_hj“oh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ5Flags specifying how events are matched to notifiers.”h]”hŒ5Flags specifying how events are matched to notifiers.”…”�”}”(hjàoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MchjÝoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj“oh²hh³j«oh´M_ubeh}”(h]”h ]”(jBŒenum”eh"]”h$]”h&]”jGjBjHjøojIjøojJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hXm**Constants** ``SSAM_EVENT_MASK_TARGET`` In addition to filtering by target category, only execute the notifier callback for events with a target ID matching to the one of the registry used for enabling/disabling the event. ``SSAM_EVENT_MASK_INSTANCE`` In addition to filtering by target category, only execute the notifier callback for events with an instance ID matching to the instance ID used when enabling the event. ``SSAM_EVENT_MASK_NONE`` Run the callback for any event with matching target category. Do not do any additional filtering. ``SSAM_EVENT_MASK_STRICT`` Do all the filtering above.”h]”(hþ)�”}”(hŒ **Constants**”h]”jX)�”}”(hjph]”hŒ Constants”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mghjüoubjn)�”}”(hhh]”(js)�”}”(hŒÒ``SSAM_EVENT_MASK_TARGET`` In addition to filtering by target category, only execute the notifier callback for events with a target ID matching to the one of the registry used for enabling/disabling the event. ”h]”(jy)�”}”(hŒ``SSAM_EVENT_MASK_TARGET``”h]”j)�”}”(hj!ph]”hŒSSAM_EVENT_MASK_TARGET”…”�”}”(hj#ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mlhjpubj•)�”}”(hhh]”hþ)�”}”(hŒ¶In addition to filtering by target category, only execute the notifier callback for events with a target ID matching to the one of the registry used for enabling/disabling the event.”h]”hŒ¶In addition to filtering by target category, only execute the notifier callback for events with a target ID matching to the one of the registry used for enabling/disabling the event.”…”�”}”(hj:ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mjhj7pubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j6ph´Mlhjpubjs)�”}”(hŒÆ``SSAM_EVENT_MASK_INSTANCE`` In addition to filtering by target category, only execute the notifier callback for events with an instance ID matching to the instance ID used when enabling the event. ”h]”(jy)�”}”(hŒ``SSAM_EVENT_MASK_INSTANCE``”h]”j)�”}”(hj[ph]”hŒSSAM_EVENT_MASK_INSTANCE”…”�”}”(hj]ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjYpubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MqhjUpubj•)�”}”(hhh]”hþ)�”}”(hŒ¨In addition to filtering by target category, only execute the notifier callback for events with an instance ID matching to the instance ID used when enabling the event.”h]”hŒ¨In addition to filtering by target category, only execute the notifier callback for events with an instance ID matching to the instance ID used when enabling the event.”…”�”}”(hjtph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mohjqpubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjUpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jpph´Mqhjpubjs)�”}”(hŒ{``SSAM_EVENT_MASK_NONE`` Run the callback for any event with matching target category. Do not do any additional filtering. ”h]”(jy)�”}”(hŒ``SSAM_EVENT_MASK_NONE``”h]”j)�”}”(hj•ph]”hŒSSAM_EVENT_MASK_NONE”…”�”}”(hj—ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj“pubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Muhj�pubj•)�”}”(hhh]”hþ)�”}”(hŒaRun the callback for any event with matching target category. Do not do any additional filtering.”h]”hŒaRun the callback for any event with matching target category. Do not do any additional filtering.”…”�”}”(hj®ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mthj«pubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj�pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jªph´Muhjpubjs)�”}”(hŒ6``SSAM_EVENT_MASK_STRICT`` Do all the filtering above.”h]”(jy)�”}”(hŒ``SSAM_EVENT_MASK_STRICT``”h]”j)�”}”(hjÏph]”hŒSSAM_EVENT_MASK_STRICT”…”�”}”(hjÑph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÍpubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´MwhjÉpubj•)�”}”(hhh]”hþ)�”}”(hŒDo all the filtering above.”h]”hŒDo all the filtering above.”…”�”}”(hjèph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mxhjåpubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÉpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jäph´Mwhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjüoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»ŒSSAM_EVENT_REGISTRY (C macro)”Œc.SSAM_EVENT_REGISTRY”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_EVENT_REGISTRY”h]”jË)�”}”(hŒSSAM_EVENT_REGISTRY”h]”jô)�”}”(hŒSSAM_EVENT_REGISTRY”h]”jú)�”}”(hj#qh]”hŒSSAM_EVENT_REGISTRY”…”�”}”(hj-qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj)qubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj%qh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M�ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj!qh²hh³j@qh´M�ubah}”(h]”jqah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j@qh´M�hjqh²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hjqh²hh³j@qh´M�ubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjYqjIjYqjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´Nubhþ)�”}”(hŒ2``SSAM_EVENT_REGISTRY (tc, tid, cid_en, cid_dis)``”h]”j)�”}”(hj_qh]”hŒ.SSAM_EVENT_REGISTRY (tc, tid, cid_en, cid_dis)”…”�”}”(hjaqh²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/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mƒhj*9h²hubj )�”}”(hŒDefine a new event registry. ”h]”hþ)�”}”(hŒDefine a new event registry.”h]”hŒDefine a new event registry.”…”�”}”(hjyqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M�hjuqubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j‡qh´M�hj*9h²hubjN)�”}”(hXf**Parameters** ``tc`` Target category for the event registry requests. ``tid`` Target ID for the event registry requests. ``cid_en`` Command ID for the event-enable request. ``cid_dis`` Command ID for the event-disable request. **Return** Returns the :c:type:`struct ssam_event_registry ` specified by the given parameters.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj”qh]”hŒ Parameters”…”�”}”(hj–qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj’qubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M…hjŽqubjn)�”}”(hhh]”(js)�”}”(hŒ8``tc`` Target category for the event registry requests. ”h]”(jy)�”}”(hŒ``tc``”h]”j)�”}”(hj³qh]”hŒtc”…”�”}”(hjµqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj±qubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M‚hj­qubj•)�”}”(hhh]”hþ)�”}”(hŒ0Target category for the event registry requests.”h]”hŒ0Target category for the event registry requests.”…”�”}”(hjÌqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÈqh´M‚hjÉqubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj­qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÈqh´M‚hjªqubjs)�”}”(hŒ3``tid`` Target ID for the event registry requests. ”h]”(jy)�”}”(hŒ``tid``”h]”j)�”}”(hjìqh]”hŒtid”…”�”}”(hjîqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjêqubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mƒhjæqubj•)�”}”(hhh]”hþ)�”}”(hŒ*Target ID for the event registry requests.”h]”hŒ*Target ID for the event registry requests.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jrh´Mƒhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjæqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jrh´Mƒhjªqubjs)�”}”(hŒ4``cid_en`` Command ID for the event-enable request. ”h]”(jy)�”}”(hŒ ``cid_en``”h]”j)�”}”(hj%rh]”hŒcid_en”…”�”}”(hj'rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj#rubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M„hjrubj•)�”}”(hhh]”hþ)�”}”(hŒ(Command ID for the event-enable request.”h]”hŒ(Command ID for the event-enable request.”…”�”}”(hj>rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j:rh´M„hj;rubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j:rh´M„hjªqubjs)�”}”(hŒ6``cid_dis`` Command ID for the event-disable request. ”h]”(jy)�”}”(hŒ ``cid_dis``”h]”j)�”}”(hj^rh]”hŒcid_dis”…”�”}”(hj`rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj\rubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M…hjXrubj•)�”}”(hhh]”hþ)�”}”(hŒ)Command ID for the event-disable request.”h]”hŒ)Command ID for the event-disable request.”…”�”}”(hjwrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jsrh´M…hjtrubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjXrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jsrh´M…hjªqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjŽqubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj™rh]”hŒReturn”…”�”}”(hj›rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj—rubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M‡hjŽqubhþ)�”}”(hŒiReturns the :c:type:`struct ssam_event_registry ` specified by the given parameters.”h]”(hŒ Returns the ”…”�”}”(hj¯rh²hh³Nh´Nubh)�”}”(hŒ::c:type:`struct ssam_event_registry `”h]”j)�”}”(hj¹rh]”hŒstruct ssam_event_registry”…”�”}”(hj»rh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj·rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_event_registry”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M‡hj¯rubhŒ# specified by the given parameters.”…”�”}”(hj¯rh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÖrh´M‡hjŽqubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ"ssam_event_notifier_flags (C enum)”Œc.ssam_event_notifier_flags”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssam_event_notifier_flags”h]”jË)�”}”(hŒenum ssam_event_notifier_flags”h]”(jÑ)�”}”(hjÔh]”hŒenum”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjýrh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M�ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjýrh²hh³jsh´M�ubjô)�”}”(hŒssam_event_notifier_flags”h]”jú)�”}”(hjûrh]”hŒssam_event_notifier_flags”…”�”}”(hj!sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjsubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjýrh²hh³jsh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjùrh²hh³jsh´M�ubah}”(h]”jôrah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jsh´M�hjörh²hubj&)�”}”(hhh]”hþ)�”}”(hŒFlags for event notifiers.”h]”hŒFlags for event notifiers.”…”�”}”(hjCsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mœhj@sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjörh²hh³jsh´M�ubeh}”(h]”h ]”(jBŒenum”eh"]”h$]”h&]”jGjBjHj[sjIj[sjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX«**Constants** ``SSAM_EVENT_NOTIFIER_OBSERVER`` The corresponding notifier acts as observer. Registering a notifier with this flag set will not attempt to enable any event. Equally, unregistering will not attempt to disable any event. Note that a notifier with this flag may not even correspond to a certain event at all, only to a specific event target category. Event matching will not be influenced by this flag.”h]”(hþ)�”}”(hŒ **Constants**”h]”jX)�”}”(hjesh]”hŒ Constants”…”�”}”(hjgsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjcsubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M hj_subjn)�”}”(hhh]”js)�”}”(hX�``SSAM_EVENT_NOTIFIER_OBSERVER`` The corresponding notifier acts as observer. Registering a notifier with this flag set will not attempt to enable any event. Equally, unregistering will not attempt to disable any event. Note that a notifier with this flag may not even correspond to a certain event at all, only to a specific event target category. Event matching will not be influenced by this flag.”h]”(jy)�”}”(hŒ ``SSAM_EVENT_NOTIFIER_OBSERVER``”h]”j)�”}”(hj„sh]”hŒSSAM_EVENT_NOTIFIER_OBSERVER”…”�”}”(hj†sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj‚subah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M§hj~subj•)�”}”(hhh]”hþ)�”}”(hXoThe corresponding notifier acts as observer. Registering a notifier with this flag set will not attempt to enable any event. Equally, unregistering will not attempt to disable any event. Note that a notifier with this flag may not even correspond to a certain event at all, only to a specific event target category. Event matching will not be influenced by this flag.”h]”hXoThe corresponding notifier acts as observer. Registering a notifier with this flag set will not attempt to enable any event. Equally, unregistering will not attempt to disable any event. Note that a notifier with this flag may not even correspond to a certain event at all, only to a specific event target category. Event matching will not be influenced by this flag.”…”�”}”(hj�sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M£hjšsubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj~subeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j™sh´M§hj{subah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj_subeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_event_notifier (C struct)”Œc.ssam_event_notifier”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssam_event_notifier”h]”jË)�”}”(hŒstruct ssam_event_notifier”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjÞsh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjÚsh²hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M­ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìsh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÚsh²hh³jësh´M­ubjô)�”}”(hŒssam_event_notifier”h]”jú)�”}”(hjØsh]”hŒssam_event_notifier”…”�”}”(hjþsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjúsubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÚsh²hh³jësh´M­ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjÖsh²hh³jësh´M­ubah}”(h]”jÑsah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jësh´M­hjÓsh²hubj&)�”}”(hhh]”hþ)�”}”(hŒNotifier block for SSAM events.”h]”hŒNotifier block for SSAM events.”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´Mªhjth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÓsh²hh³jësh´M­ubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHj8tjIj8tjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX**Definition**:: struct ssam_event_notifier { struct ssam_notifier_block base; struct { struct ssam_event_registry reg; struct ssam_event_id id; enum ssam_event_mask mask; u8 flags; } event; unsigned long flags; }; **Members** ``base`` The base notifier block with callback function and priority. ``event`` The event for which this block will receive notifications. ``event.reg`` Registry via which the event will be enabled/disabled. ``event.id`` ID specifying the event. ``event.mask`` Flags determining how events are matched to the notifier. ``event.flags`` Flags used for enabling the event. ``flags`` Notifier flags (see :c:type:`enum ssam_event_notifier_flags `).”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjDth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj@tubhŒ:”…”�”}”(hj@th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M®hj`).”h]”(jy)�”}”(hŒ ``flags``”h]”j)�”}”(hjãuh]”hŒflags”…”�”}”(hjåuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjáuubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M±hjÝuubj•)�”}”(hhh]”hþ)�”}”(hŒZNotifier flags (see :c:type:`enum ssam_event_notifier_flags `).”h]”(hŒNotifier flags (see ”…”�”}”(hjüuh²hh³Nh´Nubh)�”}”(hŒD:c:type:`enum ssam_event_notifier_flags `”h]”j)�”}”(hjvh]”hŒenum ssam_event_notifier_flags”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjvubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_event_notifier_flags”uh1hh³Œ†/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:23: ./include/linux/surface_aggregator/controller.h”h´M²hjüuubhŒ).”…”�”}”(hjüuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j#vh´M²hjùuubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÝuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jøuh´M±hj„tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj` associated with this controller.”h]”(hŒGet the ”…”�”}”(hj¼yh²hh³Nh´Nubh)�”}”(hŒ :c:type:`struct device `”h]”j)�”}”(hjÆyh]”hŒ struct device”…”�”}”(hjÈyh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjÄyubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¡)�”}”j¤]”jýxŒc.ssam_controller_device”†”asbj¦Œdevice”uh1hh³jÏxh´Mehj¼yubhŒ! associated with this controller.”…”�”}”(hj¼yh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mehj¹yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj·xh²hh³jÏxh´Meubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjüyjIjüyjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hŒÛ**Parameters** ``struct ssam_controller *c`` The controller for which to get the device. **Return** Returns the :c:type:`struct device ` associated with this controller, providing its lower-level transport.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjzh]”hŒ Parameters”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mihjzubjn)�”}”(hhh]”js)�”}”(hŒJ``struct ssam_controller *c`` The controller for which to get the device. ”h]”(jy)�”}”(hŒ``struct ssam_controller *c``”h]”j)�”}”(hj%zh]”hŒstruct ssam_controller *c”…”�”}”(hj'zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj#zubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mghjzubj•)�”}”(hhh]”hþ)�”}”(hŒ+The controller for which to get the device.”h]”hŒ+The controller for which to get the device.”…”�”}”(hj>zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j:zh´Mghj;zubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j:zh´Mghjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjzubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj`zh]”hŒReturn”…”�”}”(hjbzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj^zubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mihjzubhþ)�”}”(hŒrReturns the :c:type:`struct device ` associated with this controller, providing its lower-level transport.”h]”(hŒ Returns the ”…”�”}”(hjvzh²hh³Nh´Nubh)�”}”(hŒ :c:type:`struct device `”h]”j)�”}”(hj€zh]”hŒ struct device”…”�”}”(hj‚zh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj~zubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œdevice”uh1hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MihjvzubhŒF associated with this controller, providing its lower-level transport.”…”�”}”(hjvzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j�zh´Mihjzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ ssam_controller_get (C function)”Œc.ssam_controller_get”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒHstruct ssam_controller * ssam_controller_get (struct ssam_controller *c)”h]”jË)�”}”(hŒFstruct ssam_controller *ssam_controller_get(struct ssam_controller *c)”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjÈzh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjÄzh²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mƒubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖzh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÄzh²hh³jÕzh´Mƒubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjçzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjäzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jézŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œssam_controller_get”sbŒc.ssam_controller_get”†”asbuh1hhjÄzh²hh³jÕzh´Mƒubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÄzh²hh³jÕzh´MƒubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjÄzh²hh³jÕzh´Mƒubjô)�”}”(hŒssam_controller_get”h]”jú)�”}”(hj{h]”hŒssam_controller_get”…”�”}”(hj'{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj#{ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÄzh²hh³jÕzh´Mƒubjv )�”}”(hŒ(struct ssam_controller *c)”h]”j| )�”}”(hŒstruct ssam_controller *c”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjB{h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj>{ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO{h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj>{ubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj`{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj]{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jb{Œmodname”NŒ classname”Njžj¡)�”}”j¤]”j{Œc.ssam_controller_get”†”asbuh1hhj>{ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~{h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj>{ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjŒ{h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj>{ubjú)�”}”(hjBh]”hŒc”…”�”}”(hj™{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj>{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj:{ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjÄzh²hh³jÕzh´Mƒubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjÀzh²hh³jÕzh´Mƒubah}”(h]”j»zah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jÕzh´Mƒhj½zh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ(Increment reference count of controller.”h]”hŒ(Increment reference count of controller.”…”�”}”(hjÂ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mƒhj¿{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj½zh²hh³jÕzh´Mƒubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjÚ{jIjÚ{jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hŒv**Parameters** ``struct ssam_controller *c`` The controller. **Return** Returns the controller provided as input.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjä{h]”hŒ Parameters”…”�”}”(hjæ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjâ{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M‡hjÞ{ubjn)�”}”(hhh]”js)�”}”(hŒ.``struct ssam_controller *c`` The controller. ”h]”(jy)�”}”(hŒ``struct ssam_controller *c``”h]”j)�”}”(hj|h]”hŒstruct ssam_controller *c”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./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&]”uh1jrh³j|h´M„hjú{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjÞ{ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj>|h]”hŒReturn”…”�”}”(hj@|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj<|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M†hjÞ{ubhþ)�”}”(hŒ)Returns the controller provided as input.”h]”hŒ)Returns the controller provided as input.”…”�”}”(hjT|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M†hjÞ{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ ssam_controller_put (C function)”Œc.ssam_controller_put”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ4void ssam_controller_put (struct ssam_controller *c)”h]”jË)�”}”(hŒ3void ssam_controller_put(struct ssam_controller *c)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjƒ|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj|h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M‘ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’|h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj|h²hh³j‘|h´M‘ubjô)�”}”(hŒssam_controller_put”h]”jú)�”}”(hŒssam_controller_put”h]”hŒssam_controller_put”…”�”}”(hj¤|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj |ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj|h²hh³j‘|h´M‘ubjv )�”}”(hŒ(struct ssam_controller *c)”h]”j| )�”}”(hŒstruct ssam_controller *c”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjÀ|h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj¼|ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ|h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj¼|ubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjÞ|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÛ|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jà|Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j¦|sbŒc.ssam_controller_put”†”asbuh1hhj¼|ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ|h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj¼|ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj¼|ubjú)�”}”(hjBh]”hŒc”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj¼|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj¸|ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj|h²hh³j‘|h´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj{|h²hh³j‘|h´M‘ubah}”(h]”jv|ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j‘|h´M‘hjx|h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ(Decrement reference count of controller.”h]”hŒ(Decrement reference count of controller.”…”�”}”(hjB}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M‘hj?}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjx|h²hh³j‘|h´M‘ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjZ}jIjZ}jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hŒ?**Parameters** ``struct ssam_controller *c`` The controller.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjd}h]”hŒ Parameters”…”�”}”(hjf}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjb}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M•hj^}ubjn)�”}”(hhh]”js)�”}”(hŒ-``struct ssam_controller *c`` The controller.”h]”(jy)�”}”(hŒ``struct ssam_controller *c``”h]”j)�”}”(hjƒ}h]”hŒstruct ssam_controller *c”…”�”}”(hj…}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj�}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./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³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M’hj™}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj}}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j˜}h´M—hjz}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj^}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ&ssam_controller_statelock (C function)”Œc.ssam_controller_statelock”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ:void ssam_controller_statelock (struct ssam_controller *c)”h]”jË)�”}”(hŒ9void ssam_controller_statelock(struct ssam_controller *c)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÝ}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÙ}h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mœubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì}h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÙ}h²hh³jë}h´Mœubjô)�”}”(hŒssam_controller_statelock”h]”jú)�”}”(hŒssam_controller_statelock”h]”hŒssam_controller_statelock”…”�”}”(hjþ}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjú}ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÙ}h²hh³jë}h´Mœubjv )�”}”(hŒ(struct ssam_controller *c)”h]”j| )�”}”(hŒstruct ssam_controller *c”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj~ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'~h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj~ubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj8~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj5~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j:~Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j~sbŒc.ssam_controller_statelock”†”asbuh1hhj~ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX~h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj~ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjf~h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj~ubjú)�”}”(hjBh]”hŒc”…”�”}”(hjs~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj~ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjÙ}h²hh³jë}h´Mœubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjÕ}h²hh³jë}h´Mœubah}”(h]”jÐ}ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jë}h´MœhjÒ}h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ.Lock the controller against state transitions.”h]”hŒ.Lock the controller against state transitions.”…”�”}”(hjœ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./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 ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj´~jIj´~jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX **Parameters** ``struct ssam_controller *c`` The controller to lock. **Description** Lock the controller against state transitions. Holding this lock guarantees that the controller will not transition between states, i.e. if the controller is in state "started", when this lock has been acquired, it will remain in this state at least until the lock has been released. Multiple clients may concurrently hold this lock. In other words: The ``statelock`` functions represent the read-lock part of a r/w-semaphore. Actions causing state transitions of the controller must be executed while holding the write-part of this r/w-semaphore (see ssam_controller_lock() and ssam_controller_unlock() for that). See ssam_controller_stateunlock() for the corresponding unlock function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj¾~h]”hŒ Parameters”…”�”}”(hjÀ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¼~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M hj¸~ubjn)�”}”(hhh]”js)�”}”(hŒ6``struct ssam_controller *c`` The controller to lock. ”h]”(jy)�”}”(hŒ``struct ssam_controller *c``”h]”j)�”}”(hjÝ~h]”hŒstruct ssam_controller *c”…”�”}”(hjß~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÛ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./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&]”uh1jrh³jò~h´M�hjÔ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj¸~ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MŸhj¸~ubhþ)�”}”(hXLock the controller against state transitions. Holding this lock guarantees that the controller will not transition between states, i.e. if the controller is in state "started", when this lock has been acquired, it will remain in this state at least until the lock has been released.”h]”hXLock the controller against state transitions. Holding this lock guarantees that the controller will not transition between states, i.e. if the controller is in state “startedâ€�, when this lock has been acquired, it will remain in this state at least until the lock has been released.”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mžhj¸~ubhþ)�”}”(hXJMultiple clients may concurrently hold this lock. In other words: The ``statelock`` functions represent the read-lock part of a r/w-semaphore. Actions causing state transitions of the controller must be executed while holding the write-part of this r/w-semaphore (see ssam_controller_lock() and ssam_controller_unlock() for that).”h]”(hŒFMultiple clients may concurrently hold this lock. In other words: The ”…”�”}”(hj=h²hh³Nh´Nubj)�”}”(hŒ ``statelock``”h]”hŒ statelock”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj=ubhŒ÷ functions represent the read-lock part of a r/w-semaphore. Actions causing state transitions of the controller must be executed while holding the write-part of this r/w-semaphore (see ssam_controller_lock() and ssam_controller_unlock() for that).”…”�”}”(hj=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M£hj¸~ubhþ)�”}”(hŒHSee ssam_controller_stateunlock() for the corresponding unlock function.”h]”hŒHSee ssam_controller_stateunlock() 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/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M©hj¸~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ(ssam_controller_stateunlock (C function)”Œc.ssam_controller_stateunlock”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ``struct ssam_request_sync *rqst`` The request to initialize. ”h]”(jy)�”}”(hŒ"``struct ssam_request_sync *rqst``”h]”j)�”}”(hjÞŠh]”hŒstruct ssam_request_sync *rqst”…”�”}”(hjàŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÜŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MghjØŠ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´MghjôŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjØŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jóŠh´MghjÕŠubjs)�”}”(hŒ5``enum ssam_request_flags flags`` The request flags. ”h]”(jy)�”}”(hŒ!``enum ssam_request_flags flags``”h]”j)�”}”(hj‹h]”hŒenum ssam_request_flags flags”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mhhj‹ubj•)�”}”(hhh]”hþ)�”}”(hŒThe request flags.”h]”hŒThe request flags.”…”�”}”(hj0‹h²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&]”uh1jrh³j,‹h´MhhjÕŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj¹Šubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjR‹h]”hŒ Description”…”�”}”(hjT‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjP‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mjhj¹Šubhþ)�”}”(hŒðInitializes the given request struct. Does not initialize the request message data. This has to be done explicitly after this call via ssam_request_sync_set_data() and the actual message data has to be written via ssam_request_write_data().”h]”hŒðInitializes the given request struct. Does not initialize the request message data. This has to be done explicitly after this call via ssam_request_sync_set_data() and the actual message data has to be written via ssam_request_write_data().”…”�”}”(hjh‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mihj¹Šubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjy‹h]”hŒReturn”…”�”}”(hj{‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjw‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mnhj¹Š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&]”uh1j~hj�‹ub•hŒ 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/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mohj¹Šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ%ssam_request_sync_submit (C function)”Œc.ssam_request_sync_submit”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ[int ssam_request_sync_submit (struct ssam_controller *ctrl, struct ssam_request_sync *rqst)”h]”jË)�”}”(hŒZint ssam_request_sync_submit(struct ssam_controller *ctrl, struct ssam_request_sync *rqst)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjЋh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÌ‹h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mƒubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß‹h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÌ‹h²hh³jÞ‹h´Mƒubjô)�”}”(hŒssam_request_sync_submit”h]”jú)�”}”(hŒssam_request_sync_submit”h]”hŒssam_request_sync_submit”…”�”}”(hjñ‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjí‹ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÌ‹h²hh³jÞ‹h´Mƒubjv )�”}”(hŒ>(struct ssam_controller *ctrl, struct ssam_request_sync *rqst)”h]”(j| )�”}”(hŒstruct ssam_controller *ctrl”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj Œubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj Œubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj+Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj(Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j-ŒŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jó‹sbŒc.ssam_request_sync_submit”†”asbuh1hhj Œubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKŒh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj ŒubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjYŒh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj Œubjú)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjfŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjŒubj| )�”}”(hŒstruct ssam_request_sync *rqst”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj{Œubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒŒh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj{Œubh)�”}”(hhh]”jú)�”}”(hŒssam_request_sync”h]”hŒssam_request_sync”…”�”}”(hj�Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjšŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jŸŒŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jGŒŒc.ssam_request_sync_submit”†”asbuh1hhj{Œubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Œh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj{ŒubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjÉŒh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj{Œubjú)�”}”(hŒrqst”h]”hŒrqst”…”�”}”(hjÖŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj{Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjŒubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjÌ‹h²hh³jÞ‹h´Mƒubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjÈ‹h²hh³jÞ‹h´Mƒubah}”(h]”jËah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jÞ‹h´MƒhjÅ‹h²hubj&)�”}”(hhh]”hþ)�”}”(hŒSubmit a synchronous request.”h]”hŒSubmit a synchronous request.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./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 ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj�jIj�jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hXû**Parameters** ``struct ssam_controller *ctrl`` The controller with which to submit the request. ``struct ssam_request_sync *rqst`` The request to submit. **Description** Submit a synchronous request. The request has to be initialized and properly set up, including response buffer (may be ``NULL`` if no response is expected) and command message data. This function does not wait for the request to be completed. If this function succeeds, ssam_request_sync_wait() must be used to ensure that the request has been completed before the response data can be accessed and/or the request can be freed. On failure, the request may immediately be freed. This function may only be used if the controller is active, i.e. has been initialized and not suspended.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj"�h]”hŒ Parameters”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M‡hj�ubjn)�”}”(hhh]”(js)�”}”(hŒR``struct ssam_controller *ctrl`` The controller with which to submit the request. ”h]”(jy)�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjA�h]”hŒstruct ssam_controller *ctrl”…”�”}”(hjC�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj?�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M„hj;�ubj•)�”}”(hhh]”hþ)�”}”(hŒ0The controller with which to submit the request.”h]”hŒ0The controller with which to submit 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&]”uh1jrh³jV�h´M„hj8�ubjs)�”}”(hŒ:``struct ssam_request_sync *rqst`` The request to submit. ”h]”(jy)�”}”(hŒ"``struct ssam_request_sync *rqst``”h]”j)�”}”(hjz�h]”hŒstruct ssam_request_sync *rqst”…”�”}”(hj|�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjx�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M…hjt�ubj•)�”}”(hhh]”hþ)�”}”(hŒThe request to submit.”h]”hŒThe request to submit.”…”�”}”(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&]”uh1jrh³j��h´M…hj8�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj�ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjµ�h]”hŒ Description”…”�”}”(hj·�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj³�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M‡hj�ubhþ)�”}”(hŒòSubmit a synchronous request. The request has to be initialized and properly set up, including response buffer (may be ``NULL`` if no response is expected) and command message data. This function does not wait for the request to be completed.”h]”(hŒwSubmit a synchronous request. The request has to be initialized and properly set up, including response buffer (may be ”…”�”}”(hjË�h²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÓ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjË�ubhŒs if no response is expected) and command message data. This function does not wait for the request to be completed.”…”�”}”(hjË�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M†hj�ubhþ)�”}”(hŒêIf this function succeeds, ssam_request_sync_wait() must be used to ensure that the request has been completed before the response data can be accessed and/or the request can be freed. On failure, the request may immediately be freed.”h]”hŒêIf this function succeeds, ssam_request_sync_wait() must be used to ensure that the request has been completed before the response data can be accessed and/or the request can be freed. On failure, the request may immediately be freed.”…”�”}”(hjì�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M‹hj�ubhþ)�”}”(hŒhThis function may only be used if the controller is active, i.e. has been initialized and not suspended.”h]”hŒhThis function may only be used if the controller is active, i.e. has been initialized and not suspended.”…”�”}”(hjû�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M�hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ!ssam_request_do_sync (C function)”Œc.ssam_request_do_sync”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒsint ssam_request_do_sync (struct ssam_controller *ctrl, const struct ssam_request *spec, struct ssam_response *rsp)”h]”jË)�”}”(hŒrint ssam_request_do_sync(struct ssam_controller *ctrl, const struct ssam_request *spec, struct ssam_response *rsp)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj*Žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj&Žh²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M´ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Žh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj&Žh²hh³j8Žh´M´ubjô)�”}”(hŒssam_request_do_sync”h]”jú)�”}”(hŒssam_request_do_sync”h]”hŒssam_request_do_sync”…”�”}”(hjKŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjGŽubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj&Žh²hh³j8Žh´M´ubjv )�”}”(hŒZ(struct ssam_controller *ctrl, const struct ssam_request *spec, struct ssam_response *rsp)”h]”(j| )�”}”(hŒstruct ssam_controller *ctrl”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjgŽh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjcŽubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtŽh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjcŽubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj…Žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj‚Žubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j‡ŽŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jMŽsbŒc.ssam_request_do_sync”†”asbuh1hhjcŽubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Žh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjcŽubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj³Žh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjcŽubjú)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjÀŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjcŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj_Žubj| )�”}”(hŒconst struct ssam_request *spec”h]”(jÑ)�”}”(hjƒ h]”hŒconst”…”�”}”(hjÙŽh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjÕŽubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæŽh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÕŽubjÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjôŽh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjÕŽubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÕŽubh)�”}”(hhh]”jú)�”}”(hŒ ssam_request”h]”hŒ ssam_request”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j�Œmodname”NŒ classname”Njžj¡)�”}”j¤]”j¡ŽŒc.ssam_request_do_sync”†”asbuh1hhjÕŽubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0�h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÕŽubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj>�h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjÕŽubjú)�”}”(hŒspec”h]”hŒspec”…”�”}”(hjK�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÕŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj_Žubj| )�”}”(hŒstruct ssam_response *rsp”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjd�h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj`�ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq�h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj`�ubh)�”}”(hhh]”jú)�”}”(hŒ ssam_response”h]”hŒ ssam_response”…”�”}”(hj‚�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j„�Œmodname”NŒ classname”Njžj¡)�”}”j¤]”j¡ŽŒc.ssam_request_do_sync”†”asbuh1hhj`�ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj`�ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj®�h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj`�ubjú)�”}”(hŒrsp”h]”hŒrsp”…”�”}”(hj»�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj`�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj_Žubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj&Žh²hh³j8Žh´M´ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj"Žh²hh³j8Žh´M´ubah}”(h]”jŽah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j8Žh´M´hjŽh²hubj&)�”}”(hhh]”hþ)�”}”(hŒExecute a synchronous request.”h]”hŒExecute a synchronous request.”…”�”}”(hjå�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M´hjâ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŽh²hh³j8Žh´M´ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjý�jIjý�jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hXN**Parameters** ``struct ssam_controller *ctrl`` The controller via which the request will be submitted. ``const struct ssam_request *spec`` The request specification and payload. ``struct ssam_response *rsp`` The response buffer. **Description** Allocates a synchronous request with its message data buffer on the heap via ssam_request_sync_alloc(), fully initializes it via the provided request specification, submits it, and finally waits for its completion before freeing it and returning its status. **Return** Returns the status of the request or any failure during setup.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj�h]”hŒ Parameters”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M¸hj�ubjn)�”}”(hhh]”(js)�”}”(hŒY``struct ssam_controller *ctrl`` The controller via which the request will be submitted. ”h]”(jy)�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hj&�h]”hŒstruct ssam_controller *ctrl”…”�”}”(hj(�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj$�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mµhj �ubj•)�”}”(hhh]”hþ)�”}”(hŒ7The controller via which the request will be submitted.”h]”hŒ7The controller via which the request will be submitted.”…”�”}”(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&]”uh1jrh³j;�h´Mµhj�ubjs)�”}”(hŒK``const struct ssam_request *spec`` The request specification and payload. ”h]”(jy)�”}”(hŒ#``const struct ssam_request *spec``”h]”j)�”}”(hj_�h]”hŒconst struct ssam_request *spec”…”�”}”(hja�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj]�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M¶hjY�ubj•)�”}”(hhh]”hþ)�”}”(hŒ&The request specification and payload.”h]”hŒ&The request specification and payload.”…”�”}”(hjx�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jt�h´M¶hju�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjY�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jt�h´M¶hj�ubjs)�”}”(hŒ3``struct ssam_response *rsp`` The response buffer. ”h]”(jy)�”}”(hŒ``struct ssam_response *rsp``”h]”j)�”}”(hj˜�h]”hŒstruct ssam_response *rsp”…”�”}”(hjš�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj–�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M·hj’�ubj•)�”}”(hhh]”hþ)�”}”(hŒThe response buffer.”h]”hŒThe response buffer.”…”�”}”(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&]”uh1jrh³j­�h´M·hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj�ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjÓ�h]”hŒ Description”…”�”}”(hjÕ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÑ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M¹hj�ubhþ)�”}”(hXAllocates a synchronous request with its message data buffer on the heap via ssam_request_sync_alloc(), fully initializes it via the provided request specification, submits it, and finally waits for its completion before freeing it and returning its status.”h]”hXAllocates a synchronous request with its message data buffer on the heap via ssam_request_sync_alloc(), fully initializes it via the provided request specification, submits it, and finally waits for its completion before freeing it and returning its status.”…”�”}”(hjé�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M¸hj�ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjú�h]”hŒReturn”…”�”}”(hjü�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjø�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M½hj�ubhþ)�”}”(hŒ>Returns the status of the request or any failure during setup.”h]”hŒ>Returns the status of the request or any failure during setup.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M¾hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ-ssam_request_do_sync_with_buffer (C function)”Œ"c.ssam_request_do_sync_with_buffer”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ–int ssam_request_do_sync_with_buffer (struct ssam_controller *ctrl, const struct ssam_request *spec, struct ssam_response *rsp, struct ssam_span *buf)”h]”jË)�”}”(hŒ•int ssam_request_do_sync_with_buffer(struct ssam_controller *ctrl, const struct ssam_request *spec, struct ssam_response *rsp, struct ssam_span *buf)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj?‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj;‘h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mçubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN‘h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj;‘h²hh³jM‘h´Mçubjô)�”}”(hŒ ssam_request_do_sync_with_buffer”h]”jú)�”}”(hŒ ssam_request_do_sync_with_buffer”h]”hŒ ssam_request_do_sync_with_buffer”…”�”}”(hj`‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj\‘ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj;‘h²hh³jM‘h´Mçubjv )�”}”(hŒq(struct ssam_controller *ctrl, const struct ssam_request *spec, struct ssam_response *rsp, struct ssam_span *buf)”h]”(j| )�”}”(hŒstruct ssam_controller *ctrl”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj|‘h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjx‘ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰‘h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjx‘ubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjš‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj—‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jœ‘Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jb‘sbŒ"c.ssam_request_do_sync_with_buffer”†”asbuh1hhjx‘ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº‘h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjx‘ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjÈ‘h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjx‘ubjú)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjÕ‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjx‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjt‘ubj| )�”}”(hŒconst struct ssam_request *spec”h]”(jÑ)�”}”(hjƒ h]”hŒconst”…”�”}”(hjî‘h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjê‘ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû‘h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjê‘ubjÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjê‘ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjê‘ubh)�”}”(hhh]”jú)�”}”(hŒ ssam_request”h]”hŒ ssam_request”…”�”}”(hj'’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj$’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j)’Œmodname”NŒ classname”Njžj¡)�”}”j¤]”j¶‘Œ"c.ssam_request_do_sync_with_buffer”†”asbuh1hhjê‘ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE’h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjê‘ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjS’h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjê‘ubjú)�”}”(hŒspec”h]”hŒspec”…”�”}”(hj`’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjê‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjt‘ubj| )�”}”(hŒstruct ssam_response *rsp”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjy’h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhju’ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†’h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhju’ubh)�”}”(hhh]”jú)�”}”(hŒ ssam_response”h]”hŒ ssam_response”…”�”}”(hj—’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj”’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j™’Œmodname”NŒ classname”Njžj¡)�”}”j¤]”j¶‘Œ"c.ssam_request_do_sync_with_buffer”†”asbuh1hhju’ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ’h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhju’ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjÃ’h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hju’ubjú)�”}”(hŒrsp”h]”hŒrsp”…”�”}”(hjÐ’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhju’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjt‘ubj| )�”}”(hŒstruct ssam_span *buf”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjé’h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjå’ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö’h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjå’ubh)�”}”(hhh]”jú)�”}”(hŒ ssam_span”h]”hŒ ssam_span”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j “Œmodname”NŒ classname”Njžj¡)�”}”j¤]”j¶‘Œ"c.ssam_request_do_sync_with_buffer”†”asbuh1hhjå’ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%“h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjå’ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj3“h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjå’ubjú)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj@“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjå’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjt‘ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj;‘h²hh³jM‘h´Mçubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj7‘h²hh³jM‘h´Mçubah}”(h]”j2‘ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jM‘h´Mçhj4‘h²hubj&)�”}”(hhh]”hþ)�”}”(hŒZExecute a synchronous request with the provided buffer as back-end for the message buffer.”h]”hŒZExecute a synchronous request with the provided buffer as back-end for the message buffer.”…”�”}”(hjj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mçhjg“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj4‘h²hh³jM‘h´Mçubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj‚“jIj‚“jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX¤**Parameters** ``struct ssam_controller *ctrl`` The controller via which the request will be submitted. ``const struct ssam_request *spec`` The request specification and payload. ``struct ssam_response *rsp`` The response buffer. ``struct ssam_span *buf`` The buffer for the request message data. **Description** Allocates a synchronous request struct on the stack, fully initializes it using the provided buffer as message data buffer, submits it, and then waits for its completion before returning its status. The SSH_COMMAND_MESSAGE_LENGTH() macro can be used to compute the required message buffer size. This function does essentially the same as ssam_request_do_sync(), but instead of dynamically allocating the request and message data buffer, it uses the provided message data buffer and stores the (small) request struct on the heap. **Return** Returns the status of the request or any failure during setup.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjŒ“h]”hŒ Parameters”…”�”}”(hjŽ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjŠ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mëhj†“ubjn)�”}”(hhh]”(js)�”}”(hŒY``struct ssam_controller *ctrl`` The controller via which the request will be submitted. ”h]”(jy)�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hj«“h]”hŒstruct ssam_controller *ctrl”…”�”}”(hj­“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj©“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Méhj¥“ubj•)�”}”(hhh]”hþ)�”}”(hŒ7The controller via which the request will be submitted.”h]”hŒ7The controller via which the request will be submitted.”…”�”}”(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&]”uh1jrh³jÀ“h´Méhj¢“ubjs)�”}”(hŒK``const struct ssam_request *spec`` The request specification and payload. ”h]”(jy)�”}”(hŒ#``const struct ssam_request *spec``”h]”j)�”}”(hjä“h]”hŒconst struct ssam_request *spec”…”�”}”(hjæ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjâ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MêhjÞ“ubj•)�”}”(hhh]”hþ)�”}”(hŒ&The request specification and payload.”h]”hŒ&The request specification and payload.”…”�”}”(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&]”uh1jrh³jù“h´Mêhj¢“ubjs)�”}”(hŒ3``struct ssam_response *rsp`` The response buffer. ”h]”(jy)�”}”(hŒ``struct ssam_response *rsp``”h]”j)�”}”(hj”h]”hŒstruct ssam_response *rsp”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mëhj”ubj•)�”}”(hhh]”hþ)�”}”(hŒThe response buffer.”h]”hŒThe response buffer.”…”�”}”(hj6”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j2”h´Mëhj3”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j2”h´Mëhj¢“ubjs)�”}”(hŒC``struct ssam_span *buf`` The buffer for the request message data. ”h]”(jy)�”}”(hŒ``struct ssam_span *buf``”h]”j)�”}”(hjV”h]”hŒstruct ssam_span *buf”…”�”}”(hjX”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjT”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MìhjP”ubj•)�”}”(hhh]”hþ)�”}”(hŒ(The buffer for the request message data.”h]”hŒ(The buffer for the request message data.”…”�”}”(hjo”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jk”h´Mìhjl”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjP”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jk”h´Mìhj¢“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj†“ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj‘”h]”hŒ Description”…”�”}”(hj“”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj�”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mîhj†“ubhþ)�”}”(hX&Allocates a synchronous request struct on the stack, fully initializes it using the provided buffer as message data buffer, submits it, and then waits for its completion before returning its status. The SSH_COMMAND_MESSAGE_LENGTH() macro can be used to compute the required message buffer size.”h]”hX&Allocates a synchronous request struct on the stack, fully initializes it using the provided buffer as message data buffer, submits it, and then waits for its completion before returning its status. The SSH_COMMAND_MESSAGE_LENGTH() macro can be used to compute the required message buffer size.”…”�”}”(hj§”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Míhj†“ubhþ)�”}”(hŒéThis function does essentially the same as ssam_request_do_sync(), but instead of dynamically allocating the request and message data buffer, it uses the provided message data buffer and stores the (small) request struct on the heap.”h]”hŒéThis function does essentially the same as ssam_request_do_sync(), but instead of dynamically allocating the request and message data buffer, it uses the provided message data buffer and stores the (small) request struct on the heap.”…”�”}”(hj¶”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Móhj†“ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjÇ”h]”hŒReturn”…”�”}”(hjÉ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÅ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Møhj†“ubhþ)�”}”(hŒ>Returns the status of the request or any failure during setup.”h]”hŒ>Returns the status of the request or any failure during setup.”…”�”}”(hjÝ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´Mùhj†“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ#ssam_notifier_register (C function)”Œc.ssam_notifier_register”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒXint ssam_notifier_register (struct ssam_controller *ctrl, struct ssam_event_notifier *n)”h]”jË)�”}”(hŒWint ssam_notifier_register(struct ssam_controller *ctrl, struct ssam_event_notifier *n)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj •h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj•h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj•h²hh³j•h´M ubjô)�”}”(hŒssam_notifier_register”h]”jú)�”}”(hŒssam_notifier_register”h]”hŒssam_notifier_register”…”�”}”(hj-•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj)•ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj•h²hh³j•h´M ubjv )�”}”(hŒ=(struct ssam_controller *ctrl, struct ssam_event_notifier *n)”h]”(j| )�”}”(hŒstruct ssam_controller *ctrl”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjI•h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjE•ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV•h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjE•ubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjg•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjd•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”ji•Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j/•sbŒc.ssam_notifier_register”†”asbuh1hhjE•ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡•h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjE•ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj••h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjE•ubjú)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj¢•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjE•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjA•ubj| )�”}”(hŒstruct ssam_event_notifier *n”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj»•h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj·•ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ•h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj·•ubh)�”}”(hhh]”jú)�”}”(hŒssam_event_notifier”h]”hŒssam_event_notifier”…”�”}”(hjÙ•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÖ•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jÛ•Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jƒ•Œc.ssam_notifier_register”†”asbuh1hhj·•ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷•h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj·•ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj·•ubjú)�”}”(hjh]”hŒn”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj·•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjA•ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj•h²hh³j•h´M ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj•h²hh³j•h´M ubah}”(h]”jÿ”ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j•h´M hj•h²hubj&)�”}”(hhh]”hþ)�”}”(hŒRegister an event notifier.”h]”hŒRegister an event notifier.”…”�”}”(hj;–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M hj8–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj•h²hh³j•h´M ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjS–jIjS–jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX[**Parameters** ``struct ssam_controller *ctrl`` The controller to register the notifier on. ``struct ssam_event_notifier *n`` The event notifier to register. **Description** Register an event notifier. Increment the usage counter of the associated SAM event if the notifier is not marked as an observer. If the event is not marked as an observer and is currently not enabled, it will be enabled during this call. If the notifier is marked as an observer, no attempt will be made at enabling any event and no reference count will be modified. Notifiers marked as observers do not need to be associated with one specific event, i.e. as long as no event matching is performed, only the event target category needs to be set. **Return** Returns zero on success, ``-ENOSPC`` if there have already been ``INT_MAX`` notifiers for the event ID/type associated with the notifier block registered, ``-ENOMEM`` if the corresponding event entry could not be allocated. If this is the first time that a notifier block is registered for the specific associated event, returns the status of the event-enable EC-command.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj]–h]”hŒ Parameters”…”�”}”(hj_–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj[–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M hjW–ubjn)�”}”(hhh]”(js)�”}”(hŒM``struct ssam_controller *ctrl`` The controller to register the notifier on. ”h]”(jy)�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hj|–h]”hŒstruct ssam_controller *ctrl”…”�”}”(hj~–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjz–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M hjv–ubj•)�”}”(hhh]”hþ)�”}”(hŒ+The controller to register the notifier on.”h]”hŒ+The controller to register the notifier on.”…”�”}”(hj•–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j‘–h´M hj’–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjv–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j‘–h´M hjs–ubjs)�”}”(hŒB``struct ssam_event_notifier *n`` The event notifier to register. ”h]”(jy)�”}”(hŒ!``struct ssam_event_notifier *n``”h]”j)�”}”(hjµ–h]”hŒstruct ssam_event_notifier *n”…”�”}”(hj·–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj³–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M hj¯–ubj•)�”}”(hhh]”hþ)�”}”(hŒThe event notifier to register.”h]”hŒThe event notifier to register.”…”�”}”(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&]”uh1jrh³jÊ–h´M hjs–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjW–ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjð–h]”hŒ Description”…”�”}”(hjò–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjî–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M hjW–ubhþ)�”}”(hXoRegister an event notifier. Increment the usage counter of the associated SAM event if the notifier is not marked as an observer. If the event is not marked as an observer and is currently not enabled, it will be enabled during this call. If the notifier is marked as an observer, no attempt will be made at enabling any event and no reference count will be modified.”h]”hXoRegister an event notifier. Increment the usage counter of the associated SAM event if the notifier is not marked as an observer. If the event is not marked as an observer and is currently not enabled, it will be enabled during this call. If the notifier is marked as an observer, no attempt will be made at enabling any event and no reference count will be modified.”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M hjW–ubhþ)�”}”(hŒ³Notifiers marked as observers do not need to be associated with one specific event, i.e. as long as no event matching is performed, only the event target category needs to be set.”h]”hŒ³Notifiers marked as observers do not need to be associated with one specific event, i.e. as long as no event matching is performed, only the event target category needs to be set.”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M hjW–ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj&—h]”hŒReturn”…”�”}”(hj(—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj$—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M hjW–ubhþ)�”}”(hXsReturns zero on success, ``-ENOSPC`` if there have already been ``INT_MAX`` notifiers for the event ID/type associated with the notifier block registered, ``-ENOMEM`` if the corresponding event entry could not be allocated. If this is the first time that a notifier block is registered for the specific associated event, returns the status of the event-enable EC-command.”h]”(hŒReturns zero on success, ”…”�”}”(hj<—h²hh³Nh´Nubj)�”}”(hŒ ``-ENOSPC``”h]”hŒ-ENOSPC”…”�”}”(hjD—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj<—ubhŒ if there have already been ”…”�”}”(hj<—h²hh³Nh´Nubj)�”}”(hŒ ``INT_MAX``”h]”hŒINT_MAX”…”�”}”(hjV—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj<—ubhŒP notifiers for the event ID/type associated with the notifier block registered, ”…”�”}”(hj<—h²hh³Nh´Nubj)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hjh—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj<—ubhŒÍ if the corresponding event entry could not be allocated. If this is the first time that a notifier block is registered for the specific associated event, returns the status of the event-enable EC-command.”…”�”}”(hj<—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M hjW–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ'__ssam_notifier_unregister (C function)”Œc.__ssam_notifier_unregister”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒjint __ssam_notifier_unregister (struct ssam_controller *ctrl, struct ssam_event_notifier *n, bool disable)”h]”jË)�”}”(hŒiint __ssam_notifier_unregister(struct ssam_controller *ctrl, struct ssam_event_notifier *n, bool disable)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¡—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�—h²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MI ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°—h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj�—h²hh³j¯—h´MI ubjô)�”}”(hŒ__ssam_notifier_unregister”h]”jú)�”}”(hŒ__ssam_notifier_unregister”h]”hŒ__ssam_notifier_unregister”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj¾—ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj�—h²hh³j¯—h´MI ubjv )�”}”(hŒK(struct ssam_controller *ctrl, struct ssam_event_notifier *n, bool disable)”h]”(j| )�”}”(hŒstruct ssam_controller *ctrl”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjÞ—h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjÚ—ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë—h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÚ—ubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjü—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjù—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jþ—Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jÄ—sbŒc.__ssam_notifier_unregister”†”asbuh1hhjÚ—ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÚ—ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj*˜h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjÚ—ubjú)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj7˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÚ—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjÖ—ubj| )�”}”(hŒstruct ssam_event_notifier *n”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjP˜h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjL˜ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]˜h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjL˜ubh)�”}”(hhh]”jú)�”}”(hŒssam_event_notifier”h]”hŒssam_event_notifier”…”�”}”(hjn˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjk˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jp˜Œmodname”NŒ classname”Njžj¡)�”}”j¤]”j˜Œc.__ssam_notifier_unregister”†”asbuh1hhjL˜ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ˜h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjL˜ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjš˜h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjL˜ubjú)�”}”(hjh]”hŒn”…”�”}”(hj§˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjL˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjÖ—ubj| )�”}”(hŒ bool disable”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj¿˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj»˜ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj̘h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj»˜ubjú)�”}”(hŒdisable”h]”hŒdisable”…”�”}”(hjÚ˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj»˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjÖ—ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj�—h²hh³j¯—h´MI ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj™—h²hh³j¯—h´MI ubah}”(h]”j”—ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j¯—h´MI hj–—h²hubj&)�”}”(hhh]”hþ)�”}”(hŒUnregister an event notifier.”h]”hŒUnregister an event notifier.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MI hj™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj–—h²hh³j¯—h´MI ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj™jIj™jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX«**Parameters** ``struct ssam_controller *ctrl`` The controller the notifier has been registered on. ``struct ssam_event_notifier *n`` The event notifier to unregister. ``bool disable`` Whether to disable the corresponding event on the EC. **Description** Unregister an event notifier. Decrement the usage counter of the associated SAM event if the notifier is not marked as an observer. If the usage counter reaches zero and ``disable`` equals ``true``, the event will be disabled. Useful for hot-removable devices, where communication may fail once the device has been physically removed. In that case, specifying ``disable`` as ``false`` avoids communication with the EC. **Return** Returns zero on success, ``-ENOENT`` if the given notifier block has not been registered on the controller. If the given notifier block was the last one associated with its specific event, returns the status of the event-disable EC-command.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj&™h]”hŒ Parameters”…”�”}”(hj(™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj$™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MM hj ™ubjn)�”}”(hhh]”(js)�”}”(hŒU``struct ssam_controller *ctrl`` The controller the notifier has been registered on. ”h]”(jy)�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjE™h]”hŒstruct ssam_controller *ctrl”…”�”}”(hjG™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjC™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MJ hj?™ubj•)�”}”(hhh]”hþ)�”}”(hŒ3The controller the notifier has been registered on.”h]”hŒ3The controller the notifier has been registered on.”…”�”}”(hj^™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jZ™h´MJ hj[™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj?™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jZ™h´MJ hj<™ubjs)�”}”(hŒD``struct ssam_event_notifier *n`` The event notifier to unregister. ”h]”(jy)�”}”(hŒ!``struct ssam_event_notifier *n``”h]”j)�”}”(hj~™h]”hŒstruct ssam_event_notifier *n”…”�”}”(hj€™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj|™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MK hjx™ubj•)�”}”(hhh]”hþ)�”}”(hŒ!The event notifier to unregister.”h]”hŒ!The event notifier to unregister.”…”�”}”(hj—™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j“™h´MK hj”™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjx™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j“™h´MK hj<™ubjs)�”}”(hŒG``bool disable`` Whether to disable the corresponding event on the EC. ”h]”(jy)�”}”(hŒ``bool disable``”h]”j)�”}”(hj·™h]”hŒ bool disable”…”�”}”(hj¹™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjµ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´ML hj±™ubj•)�”}”(hhh]”hþ)�”}”(hŒ5Whether to disable the corresponding event on the EC.”h]”hŒ5Whether to disable the corresponding event on the EC.”…”�”}”(hjЙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÌ™h´ML hjÍ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj±™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÌ™h´ML hj<™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj ™ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjò™h]”hŒ Description”…”�”}”(hjô™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjð™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MN hj ™ubhþ)�”}”(hŒâUnregister an event notifier. Decrement the usage counter of the associated SAM event if the notifier is not marked as an observer. If the usage counter reaches zero and ``disable`` equals ``true``, the event will be disabled.”h]”(hŒªUnregister an event notifier. Decrement the usage counter of the associated SAM event if the notifier is not marked as an observer. If the usage counter reaches zero and ”…”�”}”(hjšh²hh³Nh´Nubj)�”}”(hŒ ``disable``”h]”hŒdisable”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjšubhŒ equals ”…”�”}”(hjšh²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj"šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjšubhŒ, the event will be disabled.”…”�”}”(hjšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MM hj ™ubhþ)�”}”(hŒ¿Useful for hot-removable devices, where communication may fail once the device has been physically removed. In that case, specifying ``disable`` as ``false`` avoids communication with the EC.”h]”(hŒ…Useful for hot-removable devices, where communication may fail once the device has been physically removed. In that case, specifying ”…”�”}”(hj;šh²hh³Nh´Nubj)�”}”(hŒ ``disable``”h]”hŒdisable”…”�”}”(hjCšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj;šubhŒ as ”…”�”}”(hj;šh²hh³Nh´Nubj)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjUšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj;šubhŒ" avoids communication with the EC.”…”�”}”(hj;šh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MQ hj ™ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjpšh]”hŒReturn”…”�”}”(hjršh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjnšubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MU hj ™ubhþ)�”}”(hŒðReturns zero on success, ``-ENOENT`` if the given notifier block has not been registered on the controller. If the given notifier block was the last one associated with its specific event, returns the status of the event-disable EC-command.”h]”(hŒReturns zero on success, ”…”�”}”(hj†šh²hh³Nh´Nubj)�”}”(hŒ ``-ENOENT``”h]”hŒ-ENOENT”…”�”}”(hjŽšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj†šubhŒÌ if the given notifier block has not been registered on the controller. If the given notifier block was the last one associated with its specific event, returns the status of the event-disable EC-command.”…”�”}”(hj†šh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MV hj ™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ)ssam_controller_event_enable (C function)”Œc.ssam_controller_event_enable”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ‚int ssam_controller_event_enable (struct ssam_controller *ctrl, struct ssam_event_registry reg, struct ssam_event_id id, u8 flags)”h]”jË)�”}”(hŒ�int ssam_controller_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 ]”jah"]”h$]”h&]”uh1jûhjÚh²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M� ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖšh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÚh²hh³jÕšh´M� ubjô)�”}”(hŒssam_controller_event_enable”h]”jú)�”}”(hŒssam_controller_event_enable”h]”hŒssam_controller_event_enable”…”�”}”(hjèšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjäšubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÚh²hh³jÕšh´M� ubjv )�”}”(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]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj›ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj›ubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj"›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j$›Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jêšsbŒc.ssam_controller_event_enable”†”asbuh1hhj›ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB›h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj›ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjP›h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj›ubjú)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj]›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjüšubj| )�”}”(hŒstruct ssam_event_registry reg”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjv›h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjr›ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ›h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjr›ubh)�”}”(hhh]”jú)�”}”(hŒssam_event_registry”h]”hŒssam_event_registry”…”�”}”(hj”›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj‘›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j–›Œmodname”NŒ classname”Njžj¡)�”}”j¤]”j>›Œc.ssam_controller_event_enable”†”asbuh1hhjr›ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²›h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjr›ubjú)�”}”(hŒreg”h]”hŒreg”…”�”}”(hjÀ›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjr›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjüšubj| )�”}”(hŒstruct ssam_event_id id”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjÙ›h²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjÕ›ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ›h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÕ›ubh)�”}”(hhh]”jú)�”}”(hŒ ssam_event_id”h]”hŒ ssam_event_id”…”�”}”(hj÷›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjô›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jù›Œmodname”NŒ classname”Njžj¡)�”}”j¤]”j>›Œc.ssam_controller_event_enable”†”asbuh1hhjÕ›ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÕ›ubjú)�”}”(hŒid”h]”hŒid”…”�”}”(hj#œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÕ›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjüšubj| )�”}”(hŒu8 flags”h]”(h)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj?œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj<œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jAœŒmodname”NŒ classname”Njžj¡)�”}”j¤]”j>›Œc.ssam_controller_event_enable”†”asbuh1hhj8œubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]œh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj8œubjú)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjkœh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj8œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjüšubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjÚh²hh³jÕšh´M� ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj¿šh²hh³jÕšh´M� ubah}”(h]”jºšah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jÕšh´M� hj¼šh²hubj&)�”}”(hhh]”hþ)�”}”(hŒEnable the specified event.”h]”hŒEnable the specified event.”…”�”}”(hj•œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./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 ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj­œjIj­œjJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hXF**Parameters** ``struct ssam_controller *ctrl`` The controller to enable the event for. ``struct ssam_event_registry reg`` The event registry to use for enabling the event. ``struct ssam_event_id id`` The event ID specifying the event to be enabled. ``u8 flags`` The SAM event flags used for enabling the event. **Description** Increment the event reference count of the specified event. If the event has not been enabled previously, it will be enabled by this call. **Note** In general, ssam_notifier_register() with a non-observer notifier should be preferred for enabling/disabling events, as this will guarantee proper ordering and event forwarding in case of errors during event enabling/disabling. **Return** Returns zero on success, ``-ENOSPC`` if the reference count for the specified event has reached its maximum, ``-ENOMEM`` if the corresponding event entry could not be allocated. If this is the first time that this event has been enabled (i.e. the reference count was incremented from zero to one by this call), returns the status of the event-enable EC-command.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj·œh]”hŒ Parameters”…”�”}”(hj¹œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjµœubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M“ hj±œubjn)�”}”(hhh]”(js)�”}”(hŒI``struct ssam_controller *ctrl`` The controller to enable the event for. ”h]”(jy)�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjÖœh]”hŒstruct ssam_controller *ctrl”…”�”}”(hjØœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÔœubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M� hjМubj•)�”}”(hhh]”hþ)�”}”(hŒ'The controller to enable the event for.”h]”hŒ'The controller to enable the event for.”…”�”}”(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&]”uh1jrh³jëœh´M� hjÍœubjs)�”}”(hŒU``struct ssam_event_registry reg`` The event registry to use for enabling the event. ”h]”(jy)�”}”(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&]”uh1j~hj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M‘ hj �ubj•)�”}”(hhh]”hþ)�”}”(hŒ1The event registry to use for enabling the event.”h]”hŒ1The event registry to use for enabling 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&]”uh1jrh³j$�h´M‘ hjÍœubjs)�”}”(hŒM``struct ssam_event_id id`` The event ID specifying the event to be enabled. ”h]”(jy)�”}”(hŒ``struct ssam_event_id id``”h]”j)�”}”(hjH�h]”hŒstruct ssam_event_id id”…”�”}”(hjJ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjF�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M’ hjB�ubj•)�”}”(hhh]”hþ)�”}”(hŒ0The event ID specifying the event to be enabled.”h]”hŒ0The event ID specifying the event to be enabled.”…”�”}”(hja�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j]�h´M’ hj^�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjB�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j]�h´M’ hjÍœubjs)�”}”(hŒ>``u8 flags`` The SAM event flags used for enabling the event. ”h]”(jy)�”}”(hŒ ``u8 flags``”h]”j)�”}”(hj��h]”hŒu8 flags”…”�”}”(hjƒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M“ hj{�ubj•)�”}”(hhh]”hþ)�”}”(hŒ0The SAM event flags used for enabling the event.”h]”hŒ0The SAM event flags used for enabling 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&]”uh1jrh³j–�h´M“ hjÍœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj±œubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj¼�h]”hŒ Description”…”�”}”(hj¾�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjº�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M• hj±œubhþ)�”}”(hŒŠIncrement the event reference count of the specified event. If the event has not been enabled previously, it will be enabled by this call.”h]”hŒŠIncrement the event reference count of the specified event. If the event has not been enabled previously, it will be enabled by this call.”…”�”}”(hjÒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M” hj±œubhþ)�”}”(hŒ**Note**”h]”jX)�”}”(hjã�h]”hŒNote”…”�”}”(hjå�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjá�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M— hj±œubhþ)�”}”(hŒãIn general, ssam_notifier_register() with a non-observer notifier should be preferred for enabling/disabling events, as this will guarantee proper ordering and event forwarding in case of errors during event enabling/disabling.”h]”hŒãIn general, ssam_notifier_register() with a non-observer notifier should be preferred for enabling/disabling events, as this will guarantee proper ordering and event forwarding in case of errors during event enabling/disabling.”…”�”}”(hjù�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”u•h1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M˜ hj±œubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj žh]”hŒReturn”…”�”}”(hj žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M� hj±œubhþ)�”}”(hXiReturns zero on success, ``-ENOSPC`` if the reference count for the specified event has reached its maximum, ``-ENOMEM`` if the corresponding event entry could not be allocated. If this is the first time that this event has been enabled (i.e. the reference count was incremented from zero to one by this call), returns the status of the event-enable EC-command.”h]”(hŒReturns zero on success, ”…”�”}”(hj žh²hh³Nh´Nubj)�”}”(hŒ ``-ENOSPC``”h]”hŒ-ENOSPC”…”�”}”(hj(žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj žubhŒI if the reference count for the specified event has reached its maximum, ”…”�”}”(hj žh²hh³Nh´Nubj)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hj:žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj žubhŒñ if the corresponding event entry could not be allocated. If this is the first time that this event has been enabled (i.e. the reference count was incremented from zero to one by this call), returns the status of the event-enable EC-command.”…”�”}”(hj žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´M� hj±œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ*ssam_controller_event_disable (C function)”Œc.ssam_controller_event_disable”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒƒint ssam_controller_event_disable (struct ssam_controller *ctrl, struct ssam_event_registry reg, struct ssam_event_id id, u8 flags)”h]”jË)�”}”(hŒ‚int ssam_controller_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”…”�”}”(hjsžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjožh²hh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MÄ ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚žh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjožh²hh³j�žh´MÄ ubjô)�”}”(hŒssam_controller_event_disable”h]”jú)�”}”(hŒssam_controller_event_disable”h]”hŒssam_controller_event_disable”…”�”}”(hj”žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj�žubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjožh²hh³j�žh´MÄ ubjv )�”}”(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]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj°žh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj¬žubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½žh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj¬žubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjΞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjËžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jОŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j–žsbŒc.ssam_controller_event_disable”†”asbuh1hhj¬žubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîžh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj¬žubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjüžh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj¬žubjú)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj¬žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj¨žubj| )�”}”(hŒstruct ssam_event_registry reg”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj"Ÿh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjŸubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Ÿh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjŸubh)�”}”(hhh]”jú)�”}”(hŒssam_event_registry”h]”hŒssam_event_registry”…”�”}”(hj@Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj=Ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jBŸŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jꞌc.ssam_controller_event_disable”†”asbuh1hhjŸubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^Ÿh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjŸubjú)�”}”(hŒreg”h]”hŒreg”…”�”}”(hjlŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj¨žubj| )�”}”(hŒstruct ssam_event_id id”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj…Ÿh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj�Ÿubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Ÿh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj�Ÿubh)�”}”(hhh]”jú)�”}”(hŒ ssam_event_id”h]”hŒ ssam_event_id”…”�”}”(hj£Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj Ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j¥ŸŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jꞌc.ssam_controller_event_disable”†”asbuh1hhj�Ÿubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁŸh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj�Ÿubjú)�”}”(hŒid”h]”hŒid”…”�”}”(hjÏŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj�Ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj¨žubj| )�”}”(hŒu8 flags”h]”(h)�”}”(hhh]”jú)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjëŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjèŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jퟌmodname”NŒ classname”Njžj¡)�”}”j¤]”jꞌc.ssam_controller_event_disable”†”asbuh1hhjäŸubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjäŸubjú)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjäŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj¨žubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjožh²hh³j�žh´MÄ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjkžh²hh³j�žh´MÄ ubah}”(h]”jfžah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j�žh´MÄ hjhžh²hubj&)�”}”(hhh]”hþ)�”}”(hŒDisable the specified event.”h]”hŒDisable the specified event.”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MÄ hj> h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjhžh²hh³j�žh´MÄ ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjY jIjY jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX´**Parameters** ``struct ssam_controller *ctrl`` The controller to disable the event for. ``struct ssam_event_registry reg`` The event registry to use for disabling the event. ``struct ssam_event_id id`` The event ID specifying the event to be disabled. ``u8 flags`` The flags used when enabling the event. **Description** Decrement the reference count of the specified event. If the reference count reaches zero, the event will be disabled. **Note** In general, ssam_notifier_register()/ssam_notifier_unregister() with a non-observer notifier should be preferred for enabling/disabling events, as this will guarantee proper ordering and event forwarding in case of errors during event enabling/disabling. **Return** Returns zero on success, ``-ENOENT`` if the given event has not been enabled on the controller. If the reference count of the event reaches zero during this call, returns the status of the event-disable EC-command.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjc h]”hŒ Parameters”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhja ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MÈ hj] ubjn)�”}”(hhh]”(js)�”}”(hŒJ``struct ssam_controller *ctrl`` The controller to disable the event for. ”h]”(jy)�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hj‚ h]”hŒstruct ssam_controller *ctrl”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MÅ hj| ubj•)�”}”(hhh]”hþ)�”}”(hŒ(The controller to disable the event for.”h]”hŒ(The controller to disable the event for.”…”�”}”(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&]”uh1jrh³j— h´MÅ hjy ubjs)�”}”(hŒV``struct ssam_event_registry reg`` The event registry to use for disabling the event. ”h]”(jy)�”}”(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&]”uh1j~hj¹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MÆ hjµ ubj•)�”}”(hhh]”hþ)�”}”(hŒ2The event registry to use for disabling the event.”h]”hŒ2The event registry to use for disabling 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&]”uh1jrh³jРh´MÆ hjy ubjs)�”}”(hŒN``struct ssam_event_id id`` The event ID specifying the event to be disabled. ”h]”(jy)�”}”(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&]”uh1j~hjò ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MÇ hjî ubj•)�”}”(hhh]”hþ)�”}”(hŒ1The event ID specifying the event to be disabled.”h]”hŒ1The event ID specifying 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”hjî ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j ¡h´MÇ hjy ubjs)�”}”(hŒ5``u8 flags`` The flags used when enabling the event. ”h]”(jy)�”}”(hŒ ``u8 flags``”h]”j)�”}”(hj-¡h]”hŒu8 flags”…”�”}”(hj/¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj+¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./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.”…”�”}”(hjF¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jB¡h´MÈ hjC¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj'¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jB¡h´MÈ hjy ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj] ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjh¡h]”hŒ Description”…”�”}”(hjj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjf¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MÊ hj] ubhþ)�”}”(hŒvDecrement the reference count of the specified event. If the reference count reaches zero, the event will be disabled.”h]”hŒvDecrement the reference count of the specified event. If the reference count reaches zero, the event will be disabled.”…”�”}”(hj~¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MÉ hj] ubhþ)�”}”(hŒ**Note**”h]”jX)�”}”(hj�¡h]”hŒNote”…”�”}”(hj‘¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj�¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MÌ hj] ubhþ)�”}”(hŒþIn general, ssam_notifier_register()/ssam_notifier_unregister() with a non-observer notifier should be preferred for enabling/disabling events, as this will guarantee proper ordering and event forwarding in case of errors during event enabling/disabling.”h]”hŒþIn general, ssam_notifier_register()/ssam_notifier_unregister() with a non-observer notifier should be preferred for enabling/disabling events, as this will guarantee proper ordering and event forwarding in case of errors during event enabling/disabling.”…”�”}”(hj¥¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MÍ hj] ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj¶¡h]”hŒReturn”…”�”}”(hj¸¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj´¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MÒ hj] ubhþ)�”}”(hŒÖReturns zero on success, ``-ENOENT`` if the given event has not been enabled on the controller. If the reference count of the event reaches zero during this call, returns the status of the event-disable EC-command.”h]”(hŒReturns zero on success, ”…”�”}”(hjÌ¡h²hh³Nh´Nubj)�”}”(hŒ ``-ENOENT``”h]”hŒ-ENOENT”…”�”}”(hjÔ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÌ¡ubhŒ² if the given event has not been enabled on the controller. If the reference count of the event reaches zero during this call, returns the status of the event-disable EC-command.”…”�”}”(hjÌ¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‰/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:25: ./drivers/platform/surface/aggregator/controller.c”h´MÒ hj] ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj*9h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ ssam_get_controller (C function)”Œc.ssam_get_controller”hNt”auh1j®hj*9h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ3struct ssam_controller * ssam_get_controller (void)”h]”jË)�”}”(hŒ1struct ssam_controller *ssam_get_controller(void)”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(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/client-api:28: ./drivers/platform/surface/aggregator/core.c”h´K/ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj ¢h²hh³j¢h´K/ubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hj,¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj)¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j.¢Œmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œssam_get_controller”sbŒc.ssam_get_controller”†”asbuh1hhj ¢h²hh³j¢h´K/ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM¢h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj ¢h²hh³j¢h´K/ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj[¢h²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj ¢h²hh³j¢h´K/ubjô)�”}”(hŒssam_get_controller”h]”jú)�”}”(hjJ¢h]”hŒssam_get_controller”…”�”}”(hjl¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjh¢ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj ¢h²hh³j¢h´K/ubjv )�”}”(hŒ(void)”h]”j| )�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjƒ¢ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj¢ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj ¢h²hh³j¢h´K/ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj¢h²hh³j¢h´K/ubah}”(h]”j¢ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j¢h´K/hj¢h²hubj&)�”}”(hhh]”hþ)�”}”(hŒ!Get reference to SSAM controller.”h]”hŒ!Get reference to SSAM controller.”…”�”}”(hj±¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œƒ/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:28: ./drivers/platform/surface/aggregator/core.c”h´K/hj®¢h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¢h²hh³j¢h´K/ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjÉ¢jIjÉ¢jJ‰jK‰jL‰uh1j¿h²hhj*9h³Nh´NubjN)�”}”(hX”**Parameters** ``void`` no arguments **Description** Returns a reference to the SSAM controller of the system or ``NULL`` if there is none, it hasn't been set up yet, or it has already been unregistered. This function automatically increments the reference count of the controller, thus the calling party must ensure that ssam_controller_put() is called when it doesn't need the controller any more.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjÓ¢h]”hŒ Parameters”…”�”}”(hjÕ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÑ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œƒ/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:28: ./drivers/platform/surface/aggregator/core.c”h´K3hjÍ¢ubjn)�”}”(hhh]”js)�”}”(hŒ``void`` no arguments ”h]”(jy)�”}”(hŒ``void``”h]”j)�”}”(hjò¢h]”hŒvoid”…”�”}”(hjô¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjð¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œƒ/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:28: ./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&]”uh1jrh³j£h´Khjé¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjÍ¢ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj-£h]”hŒ Description”…”�”}”(hj/£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj+£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œƒ/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:28: ./drivers/platform/surface/aggregator/core.c”h´KhjÍ¢ubhþ)�”}”(hXZReturns a reference to the SSAM controller of the system or ``NULL`` if there is none, it hasn't been set up yet, or it has already been unregistered. This function automatically increments the reference count of the controller, thus the calling party must ensure that ssam_controller_put() is called when it doesn't need the controller any more.”h]”(hŒªh²hh³jSªh´K1ubah}”(h]”j9ªah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jSªh´K1hj;ªh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ"Unique identifier for SSAM device.”h]”hŒ"Unique identifier for SSAM device.”…”�”}”(hjˆªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K-hj…ªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj;ªh²hh³jSªh´K1ubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHj ªjIj ªjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hX%**Definition**:: struct ssam_device_uid { u8 domain; u8 category; u8 target; u8 instance; u8 function; }; **Members** ``domain`` Domain of the device. ``category`` Target category of the device. ``target`` Target ID of the device. ``instance`` Instance ID of the device. ``function`` Sub-function of the device. This field can be used to split a single SAM device into multiple virtual subdevices to separate different functionality of that device and allow one driver per such functionality.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¬ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¨ªubhŒ:”…”�”}”(hj¨ªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K1hj¤ªubj,)�”}”(hŒlstruct ssam_device_uid { u8 domain; u8 category; u8 target; u8 instance; u8 function; };”h]”hŒlstruct ssam_device_uid { u8 domain; u8 category; u8 target; u8 instance; u8 function; };”…”�”}”hjŪsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K3hj¤ªubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hjÖªh]”hŒMembers”…”�”}”(hjتh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÔªubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K;hj¤ªubjn)�”}”(hhh]”(js)�”}”(hŒ!``domain`` Domain of the device. ”h]”(jy)�”}”(hŒ ``domain``”h]”j)�”}”(hjõªh]”hŒdomain”…”�”}”(hj÷ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjóªubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K/hjïªubj•)�”}”(hhh]”hþ)�”}”(hŒDomain of the device.”h]”hŒDomain of the device.”…”�”}”(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&]”uh1jrh³j «h´K/hjìªubjs)�”}”(hŒ,``category`` Target category of the device. ”h]”(jy)�”}”(hŒ ``category``”h]”j)�”}”(hj.«h]”hŒcategory”…”�”}”(hj0«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj,«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K0hj(«ubj•)�”}”(hhh]”hþ)�”}”(hŒTarget category of the device.”h]”hŒTarget category of the device.”…”�”}”(hjG«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jC«h´K0hjD«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj(«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jC«h´K0hjìªubjs)�”}”(hŒ$``target`` Target ID of the device. ”h]”(jy)�”}”(hŒ ``target``”h]”j)�”}”(hjg«h]”hŒtarget”…”�”}”(hji«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hje«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K1hja«ubj•)�”}”(hhh]”hþ)�”}”(hŒTarget ID of the device.”h]”hŒTarget ID of the device.”…”�”}”(hj€«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j|«h´K1hj}«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hja«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j|«h´K1hjìªubjs)�”}”(hŒ(``instance`` Instance ID of the device. ”h]”(jy)�”}”(hŒ ``instance``”h]”j)�”}”(hj «h]”hŒinstance”…”�”}”(hj¢«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjž«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K2hjš«ubj•)�”}”(hhh]”hþ)�”}”(hŒInstance ID of the device.”h]”hŒInstance ID of the device.”…”�”}”(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&]”uh1jrh³jµ«h´K2hjìªubjs)�”}”(hŒÝ``function`` Sub-function of the device. This field can be used to split a single SAM device into multiple virtual subdevices to separate different functionality of that device and allow one driver per such functionality.”h]”(jy)�”}”(hŒ ``function``”h]”j)�”}”(hjÙ«h]”hŒfunction”…”�”}”(hjÛ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj׫ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K5hjÓ«ubj•)�”}”(hhh]”hþ)�”}”(hŒÐSub-function of the device. This field can be used to split a single SAM device into multiple virtual subdevices to separate different functionality of that device and allow one driver per such functionality.”h]”hŒÐSub-function of the device. This field can be used to split a single SAM device into multiple virtual subdevices to separate different functionality of that device and allow one driver per such functionality.”…”�”}”(hjò«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K3hjï«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÓ«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jî«h´K5hjìªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj¤ªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»ŒSSAM_DEVICE (C macro)”Œ c.SSAM_DEVICE”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ SSAM_DEVICE”h]”jË)�”}”(hŒ SSAM_DEVICE”h]”jô)�”}”(hŒ SSAM_DEVICE”h]”jú)�”}”(hj-¬h]”hŒ SSAM_DEVICE”…”�”}”(hj7¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj3¬ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj/¬h²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KLubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj+¬h²hh³jJ¬h´KLubah}”(h]”j&¬ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jJ¬h´KLhj(¬h²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj(¬h²hh³jJ¬h´KLubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjc¬jIjc¬jJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´Nubhþ)�”}”(hŒ'``SSAM_DEVICE (d, cat, tid, iid, fun)``”h]”j)�”}”(hji¬h]”hŒ#SSAM_DEVICE (d, cat, tid, iid, fun)”…”�”}”(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/client-api:35: ./include/linux/surface_aggregator/device.h”h´KNhj)¨h²hubj )�”}”(hŒYInitialize a :c:type:`struct ssam_device_id ` with the given parameters. ”h]”hþ)�”}”(hŒXInitialize a :c:type:`struct ssam_device_id ` with the given parameters.”h]”(hŒ Initialize a ”…”�”}”(hjƒ¬h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct ssam_device_id `”h]”j)�”}”(hj�¬h]”hŒstruct ssam_device_id”…”�”}”(hj�¬h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj‹¬ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_id”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KLhjƒ¬ubhŒ with the given parameters.”…”�”}”(hjƒ¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jª¬h´KLhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³jª¬h´KLhj)¨h²hubjN)�”}”(hXÑ**Parameters** ``d`` Domain of the device. ``cat`` Target category of the device. ``tid`` Target ID of the device. ``iid`` Instance ID of the device. ``fun`` Sub-function of the device. **Description** Initializes a :c:type:`struct ssam_device_id ` with the given parameters. See :c:type:`struct ssam_device_uid ` for details regarding the parameters. The special values ``SSAM_SSH_TID_ANY``, ``SSAM_SSH_IID_ANY``, and ``SSAM_SSH_FUN_ANY`` can be used to specify that matching should ignore target ID, instance ID, and/or sub-function, respectively. This macro initializes the ``match_flags`` field based on the given parameters. **Note** The parameters **d** and **cat** must be valid :c:type:`u8` values, the parameters **tid**, **iid**, and **fun** must be either valid :c:type:`u8` values or ``SSAM_SSH_TID_ANY``, ``SSAM_SSH_IID_ANY``, or ``SSAM_SSH_FUN_ANY``, respectively. Other non-:c:type:`u8` values are not allowed.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjÁ¬h]”hŒ Parameters”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¿¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KPhj»¬ubjn)�”}”(hhh]”(js)�”}”(hŒ``d`` Domain of the device. ”h]”(jy)�”}”(hŒ``d``”h]”j)�”}”(hjà¬h]”hŒd”…”�”}”(hjâ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÞ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KNhjÚ¬ubj•)�”}”(hhh]”hþ)�”}”(hŒDomain of the device.”h]”hŒDomain of the device.”…”�”}”(hjù¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jõ¬h´KNhjö¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÚ¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jõ¬h´KNhj׬ubjs)�”}”(hŒ'``cat`` Target category of the device. ”h]”(jy)�”}”(hŒ``cat``”h]”j)�”}”(hj­h]”hŒcat”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KOhj­ubj•)�”}”(hhh]”hþ)�”}”(hŒTarget category of the device.”h]”hŒTarget category of the device.”…”�”}”(hj2­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j.­h´KOhj/­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j.­h´KOhj׬ubjs)�”}”(hŒ!``tid`` Target ID of the device. ”h]”(jy)�”}”(hŒ``tid``”h]”j)�”}”(hjR­h]”hŒtid”…”�”}”(hjT­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjP­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KPhjL­ubj•)�”}”(hhh]”hþ)�”}”(hŒTarget ID of the device.”h]”hŒTarget ID of the device.”…”�”}”(hjk­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jg­h´KPhjh­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjL­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jg­h´KPhj׬ubjs)�”}”(hŒ#``iid`` Instance ID of the device. ”h]”(jy)�”}”(hŒ``iid``”h]”j)�”}”(hj‹­h]”hŒiid”…”�”}”(hj�­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj‰­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KQhj…­ubj•)�”}”(hhh]”hþ)�”}”(hŒInstance ID of the device.”h]”hŒInstance ID of the device.”…”�”}”(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&]”uh1jrh³j ­h´KQhj׬ubjs)�”}”(hŒ$``fun`` Sub-function of the device. ”h]”(jy)�”}”(hŒ``fun``”h]”j)�”}”(hjÄ­h]”hŒfun”…”�”}”(hjÆ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KRhj¾­ubj•)�”}”(hhh]”hþ)�”}”(hŒSub-function of the device.”h]”hŒSub-function of the device.”…”�”}”(hjÝ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÙ­h´KRhjÚ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj¾­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÙ­h´KRhj׬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj»¬ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjÿ­h]”hŒ Description”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjý­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KThj»¬ubhþ)�”}”(hXÌInitializes a :c:type:`struct ssam_device_id ` with the given parameters. See :c:type:`struct ssam_device_uid ` for details regarding the parameters. The special values ``SSAM_SSH_TID_ANY``, ``SSAM_SSH_IID_ANY``, and ``SSAM_SSH_FUN_ANY`` can be used to specify that matching should ignore target ID, instance ID, and/or sub-function, respectively. This macro initializes the ``match_flags`` field based on the given parameters.”h]”(hŒInitializes a ”…”�”}”(hj®h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct ssam_device_id `”h]”j)�”}”(hj®h]”hŒstruct ssam_device_id”…”�”}”(hj!®h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj®ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_id”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KShj®ubhŒ with the given parameters. See ”…”�”}”(hj®h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct ssam_device_uid `”h]”j)�”}”(hjC®h]”hŒstruct ssam_device_uid”…”�”}”(hjE®h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjA®ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_uid”uh1hh³j<®h´KShj®ubhŒ: for details regarding the parameters. The special values ”…”�”}”(hj®h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_TID_ANY``”h]”hŒSSAM_SSH_TID_ANY”…”�”}”(hjd®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj®ubhŒ, ”…”�”}”(hj®h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_IID_ANY``”h]”hŒSSAM_SSH_IID_ANY”…”�”}”(hjv®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj®ubhŒ, and ”…”�”}”(hj®h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_FUN_ANY``”h]”hŒSSAM_SSH_FUN_ANY”…”�”}”(hjˆ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj®ubhŒŠ can be used to specify that matching should ignore target ID, instance ID, and/or sub-function, respectively. This macro initializes the ”…”�”}”(hj®h²hh³Nh´Nubj)�”}”(hŒ``match_flags``”h]”hŒ match_flags”…”�”}”(hjš®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj®ubhŒ% field based on the given parameters.”…”�”}”(hj®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j<®h´KShj»¬ubhþ)�”}”(hŒ**Note**”h]”jX)�”}”(hj´®h]”hŒNote”…”�”}”(hj¶®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj²®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KZhj»¬ubhþ)�”}”(hXThe parameters **d** and **cat** must be valid :c:type:`u8` values, the parameters **tid**, **iid**, and **fun** must be either valid :c:type:`u8` values or ``SSAM_SSH_TID_ANY``, ``SSAM_SSH_IID_ANY``, or ``SSAM_SSH_FUN_ANY``, respectively. Other non-:c:type:`u8` values are not allowed.”h]”(hŒThe parameters ”…”�”}”(hjÊ®h²hh³Nh´NubjX)�”}”(hŒ**d**”h]”hŒd”…”�”}”(hjÒ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÊ®ubhŒ and ”…”�”}”(hjÊ®h²hh³Nh´NubjX)�”}”(hŒ**cat**”h]”hŒcat”…”�”}”(hjä®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÊ®ubhŒ must be valid ”…”�”}”(hjÊ®h²hh³Nh´Nubh)�”}”(hŒ :c:type:`u8`”h]”j)�”}”(hjø®h]”hŒu8”…”�”}”(hjú®h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjö®ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jžj¢j¦•BŒu8”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K[hjÊ®ubhŒ values, the parameters ”…”�”}”(hjÊ®h²hh³Nh´NubjX)�”}”(hŒ**tid**”h]”hŒtid”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÊ®ubhŒ, ”…”�”}”(hjÊ®h²hh³Nh´NubjX)�”}”(hŒ**iid**”h]”hŒiid”…”�”}”(hj,¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÊ®ubhŒ, and ”…”�”}”(hjÊ®h²hh³Nh´NubjX)�”}”(hŒ**fun**”h]”hŒfun”…”�”}”(hj>¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÊ®ubhŒ must be either valid ”…”�”}”(hjÊ®h²hh³Nh´Nubh)�”}”(hŒ :c:type:`u8`”h]”j)�”}”(hjR¯h]”hŒu8”…”�”}”(hjT¯h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjP¯ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jžj¢j¦Œu8”uh1hh³j¯h´K[hjÊ®ubhŒ values or ”…”�”}”(hjÊ®h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_TID_ANY``”h]”hŒSSAM_SSH_TID_ANY”…”�”}”(hjs¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÊ®ubhŒ, ”…”�”}”(hjÊ®h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_IID_ANY``”h]”hŒSSAM_SSH_IID_ANY”…”�”}”(hj…¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÊ®ubhŒ, or ”…”�”}”(hjÊ®h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_FUN_ANY``”h]”hŒSSAM_SSH_FUN_ANY”…”�”}”(hj—¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÊ®ubhŒ, respectively. Other non-”…”�”}”(hjÊ®h²hh³Nh´Nubh)�”}”(hŒ :c:type:`u8`”h]”j)�”}”(hj«¯h]”hŒu8”…”�”}”(hj­¯h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj©¯ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jžj¢j¦Œu8”uh1hh³j¯h´K[hjÊ®ubhŒ values are not allowed.”…”�”}”(hjÊ®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¯h´K[hj»¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»ŒSSAM_VDEV (C macro)”Œ c.SSAM_VDEV”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ SSAM_VDEV”h]”jË)�”}”(hŒ SSAM_VDEV”h]”jô)�”}”(hŒ SSAM_VDEV”h]”jú)�”}”(hjì¯h]”hŒ SSAM_VDEV”…”�”}”(hjö¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjò¯ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjî¯h²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kkubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjê¯h²hh³j °h´Kkubah}”(h]”jå¯ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j °h´Kkhjç¯h²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hjç¯h²hh³j °h´Kkubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHj"°jIj"°jJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´Nubhþ)�”}”(hŒ"``SSAM_VDEV (cat, tid, iid, fun)``”h]”j)�”}”(hj(°h]”hŒSSAM_VDEV (cat, tid, iid, fun)”…”�”}”(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/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kmhj)¨h²hubj )�”}”(hŒkInitialize a :c:type:`struct ssam_device_id ` as virtual device with the given parameters. ”h]”hþ)�”}”(hŒjInitialize a :c:type:`struct ssam_device_id ` as virtual device with the given parameters.”h]”(hŒ Initialize a ”…”�”}”(hjB°h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct ssam_device_id `”h]”j)�”}”(hjL°h]”hŒstruct ssam_device_id”…”�”}”(hjN°h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjJ°ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_id”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KkhjB°ubhŒ- as virtual device with the given parameters.”…”�”}”(hjB°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ji°h´Kkhj>°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³ji°h´Kkhj)¨h²hubjN)�”}”(hX¾**Parameters** ``cat`` Target category of the device. ``tid`` Target ID of the device. ``iid`` Instance ID of the device. ``fun`` Sub-function of the device. **Description** Initializes a :c:type:`struct ssam_device_id ` with the given parameters in the virtual domain. See :c:type:`struct ssam_device_uid ` for details regarding the parameters. The special values ``SSAM_SSH_TID_ANY``, ``SSAM_SSH_IID_ANY``, and ``SSAM_SSH_FUN_ANY`` can be used to specify that matching should ignore target ID, instance ID, and/or sub-function, respectively. This macro initializes the ``match_flags`` field based on the given parameters. **Note** The parameter **cat** must be a valid :c:type:`u8` value, the parameters **tid**, **iid**, and **fun** must be either valid :c:type:`u8` values or ``SSAM_SSH_TID_ANY``, ``SSAM_SSH_IID_ANY``, or ``SSAM_SSH_FUN_ANY``, respectively. Other non-:c:type:`u8` values are not allowed.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj€°h]”hŒ Parameters”…”�”}”(hj‚°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj~°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kohjz°ubjn)�”}”(hhh]”(js)�”}”(hŒ'``cat`` Target category of the device. ”h]”(jy)�”}”(hŒ``cat``”h]”j)�”}”(hjŸ°h]”hŒcat”…”�”}”(hj¡°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj�°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kmhj™°ubj•)�”}”(hhh]”hþ)�”}”(hŒTarget category of the device.”h]”hŒTarget category of the device.”…”�”}”(hj¸°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j´°h´Kmhjµ°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj™°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j´°h´Kmhj–°ubjs)�”}”(hŒ!``tid`` Target ID of the device. ”h]”(jy)�”}”(hŒ``tid``”h]”j)�”}”(hjذh]”hŒtid”…”�”}”(hjÚ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÖ°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KnhjÒ°ubj•)�”}”(hhh]”hþ)�”}”(hŒTarget ID of the device.”h]”hŒTarget ID of the device.”…”�”}”(hjñ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jí°h´Knhjî°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÒ°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jí°h´Knhj–°ubjs)�”}”(hŒ#``iid`` Instance ID of the device. ”h]”(jy)�”}”(hŒ``iid``”h]”j)�”}”(hj±h]”hŒiid”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kohj ±ubj•)�”}”(hhh]”hþ)�”}”(hŒInstance ID of the device.”h]”hŒInstance ID of the device.”…”�”}”(hj*±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j&±h´Kohj'±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj ±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j&±h´Kohj–°ubjs)�”}”(hŒ$``fun`` Sub-function of the device. ”h]”(jy)�”}”(hŒ``fun``”h]”j)�”}”(hjJ±h]”hŒfun”…”�”}”(hjL±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjH±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KphjD±ubj•)�”}”(hhh]”hþ)�”}”(hŒSub-function of the device.”h]”hŒSub-function of the device.”…”�”}”(hjc±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j_±h´Kphj`±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjD±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j_±h´Kphj–°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjz°ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj…±h]”hŒ Description”…”�”}”(hj‡±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjƒ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Krhjz°ubhþ)�”}”(hXâInitializes a :c:type:`struct ssam_device_id ` with the given parameters in the virtual domain. See :c:type:`struct ssam_device_uid ` for details regarding the parameters. The special values ``SSAM_SSH_TID_ANY``, ``SSAM_SSH_IID_ANY``, and ``SSAM_SSH_FUN_ANY`` can be used to specify that matching should ignore target ID, instance ID, and/or sub-function, respectively. This macro initializes the ``match_flags`` field based on the given parameters.”h]”(hŒInitializes a ”…”�”}”(hj›±h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct ssam_device_id `”h]”j)�”}”(hj¥±h]”hŒstruct ssam_device_id”…”�”}”(hj§±h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj£±ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_id”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kqhj›±ubhŒ6 with the given parameters in the virtual domain. See ”…”�”}”(hj›±h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct ssam_device_uid `”h]”j)�”}”(hjɱh]”hŒstruct ssam_device_uid”…”�”}”(hj˱h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjDZubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_uid”uh1hh³j±h´Kqhj›±ubhŒ: for details regarding the parameters. The special values ”…”�”}”(hj›±h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_TID_ANY``”h]”hŒSSAM_SSH_TID_ANY”…”�”}”(hjê±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj›±ubhŒ, ”…”�”}”(hj›±h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_IID_ANY``”h]”hŒSSAM_SSH_IID_ANY”…”�”}”(hjü±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj›±ubhŒ, and ”…”�”}”(hj›±h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_FUN_ANY``”h]”hŒSSAM_SSH_FUN_ANY”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj›±ubhŒŠ can be used to specify that matching should ignore target ID, instance ID, and/or sub-function, respectively. This macro initializes the ”…”�”}”(hj›±h²hh³Nh´Nubj)�”}”(hŒ``match_flags``”h]”hŒ match_flags”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj›±ubhŒ% field based on the given parameters.”…”�”}”(hj›±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j±h´Kqhjz°ubhþ)�”}”(hŒ**Note**”h]”jX)�”}”(hj:²h]”hŒNote”…”�”}”(hj<²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj8²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kxhjz°ubhþ)�”}”(hXThe parameter **cat** must be a valid :c:type:`u8` value, the parameters **tid**, **iid**, and **fun** must be either valid :c:type:`u8` values or ``SSAM_SSH_TID_ANY``, ``SSAM_SSH_IID_ANY``, or ``SSAM_SSH_FUN_ANY``, respectively. Other non-:c:type:`u8` values are not allowed.”h]”(hŒThe parameter ”…”�”}”(hjP²h²hh³Nh´NubjX)�”}”(hŒ**cat**”h]”hŒcat”…”�”}”(hjX²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjP²ubhŒ must be a valid ”…”�”}”(hjP²h²hh³Nh´Nubh)�”}”(hŒ :c:type:`u8`”h]”j)�”}”(hjl²h]”hŒu8”…”�”}”(hjn²h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjj²ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jžj¢j¦Œu8”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KyhjP²ubhŒ value, the parameters ”…”�”}”(hjP²h²hh³Nh´NubjX)�”}”(hŒ**tid**”h]”hŒtid”…”�”}”(hj޲h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjP²ubhŒ, ”…”�”}”(hjP²h²hh³Nh´NubjX)�”}”(hŒ**iid**”h]”hŒiid”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjP²ubhŒ, and ”…”�”}”(hjP²h²hh³Nh´NubjX)�”}”(hŒ**fun**”h]”hŒfun”…”�”}”(hj²²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjP²ubhŒ must be either valid ”…”�”}”(hjP²h²hh³Nh´Nubh)�”}”(hŒ :c:type:`u8`”h]”j)�”}”(hjƲh]”hŒu8”…”�”}”(hjȲh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjIJubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jžj¢j¦Œu8”uh1hh³j‰²h´KyhjP²ubhŒ values or ”…”�”}”(hjP²h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_TID_ANY``”h]”hŒSSAM_SSH_TID_ANY”…”�”}”(hjç²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjP²ubhŒ, ”…”�”}”hjP²sbj)�”}”(hŒ``SSAM_SSH_IID_ANY``”h]”hŒSSAM_SSH_IID_ANY”…”�”}”(hjù²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjP²ubhŒ, or ”…”�”}”(hjP²h²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_FUN_ANY``”h]”hŒSSAM_SSH_FUN_ANY”…”�”}”(hj ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjP²ubhŒ, respectively. Other non-”…”�”}”(hjP²h²hh³Nh´Nubh)�”}”(hŒ :c:type:`u8`”h]”j)�”}”(hj³h]”hŒu8”…”�”}”(hj!³h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj³ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jžj¢j¦Œu8”uh1hh³j‰²h´KyhjP²ubhŒ values are not allowed.”…”�”}”(hjP²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j‰²h´Kyhjz°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»ŒSSAM_SDEV (C macro)”Œ c.SSAM_SDEV”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ SSAM_SDEV”h]”jË)�”}”(hŒ SSAM_SDEV”h]”jô)�”}”(hŒ SSAM_SDEV”h]”jú)�”}”(hj`³h]”hŒ SSAM_SDEV”…”�”}”(hjj³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjf³ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjb³h²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K‚ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj^³h²hh³j}³h´K‚ubah}”(h]”jY³ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j}³h´K‚hj[³h²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj[³h²hh³j}³h´K‚ubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHj–³jIj–³jJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´Nubhþ)�”}”(hŒ"``SSAM_SDEV (cat, tid, iid, fun)``”h]”j)�”}”(hjœ³h]”hŒSSAM_SDEV (cat, tid, iid, fun)”…”�”}”(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/client-api:35: ./include/linux/surface_aggregator/device.h”h´K„hj)¨h²hubj )�”}”(hŒpInitialize a :c:type:`struct ssam_device_id ` as physical SSH device with the given parameters. ”h]”hþ)�”}”(hŒoInitialize a :c:type:`struct ssam_device_id ` as physical SSH device with the given parameters.”h]”(hŒ Initialize a ”…”�”}”(hj¶³h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct ssam_device_id `”h]”j)�”}”(hjÀ³h]”hŒstruct ssam_device_id”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj¾³ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_id”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K‚hj¶³ubhŒ2 as physical SSH device with the given parameters.”…”�”}”(hj¶³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jݳh´K‚hj²³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³jݳh´K‚hj)¨h²hubjN)�”}”(hXº**Parameters** ``cat`` Target category of the device. ``tid`` Target ID of the device. ``iid`` Instance ID of the device. ``fun`` Sub-function of the device. **Description** Initializes a :c:type:`struct ssam_device_id ` with the given parameters in the SSH domain. See :c:type:`struct ssam_device_uid ` for details regarding the parameters. The special values ``SSAM_SSH_TID_ANY``, ``SSAM_SSH_IID_ANY``, and ``SSAM_SSH_FUN_ANY`` can be used to specify that matching should ignore target ID, instance ID, and/or sub-function, respectively. This macro initializes the ``match_flags`` field based on the given parameters. **Note** The parameter **cat** must be a valid :c:type:`u8` value, the parameters **tid**, **iid**, and **fun** must be either valid :c:type:`u8` values or ``SSAM_SSH_TID_ANY``, ``SSAM_SSH_IID_ANY``, or ``SSAM_SSH_FUN_ANY``, respectively. Other non-:c:type:`u8` values are not allowed.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjô³h]”hŒ Parameters”…”�”}”(hjö³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjò³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K†hjî³ubjn)�”}”(hhh]”(js)�”}”(hŒ'``cat`` Target category of the device. ”h]”(jy)�”}”(hŒ``cat``”h]”j)�”}”(hj´h]”hŒcat”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K„hj ´ubj•)�”}”(hhh]”hþ)�”}”(hŒTarget category of the device.”h]”hŒTarget category of the device.”…”�”}”(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&]”uh1jrh³j(´h´K„hj ´ubjs)�”}”(hŒ!``tid`` Target ID of the device. ”h]”(jy)�”}”(hŒ``tid``”h]”j)�”}”(hjL´h]”hŒtid”…”�”}”(hjN´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjJ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K…hjF´ubj•)�”}”(hhh]”hþ)�”}”(hŒTarget ID of the device.”h]”hŒTarget ID of the device.”…”�”}”(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&]”uh1jrh³ja´h´K…hj ´ubjs)�”}”(hŒ#``iid`` Instance ID of the device. ”h]”(jy)�”}”(hŒ``iid``”h]”j)�”}”(hj…´h]”hŒiid”…”�”}”(hj‡´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjƒ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K†hj´ubj•)�”}”(hhh]”hþ)�”}”(hŒInstance ID of the device.”h]”hŒInstance ID of the device.”…”�”}”(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&]”uh1jrh³jš´h´K†hj ´ubjs)�”}”(hŒ$``fun`` Sub-function of the device. ”h]”(jy)�”}”(hŒ``fun``”h]”j)�”}”(hj¾´h]”hŒfun”…”�”}”(hjÀ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¼´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K‡hj¸´ubj•)�”}”(hhh]”hþ)�”}”(hŒSub-function of the device.”h]”hŒSub-function of the device.”…”�”}”(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&]”uh1jrh³jÓ´h´K‡hj ´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjî³ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjù´h]”hŒ Description”…”�”}”(hjû´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj÷´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K‰hjî³ubhþ)�”}”(hXÞInitializes a :c:type:`struct ssam_device_id ` with the given parameters in the SSH domain. See :c:type:`struct ssam_device_uid ` for details regarding the parameters. The special values ``SSAM_SSH_TID_ANY``, ``SSAM_SSH_IID_ANY``, and ``SSAM_SSH_FUN_ANY`` can be used to specify that matching should ignore target ID, instance ID, and/or sub-function, respectively. This macro initializes the ``match_flags`` field based on the given parameters.”h]”(hŒInitializes a ”…”�”}”(hjµh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct ssam_device_id `”h]”j)�”}”(hjµh]”hŒstruct ssam_device_id”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjµubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_id”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KˆhjµubhŒ2 with the given parameters in the SSH domain. See ”…”�”}”(hjµh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct ssam_device_uid `”h]”j)�”}”(hj=µh]”hŒstruct ssam_device_uid”…”�”}”(hj?µh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj;µubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_uid”uh1hh³j6µh´KˆhjµubhŒ: for details regarding the parameters. The special values ”…”�”}”(hjµh²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_TID_ANY``”h]”hŒSSAM_SSH_TID_ANY”…”�”}”(hj^µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjµubhŒ, ”…”�”}”(hjµh²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_IID_ANY``”h]”hŒSSAM_SSH_IID_ANY”…”�”}”(hjpµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjµubhŒ, and ”…”�”}”(hjµh²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_FUN_ANY``”h]”hŒSSAM_SSH_FUN_ANY”…”�”}”(hj‚µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjµubhŒŠ can be used to specify that matching should ignore target ID, instance ID, and/or sub-function, respectively. This macro initializes the ”…”�”}”(hjµh²hh³Nh´Nubj)�”}”(hŒ``match_flags``”h]”hŒ match_flags”…”�”}”(hj”µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjµubhŒ% field based on the given parameters.”…”�”}”(hjµh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j6µh´Kˆhjî³ubhþ)�”}”(hŒ**Note**”h]”jX)�”}”(hj®µh]”hŒNote”…”�”}”(hj°µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¬µubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K�hjî³ubhþ)�”}”(hXThe parameter **cat** must be a valid :c:type:`u8` value, the parameters **tid**, **iid**, and **fun** must be either valid :c:type:`u8` values or ``SSAM_SSH_TID_ANY``, ``SSAM_SSH_IID_ANY``, or ``SSAM_SSH_FUN_ANY``, respectively. Other non-:c:type:`u8` values are not allowed.”h]”(hŒThe parameter ”…”�”}”(hjĵh²hh³Nh´NubjX)�”}”(hŒ**cat**”h]”hŒcat”…”�”}”(hj̵h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjĵubhŒ must be a valid ”…”�”}”(hjĵh²hh³Nh´Nubh)�”}”(hŒ :c:type:`u8`”h]”j)�”}”(hjàµh]”hŒu8”…”�”}”(hjâµh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjÞµubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jžj¢j¦Œu8”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K�hjĵubhŒ value, the parameters ”…”�”}”(hjĵh²hh³Nh´NubjX)�”}”(hŒ**tid**”h]”hŒtid”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjĵubhŒ, ”…”�”}”(hjĵh²hh³Nh´NubjX)�”}”(hŒ**iid**”h]”hŒiid”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjĵubhŒ, and ”…”�”}”(hjĵh²hh³Nh´NubjX)�”}”(hŒ**fun**”h]”hŒfun”…”�”}”(hj&¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjĵubhŒ must be either valid ”…”�”}”(hjĵh²hh³Nh´Nubh)�”}”(hŒ :c:type:`u8`”h]”j)�”}”(hj:¶h]”hŒu8”…”�”}”(hj<¶h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj8¶ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jžj¢j¦Œu8”uh1hh³jýµh´K�hjĵubhŒ values or ”…”�”}”(hjĵh²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_TID_ANY``”h]”hŒSSAM_SSH_TID_ANY”…”�”}”(hj[¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjĵubhŒ, ”…”�”}”hjĵsbj)�”}”(hŒ``SSAM_SSH_IID_ANY``”h]”hŒSSAM_SSH_IID_ANY”…”�”}”(hjm¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjĵubhŒ, or ”…”�”}”(hjĵh²hh³Nh´Nubj)�”}”(hŒ``SSAM_SSH_FUN_ANY``”h]”hŒSSAM_SSH_FUN_ANY”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjĵubhŒ, respectively. Other non-”…”�”}”(hjĵh²hh³Nh´Nubh)�”}”(hŒ :c:type:`u8`”h]”j)�”}”(hj“¶h]”hŒu8”…”�”}”(hj•¶h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj‘¶ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jžj¢j¦Œu8”uh1hh³jýµh´K�hjĵubhŒ values are not allowed.”…”�”}”(hjĵh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jýµh´K�hjî³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_device (C struct)”Œ c.ssam_device”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ ssam_device”h]”jË)�”}”(hŒstruct ssam_device”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(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/client-api:35: ./include/linux/surface_aggregator/device.h”h´K˜ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè¶h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÖ¶h²hh³jç¶h´K˜ubjô)�”}”(hŒ ssam_device”h]”jú)�”}”(hjÔ¶h]”hŒ ssam_device”…”�”}”(hjú¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjö¶ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÖ¶h²hh³jç¶h´K˜ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjÒ¶h²hh³jç¶h´K˜ubah}”(h]”jͶah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jç¶h´K˜hj϶h²hubj&)�”}”(hhh]”hþ)�”}”(hŒSSAM client device.”h]”hŒSSAM client device.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K£hj·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj϶h²hh³jç¶h´K˜ubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHj4·jIj4·jJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hXž**Definition**:: struct ssam_device { struct device dev; struct ssam_controller *ctrl; struct ssam_device_uid uid; unsigned long flags; }; **Members** ``dev`` Driver model representation of the device. ``ctrl`` SSAM controller managing this device. ``uid`` UID identifying the device. ``flags`` Device state flags, see :c:type:`enum ssam_device_flags `.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj@·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj<·ubhŒ:”…”�”}”(hj<·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K§hj8·ubj,)�”}”(hŒ‰struct ssam_device { struct device dev; struct ssam_controller *ctrl; struct ssam_device_uid uid; unsigned long flags; };”h]”hŒ‰struct ssam_device { struct device dev; struct ssam_controller *ctrl; struct ssam_device_uid uid; unsigned long flags; };”…”�”}”hjY·sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K©hj8·ubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hjj·h]”hŒMembers”…”�”}”(hjl·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjh·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K°hj8·ubjn)�”}”(hhh]”(js)�”}”(hŒ3``dev`` Driver model representation of the device. ”h]”(jy)�”}”(hŒ``dev``”h]”j)�”}”(hj‰·h]”hŒdev”…”�”}”(hj‹·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj‡·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K¥hjƒ·ubj•)�”}”(hhh]”hþ)�”}”(hŒ*Driver model representation of the device.”h]”hŒ*Driver model representation of the device.”…”�”}”(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&]”uh1jrh³jž·h´K¥hj€·ubjs)�”}”(hŒ/``ctrl`` SSAM controller managing this device. ”h]”(jy)�”}”(hŒ``ctrl``”h]”j)�”}”(hj·h]”hŒctrl”…”�”}”(hjÄ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÀ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K¦hj¼·ubj•)�”}”(hhh]”hþ)�”}”(hŒ%SSAM controller managing this device.”h]”hŒ%SSAM controller managing this device.”…”�”}”(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&]”uh1jrh³j×·h´K¦hj€·ubjs)�”}”(hŒ$``uid`` UID identifying the device. ”h]”(jy)�”}”(hŒ``uid``”h]”j)�”}”(hjû·h]”hŒuid”…”�”}”(hjý·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjù·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K§hjõ·ubj•)�”}”(hhh]”hþ)�”}”(hŒUID identifying the device.”h]”hŒUID identifying the device.”…”�”}”(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&]”uh1jrh³j¸h´K§hj€·ubjs)�”}”(hŒW``flags`` Device state flags, see :c:type:`enum ssam_device_flags `.”h]”(jy)�”}”(hŒ ``flags``”h]”j)�”}”(hj4¸h]”hŒflags”…”�”}”(hj6¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj2¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K§hj.¸ubj•)�”}”(hhh]”hþ)�”}”(hŒMDevice state flags, see :c:type:`enum ssam_device_flags `.”h]”(hŒDevice state flags, see ”…”�”}”(hjM¸h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`enum ssam_device_flags `”h]”j)�”}”(hjW¸h]”hŒenum ssam_device_flags”…”�”}”(hjY¸h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjU¸ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_flags”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K¨hjM¸ubhŒ.”…”�”}”(hjM¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jt¸h´K¨hjJ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj.¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jI¸h´K§hj€·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj8·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_device_driver (C struct)”Œc.ssam_device_driver”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒssam_device_driver”h]”jË)�”}”(hŒstruct ssam_device_driver”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(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/client-api:35: ./include/linux/surface_aggregator/device.h”h´K®ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿¸h²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj­¸h²hh³j¾¸h´K®ubjô)�”}”(hŒssam_device_driver”h]”jú)�”}”(hj«¸h]”hŒssam_device_driver”…”�”}”(hjѸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj͸ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj­¸h²hh³j¾¸h´K®ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj©¸h²hh³j¾¸h´K®ubah}”(h]”j¤¸ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j¾¸h´K®hj¦¸h²hubj&)�”}”(hhh]”hþ)�”}”(hŒSSAM client device driver.”h]”hŒSSAM client device driver.”…”�”}”(hjó¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K³hjð¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¦¸h²hh³j¾¸h´K®ubeh}”(h]”h ]”(jBŒstruct”eh"]”h$]”h&]”jGjBjHj ¹jIj ¹jJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hX÷**Definition**:: struct ssam_device_driver { struct device_driver driver; const struct ssam_device_id *match_table; int (*probe)(struct ssam_device *sdev); void (*remove)(struct ssam_device *sdev); }; **Members** ``driver`` Base driver model structure. ``match_table`` Match table specifying which devices the driver should bind to. ``probe`` Called when the driver is being bound to a device. ``remove`` Called when the driver is being unbound from the device.”h]”(hþ)�”}”(hŒ**Definition**::”h]”(jX)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¹ubhŒ:”…”�”}”(hj¹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K·hj¹ubj,)�”}”(hŒÇstruct ssam_device_driver { struct device_driver driver; const struct ssam_device_id *match_table; int (*probe)(struct ssam_device *sdev); void (*remove)(struct ssam_device *sdev); };”h]”hŒÇstruct ssam_device_driver { struct device_driver driver; const struct ssam_device_id *match_table; int (*probe)(struct ssam_device *sdev); void (*remove)(struct ssam_device *sdev); };”…”�”}”hj0¹sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j+h³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K¹hj¹ubhþ)�”}”(hŒ **Members**”h]”jX)�”}”(hjA¹h]”hŒMembers”…”�”}”(hjC¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj?¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KÀhj¹ubjn)�”}”(hhh]”(js)�”}”(hŒ(``driver`` Base driver model structure. ”h]”(jy)�”}”(hŒ ``driver``”h]”j)�”}”(hj`¹h]”hŒdriver”…”�”}”(hjb¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj^¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KµhjZ¹ubj•)�”}”(hhh]”hþ)�”}”(hŒBase driver model structure.”h]”hŒBase driver model structure.”…”�”}”(hjy¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ju¹h´Kµhjv¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjZ¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ju¹h´KµhjW¹ubjs)�”}”(hŒP``match_table`` Match table specifying which devices the driver should bind to. ”h]”(jy)�”}”(hŒ``match_table``”h]”j)�”}”(hj™¹h]”hŒ match_table”…”�”}”(hj›¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj—¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K¶hj“¹ubj•)�”}”(hhh]”hþ)�”}”(hŒ?Match table specifying which devices the driver should bind to.”h]”hŒ?Match table specifying which devices the driver should bind to.”…”�”}”(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&]”uh1jrh³j®¹h´K¶hjW¹ubjs)�”}”(hŒ=``probe`` Called when the driver is being bound to a device. ”h]”(jy)�”}”(hŒ ``probe``”h]”j)�”}”(hjÒ¹h]”hŒprobe”…”�”}”(hjÔ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjйubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K·hj̹ubj•)�”}”(hhh]”hþ)�”}”(hŒ2Called when the driver is being bound to a device.”h]”hŒ2Called when the driver is being bound to a device.”…”�”}”(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&]”uh1jrh³jç¹h´K·hjW¹ubjs)�”}”(hŒC``remove`` Called when the driver is being unbound from the device.”h]”(jy)�”}”(hŒ ``remove``”h]”j)�”}”(hj ºh]”hŒremove”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K·hjºubj•)�”}”(hhh]”hþ)�”}”(hŒ8Called when the driver is being unbound from the device.”h]”hŒ8Called when the driver is being unbound from the device.”…”�”}”(hj$ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´K¸hj!ºubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j ºh´K·hjW¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œis_ssam_device (C function)”Œc.is_ssam_device”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ&bool is_ssam_device (struct device *d)”h]”jË)�”}”(hŒ%bool is_ssam_device(struct device *d)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjeºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjaºh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KÇubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsºh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjaºh²hh³jrºh´KÇubjô)�”}”(hŒis_ssam_device”h]”jú)�”}”(hŒis_ssam_device”h]”hŒis_ssam_device”…”�”}”(hj…ºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj�ºubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjaºh²hh³jrºh´KÇubjv )�”}”(hŒ(struct device *d)”h]”j| )�”}”(hŒstruct device *d”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj¡ºh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj�ºubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®ºh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj�ºubh)�”}”(hhh]”jú)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¿ºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj¼ºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jÁºŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j‡ºsbŒc.is_ssam_device”†”asbuh1hhj�ºubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjߺh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj�ºubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjíºh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj�ºubjú)�”}”(hŒd”h]”hŒd”…”�”}”(hjúºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj�ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj™ºubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjaºh²hh³jrºh´KÇubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj]ºh²hh³jrºh´KÇubah}”(h]”jXºah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jrºh´KÇhjZºh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ2Check if the given device is a SSAM client device.”h]”hŒ2Check if the given device is a SSAM client device.”…”�”}”(hj$»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KÇhj!»h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjZºh²hh³jrºh´KÇubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj<»jIj<»jJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hX**Parameters** ``struct device *d`` The device to test the type of. **Return** Returns ``true`` if the specified device is of type :c:type:`struct ssam_device `, i.e. the device type points to ``ssam_device_type``, and ``false`` otherwise.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjF»h]”hŒ Parameters”…”�”}”(hjH»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjD»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KËhj@»ubjn)�”}”(hhh]”js)�”}”(hŒ5``struct device *d`` The device to test the type of. ”h]”(jy)�”}”(hŒ``struct device *d``”h]”j)�”}”(hje»h]”hŒstruct device *d”…”�”}”(hjg»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjc»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KÈhj_»ubj•)�”}”(hhh]”hþ)�”}”(hŒThe device to test the type of.”h]”hŒThe device to test the type of.”…”�”}”(hj~»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jz»h´KÈhj{»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj_»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jz»h´KÈhj\»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj@»ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj »h]”hŒReturn”…”�”}”(hj¢»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjž»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KÊhj@»ubhþ)�”}”(hŒ­Returns ``true`` if the specified device is of type :c:type:`struct ssam_device `, i.e. the device type points to ``ssam_device_type``, and ``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&]”uh1j~hj¶»ubhŒ$ if the specified device is of type ”…”�”}”(hj¶»h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct ssam_device `”h]”j)�”}”(hjÒ»h]”hŒstruct ssam_device”…”�”}”(hjÔ»h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjлubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssam_device”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KÊhj¶»ubhŒ!, i.e. the device type points to ”…”�”}”(hj¶»h²hh³Nh´Nubj)�”}”(hŒ``ssam_device_type``”h]”hŒssam_device_type”…”�”}”(hjô»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¶»ubhŒ, and ”…”�”}”(hj¶»h²hh³Nh´Nubj)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¶»ubhŒ otherwise.”…”�”}”(hj¶»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jï»h´KÊhj@»ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œto_ssam_device (C macro)”Œc.to_ssam_device”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒto_ssam_device”h]”jË)�”}”(hŒto_ssam_device”h]”jô)�”}”(hŒto_ssam_device”h]”jú)�”}”(hj8¼h]”hŒto_ssam_device”…”�”}”(hjB¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj>¼ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj:¼h²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KÝubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj6¼h²hh³jU¼h´KÝubah}”(h]”j1¼ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jU¼h´KÝhj3¼h²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj3¼h²hh³jU¼h´KÝubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjn¼jIjn¼jJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´Nubhþ)�”}”(hŒ``to_ssam_device (d)``”h]”j)�”}”(hjt¼h]”hŒto_ssam_device (d)”…”�”}”(hjv¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjr¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kßhj)¨h²hubj )�”}”(hŒ0Casts the given device to a SSAM client device. ”h]”hþ)�”}”(hŒ/Casts the given device to a SSAM client device.”h]”hŒ/Casts the given device to a SSAM client device.”…”�”}”(hj޼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KÝhjмubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³jœ¼h´KÝhj)¨h²hubjN)�”}”(hX¨**Parameters** ``d`` The device to cast. **Description** Casts the given :c:type:`struct device ` to a :c:type:`struct ssam_device `. The caller has to ensure that the given device is actually enclosed in a :c:type:`struct ssam_device `, e.g. by calling is_ssam_device(). **Return** Returns a pointer to the :c:type:`struct ssam_device ` wrapping the given device **d**.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj©¼h]”hŒ Parameters”…”�”}”(hj«¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj§¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Káhj£¼ubjn)�”}”(hhh]”js)�”}”(hŒ``d`` The device to cast. ”h]”(jy)�”}”(hŒ``d``”h]”j)�”}”(hjȼh]”hŒd”…”�”}”(hjʼh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjƼubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KÞhj¼ubj•)�”}”(hhh]”hþ)�”}”(hŒThe device to cast.”h]”hŒThe device to cast.”…”�”}”(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&]”uh1jrh³jݼh´KÞhj¿¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj£¼ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj½h]”hŒ Description”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kàhj£¼ubhþ)�”}”(hŒøCasts the given :c:type:`struct device ` to a :c:type:`struct ssam_device `. The caller has to ensure that the given device is actually enclosed in a :c:type:`struct ssam_device `, e.g. by calling is_ssam_device().”h]”(hŒCasts the given ”…”�”}”(hj½h²hh³Nh´Nubh)�”}”(hŒ :c:type:`struct device `”h]”j)�”}”(hj#½h]”hŒ struct device”…”�”}”(hj%½h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj!½ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œdevice”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kßhj½ubhŒ to a ”…”�”}”(hj½h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct ssam_device `”h]”j)�”}”(hjG½h]”hŒstruct ssam_device”…”�”}”(hjI½h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjE½ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssam_device”uh1hh³j@½h´Kßhj½ubhŒK. The caller has to ensure that the given device is actually enclosed in a ”…”�”}”(hj½h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct ssam_device `”h]”j)�”}”(hjj½h]”hŒstruct ssam_device”…”�”}”(hjl½h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjh½ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssam_device”uh1hh³j@½h´Kßhj½ubhŒ#, e.g. by calling is_ssam_device().”…”�”}”(hj½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j@½h´Kßhj£¼ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj“½h]”hŒReturn”…”�”}”(hj•½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj‘½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kãhj£¼ubhþ)�”}”(hŒdReturns a pointer to the :c:type:`struct ssam_device ` wrapping the given device **d**.”h]”(hŒReturns a pointer to the ”…”�”}”(hj©½h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct ssam_device `”h]”j)�”}”(hj³½h]”hŒstruct ssam_device”…”�”}”(hjµ½h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj±½ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ ssam_device”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kähj©½ubhŒ wrapping the given device ”…”�”}”(hj©½h²hh³Nh´NubjX)�”}”(hŒ**d**”h]”hŒd”…”�”}”(hjÕ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj©½ubhŒ.”…”�”}”(hj©½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jнh´Kähj£¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œto_ssam_device_driver (C macro)”Œc.to_ssam_device_driver”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒto_ssam_device_driver”h]”jË)�”}”(hŒto_ssam_device_driver”h]”jô)�”}”(hŒto_ssam_device_driver”h]”jú)�”}”(hj¾h]”hŒto_ssam_device_driver”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj ¾ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj ¾h²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kêubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj¾h²hh³j$¾h´Kêubah}”(h]”j¾ah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j$¾h´Kêhj¾h²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¾h²hh³j$¾h´Kêubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHj=¾jIj=¾jJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´Nubhþ)�”}”(hŒ``to_ssam_device_driver (d)``”h]”j)�”}”(hjC¾h]”hŒto_ssam_device_driver (d)”…”�”}”(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/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kìhj)¨h²hubj )�”}”(hŒ>Casts the given device driver to a SSAM client device driver. ”h]”hþ)�”}”(hŒ=Casts the given device driver to a SSAM client device driver.”h]”hŒ=Casts the given device driver to a SSAM client device driver.”…”�”}”(hj]¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´KêhjY¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³jk¾h´Kêhj)¨h²hubjN)�”}”(hXÇ**Parameters** ``d`` The driver to cast. **Description** Casts the given :c:type:`struct device_driver ` to a :c:type:`struct ssam_device_driver `. The caller has to ensure that the given driver is actually enclosed in a :c:type:`struct ssam_device_driver `. **Return** Returns the pointer to the :c:type:`struct ssam_device_driver ` wrapping the given device driver **d**.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjx¾h]”hŒ Parameters”…”�”}”(hjz¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjv¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kîhjr¾ubjn)�”}”(hhh]”js)�”}”(hŒ``d`` The driver to cast. ”h]”(jy)�”}”(hŒ``d``”h]”j)�”}”(hj—¾h]”hŒd”…”�”}”(hj™¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj•¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kìhj‘¾ubj•)�”}”(hhh]”hþ)�”}”(hŒThe driver to cast.”h]”hŒThe driver to cast.”…”�”}”(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&]”uh1jrh³j¬¾h´Kìhj޾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjr¾ubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjÒ¾h]”hŒ Description”…”�”}”(hjÔ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjоubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kîhjr¾ubhþ)�”}”(hXCasts the given :c:type:`struct device_driver ` to a :c:type:`struct ssam_device_driver `. The caller has to ensure that the given driver is actually enclosed in a :c:type:`struct ssam_device_driver `.”h]”(hŒCasts the given ”…”�”}”(hjè¾h²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct device_driver `”h]”j)�”}”(hjò¾h]”hŒstruct device_driver”…”�”}”(hjô¾h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjð¾ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œ device_driver”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kíhjè¾ubhŒ to a ”…”�”}”(hjè¾h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct ssam_device_driver `”h]”j)�”}”(hj¿h]”hŒstruct ssam_device_driver”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj¿ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_driver”uh1hh³j¿h´Kíhjè¾ubhŒK. The caller has to ensure that the given driver is actually enclosed in a ”…”�”}”(hjè¾h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct ssam_device_driver `”h]”j)�”}”(hj9¿h]”hŒstruct ssam_device_driver”…”�”}”(hj;¿h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj7¿ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_driver”uh1hh³j¿h´Kíhjè¾ubhŒ.”…”�”}”(hjè¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¿h´Kíhjr¾ubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjb¿h]”hŒReturn”…”�”}”(hjd¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj`¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kñhjr¾ubhþ)�”}”(hŒ{Returns the pointer to the :c:type:`struct ssam_device_driver ` wrapping the given device driver **d**.”h]”(hŒReturns the pointer to the ”…”�”}”(hjx¿h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct ssam_device_driver `”h]”j)�”}”(hj‚¿h]”hŒstruct ssam_device_driver”…”�”}”(hj„¿h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj€¿ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_device_driver”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Kòhjx¿ubhŒ" wrapping the given device driver ”…”�”}”(hjx¿h²hh³Nh´NubjX)�”}”(hŒ**d**”h]”hŒd”…”�”}”(hj¤¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjx¿ubhŒ.”…”�”}”(hjx¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jŸ¿h´Kòhjr¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ)ssam_device_mark_hot_removed (C function)”Œc.ssam_device_mark_hot_removed”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒÂh]”hŒ Parameters”…”�”}”(hj@Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj<Âubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhj8Âubjn)�”}”(hhh]”js)�”}”(hŒ2``struct ssam_device *sdev`` The device to check. ”h]”(jy)�”}”(hŒ``struct ssam_device *sdev``”h]”j)�”}”(hj]Âh]”hŒstruct ssam_device *sdev”…”�”}”(hj_Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj[Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MhjWÂubj•)�”}”(hhh]”hþ)�”}”(hŒThe device to check.”h]”hŒThe device to check.”…”�”}”(hjvÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jrÂh´MhjsÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjWÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jrÂh´MhjTÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj8Âubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj˜Âh]”hŒ Description”…”�”}”(hjšÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj–Âubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhj8Âubhþ)�”}”(hŒoChecks if the given device has been marked as hot-removed. See ssam_device_mark_hot_removed() for more details.”h]”hŒoChecks if the given device has been marked as hot-removed. See ssam_device_mark_hot_removed() for more details.”…”�”}”(hj®Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhj8Âubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj¿Âh]”hŒReturn”…”�”}”(hjÁÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj½Âubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhj8Âubhþ)�”}”(hŒ>Returns ``true`` if the device has been marked as hot-removed.”h]”(hŒReturns ”…”�”}”(hjÕÂh²hh³Nh´Nubj)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjÝÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÕÂubhŒ. if the device has been marked as hot-removed.”…”�”}”(hjÕÂh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhj8Âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_device_get (C function)”Œc.ssam_device_get”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ?struct ssam_device * ssam_device_get (struct ssam_device *sdev)”h]”jË)�”}”(hŒ=struct ssam_device *ssam_device_get(struct ssam_device *sdev)”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(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/client-api:35: ./include/linux/surface_aggregator/device.h”h´M"ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Ãh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÃh²hh³j#Ãh´M"ubh)�”}”(hhh]”jú)�”}”(hŒ ssam_device”h]”hŒ ssam_device”…”�”}”(hj5Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj2Ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j7ÃŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œssam_device_get”sbŒc.ssam_device_get”†”asbuh1hhjÃh²hh³j#Ãh´M"ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVÃh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÃh²hh³j#Ãh´M"ubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjdÃh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjÃh²hh³j#Ãh´M"ubjô)�”}”(hŒssam_device_get”h]”jú)�”}”(hjSÃh]”hŒssam_device_get”…”�”}”(hjuÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjqÃubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÃh²hh³j#Ãh´M"ubjv )�”}”(hŒ(struct ssam_device *sdev)”h]”j| )�”}”(hŒstruct ssam_device *sdev”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj�Ãh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjŒÃubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ãh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjŒÃubh)�”}”(hhh]”jú)�”}”(hŒ ssam_device”h]”hŒ ssam_device”…”�”}”(hj®Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj«Ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j°ÃŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jQÃŒc.ssam_device_get”†”asbuh1hhjŒÃubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌÃh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjŒÃubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjÚÃh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjŒÃubjú)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjçÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjŒÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjˆÃubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjÃh²hh³j#Ãh´M"ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjÃh²hh³j#Ãh´M"ubah}”(h]”j Ãah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j#Ãh´M"hj Ãh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ0Increment reference count of SSAM client device.”h]”hŒ0Increment reference count of SSAM client device.”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M"hjÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj Ãh²hh³j#Ãh´M"ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj)ÄjIj)ÄjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hX‡**Parameters** ``struct ssam_device *sdev`` The device to increment the reference count of. **Description** Increments the reference count of the given SSAM client device by incrementing the reference count of the enclosed :c:type:`struct device ` via get_device(). See ssam_device_put() for the counter-part of this function. **Return** Returns the device provided as input.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj3Äh]”hŒ Parameters”…”�”}”(hj5Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj1Äubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M&hj-Äubjn)�”}”(hhh]”js)�”}”(hŒM``struct ssam_device *sdev`` The device to increment the reference count of. ”h]”(jy)�”}”(hŒ``struct ssam_device *sdev``”h]”j)�”}”(hjRÄh]”hŒstruct ssam_device *sdev”…”�”}”(hjTÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjPÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M#hjLÄubj•)�”}”(hhh]”hþ)�”}”(hŒ/The device to increment the reference count of.”h]”hŒ/The device to increment the reference count of.”…”�”}”(hjkÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jgÄh´M#hjhÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjLÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jgÄh´M#hjIÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj-Äubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj�Äh]”hŒ Description”…”�”}”(hj�Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj‹Äubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M%hj-Äubhþ)�”}”(hŒ¥Increments the reference count of the given SSAM client device by incrementing the reference count of the enclosed :c:type:`struct device ` via get_device().”h]”(hŒsIncrements the reference count of the given SSAM client device by incrementing the reference count of the enclosed ”…”�”}”(hj£Äh²hh³Nh´Nubh)�”}”(hŒ :c:type:`struct device `”h]”j)�”}”(hj­Äh]”hŒ struct device”…”�”}”(hj¯Äh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj«Äubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œdevice”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M$hj£ÄubhŒ via get_device().”…”�”}”(hj£Äh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÊÄh´M$hj-Äubhþ)�”}”(hŒ` via put_device(). See ssam_device_get() for the counter-part of this function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj Æh]”hŒ Parameters”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj Æubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M7hjÆubjn)�”}”(hhh]”js)�”}”(hŒM``struct ssam_device *sdev`` The device to decrement the reference count of. ”h]”(jy)�”}”(hŒ``struct ssam_device *sdev``”h]”j)�”}”(hj,Æh]”hŒstruct ssam_device *sdev”…”�”}”(hj.Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj*Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M4hj&Æubj•)�”}”(hhh]”hþ)�”}”(hŒ/The device to decrement the reference count of.”h]”hŒ/The device to decrement the reference count of.”…”�”}”(hjEÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jAÆh´M4hjBÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj&Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jAÆh´M4hj#Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjÆubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjgÆh]”hŒ Description”…”�”}”(hjiÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjeÆubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M6hjÆubhþ)�”}”(hŒ¥Decrements the reference count of the given SSAM client device by decrementing the reference count of the enclosed :c:type:`struct device ` via put_device().”h]”(hŒsDecrements the reference count of the given SSAM client device by decrementing the reference count of the enclosed ”…”�”}”(hj}Æh²hh³Nh´Nubh)�”}”(hŒ :c:type:`struct device `”h]”j)�”}”(hj‡Æh]”hŒ struct device”…”�”}”(hj‰Æh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj…Æubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œdevice”uh1hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M5hj}ÆubhŒ via put_device().”…”�”}”(hj}Æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¤Æh´M5hjÆubhþ)�”}”(hŒÊh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M\ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj:Êh²hh³jYÊh´M\ubah}”(h]”j5Êah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jYÊh´M\hj7Êh²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj7Êh²hh³jYÊh´M\ubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjrÊjIjrÊjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´Nubhþ)�”}”(hŒ%``ssam_device_driver_register (drv)``”h]”j)�”}”(hjxÊh]”hŒ!ssam_device_driver_register (drv)”…”�”}”(hjzÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjvÊubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M^hj)¨h²hubj )�”}”(hŒ&Register a SSAM client device driver. ”h]”hþ)�”}”(hŒ%Register a SSAM client device driver.”h]”hŒ%Register a SSAM client device driver.”…”�”}”(hj’Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M\hjŽÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j Êh´M\hj)¨h²hubjN)�”}”(hŒ1**Parameters** ``drv`` The driver to register.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj­Êh]”hŒ Parameters”…”�”}”(hj¯Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj«Êubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M`hj§Êubjn)�”}”(hhh]”js)�”}”(hŒ``drv`` The driver to register.”h]”(jy)�”}”(hŒ``drv``”h]”j)�”}”(hjÌÊh]”hŒdrv”…”�”}”(hjÎÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÊÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MbhjÆÊubj•)�”}”(hhh]”hþ)�”}”(hŒThe driver to register.”h]”hŒThe driver to register.”…”�”}”(hjåÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M]hjâÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjÆÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jáÊh´MbhjÃÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj§Êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ#module_ssam_device_driver (C macro)”Œc.module_ssam_device_driver”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒmodule_ssam_device_driver”h]”jË)�”}”(hŒmodule_ssam_device_driver”h]”jô)�”}”(hŒmodule_ssam_device_driver”h]”jú)�”}”(hj Ëh]”hŒmodule_ssam_device_driver”…”�”}”(hj*Ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj&Ëubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj"Ëh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mcubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjËh²hh³j=Ëh´Mcubah}”(h]”jËah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j=Ëh´MchjËh²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hjËh²hh³j=Ëh´Mcubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjVËjIjVËjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´Nubhþ)�”}”(hŒ#``module_ssam_device_driver (drv)``”h]”j)�”}”(hj\Ëh]”hŒmodule_ssam_device_driver (drv)”…”�”}”(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/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mehj)¨h²hubj )�”}”(hŒ2Helper macro for SSAM device driver registration. ”h]”hþ)�”}”(hŒ1Helper macro for SSAM device driver registration.”h]”hŒ1Helper macro for SSAM device driver registration.”…”�”}”(hjvËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MchjrËubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j„Ëh´Mchj)¨h²hubjN)�”}”(hŒú**Parameters** ``drv`` The driver managed by this module. **Description** Helper macro to register a SSAM device driver via module_init() and module_exit(). This macro may only be used once per module and replaces the aforementioned definitions.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj‘Ëh]”hŒ Parameters”…”�”}”(hj“Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj�Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mghj‹Ëubjn)�”}”(hhh]”js)�”}”(hŒ+``drv`` The driver managed by this module. ”h]”(jy)�”}”(hŒ``drv``”h]”j)�”}”(hj°Ëh]”hŒdrv”…”�”}”(hj²Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj®Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MehjªËubj•)�”}”(hhh]”hþ)�”}”(hŒ"The driver managed by this module.”h]”hŒ"The driver managed by this module.”…”�”}”(hjÉËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÅËh´MehjÆËubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjªËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÅËh´Mehj§Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj‹Ëubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjëËh]”hŒ Description”…”�”}”(hjíËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjéËubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mghj‹Ëubhþ)�”}”(hŒ«Helper macro to register a SSAM device driver via module_init() and module_exit(). This macro may only be used once per module and replaces the aforementioned definitions.”h]”hŒ«Helper macro to register a SSAM device driver via module_init() and module_exit(). This macro may only be used once per module and replaces the aforementioned definitions.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mfhj‹Ëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ"ssam_register_clients (C function)”Œc.ssam_register_clients”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒLint ssam_register_clients (struct device *dev, struct ssam_controller *ctrl)”h]”jË)�”}”(hŒKint ssam_register_clients(struct device *dev, struct ssam_controller *ctrl)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj0Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj,Ìh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M…ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?Ìh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj,Ìh²hh³j>Ìh´M…ubjô)�”}”(hŒssam_register_clients”h]”jú)�”}”(hŒssam_register_clients”h]”hŒssam_register_clients”…”�”}”(hjQÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjMÌubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj,Ìh²hh³j>Ìh´M…ubjv )�”}”(hŒ2(struct device *dev, struct ssam_controller *ctrl)”h]”(j| )�”}”(hŒstruct device *dev”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjmÌh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjiÌubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzÌh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjiÌubh)�”}”(hhh]”jú)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj‹Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjˆÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j�ÌŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jSÌsbŒc.ssam_register_clients”†”asbuh1hhjiÌubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Ìh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjiÌubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj¹Ìh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjiÌubjú)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÆÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjiÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjeÌubj| )�”}”(hŒstruct ssam_controller *ctrl”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjßÌh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjÛÌubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìÌh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÛÌubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjýÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjúÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jÿÌŒmodname”NŒ classname”Njžj¡)�”}”j¤]”j§ÌŒc.ssam_register_clients”†”asbuh1hhjÛÌubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÛÌubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj)Íh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjÛÌubjú)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj6Íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÛÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjeÌubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj,Ìh²hh³j>Ìh´M…ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj(Ìh²hh³j>Ìh´M…ubah}”(h]”j#Ìah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j>Ìh´M…hj%Ìh²hubj&)�”}”(hhh]”hþ)�”}”(hŒBRegister all client devices defined under the given parent device.”h]”hŒBRegister all client devices defined under the given parent device.”…”�”}”(hj`Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M…hj]Íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj%Ìh²hh³j>Ìh´M…ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjxÍjIjxÍjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hXA**Parameters** ``struct device *dev`` The parent device under which clients should be registered. ``struct ssam_controller *ctrl`` The controller with which client should be registered. **Description** Register all clients that have via firmware nodes been defined as children of the given (parent) device. The respective child firmware nodes will be associated with the correspondingly created child devices. The given controller will be used to instantiate the new devices. See ssam_device_add() for details. **Return** Returns zero on success, nonzero on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj‚Íh]”hŒ Parameters”…”�”}”(hj„Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj€Íubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M‰hj|Íubjn)�”}”(hhh]”(js)�”}”(hŒS``struct device *dev`` The parent device under which clients should be registered. ”h]”(jy)�”}”(hŒ``struct device *dev``”h]”j)�”}”(hj¡Íh]”hŒstruct device *dev”…”�”}”(hj£Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjŸÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M‡hj›Íubj•)�”}”(hhh]”hþ)�”}”(hŒ;The parent device under which clients should be registered.”h]”hŒ;The parent device under which clients should be registered.”…”�”}”(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&]”uh1jrh³j¶Íh´M‡hj˜Íubjs)�”}”(hŒX``struct ssam_controller *ctrl`` The controller with which client should be registered. ”h]”(jy)�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjÚÍh]”hŒstruct ssam_controller *ctrl”…”�”}”(hjÜÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjØÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MˆhjÔÍubj•)�”}”(hhh]”hþ)�”}”(hŒ6The controller with which client should be registered.”h]”hŒ6The controller with which client should be registered.”…”�”}”(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&]”uh1jrh³jïÍh´Mˆhj˜Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj|Íubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjÎh]”hŒ Description”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MŠhj|Íubhþ)�”}”(hŒÏRegister all clients that have via firmware nodes been defined as children of the given (parent) device. The respective child firmware nodes will be associated with the correspondingly created child devices.”h]”hŒÏRegister all clients that have via firmware nodes been defined as children of the given (parent) device. The respective child firmware nodes will be associated with the correspondingly created child devices.”…”�”}”(hj+Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M‰hj|Íubhþ)�”}”(hŒdThe given controller will be used to instantiate the new devices. See ssam_device_add() for details.”h]”hŒdThe given controller will be used to instantiate the new devices. See ssam_device_add() for details.”…”�”}”(hj:Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M�hj|Íubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjKÎh]”hŒReturn”…”�”}”(hjMÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjIÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M�hj|Íubhþ)�”}”(hŒ,Returns zero on success, nonzero on failure.”h]”hŒ,Returns zero on success, nonzero on failure.”…”�”}”(hjaÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M‘hj|Íubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ)ssam_device_register_clients (C function)”Œc.ssam_device_register_clients”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ;int ssam_device_register_clients (struct ssam_device *sdev)”h]”jË)�”}”(hŒ:int ssam_device_register_clients(struct ssam_device *sdev)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj�Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŒÎh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M™ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸÎh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjŒÎh²hh³jžÎh´M™ubjô)�”}”(hŒssam_device_register_clients”h]”jú)�”}”(hŒssam_device_register_clients”h]”hŒssam_device_register_clients”…”�”}”(hj±Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj­Îubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjŒÎh²hh³jžÎh´M™ubjv )�”}”(hŒ(struct ssam_device *sdev)”h]”j| )�”}”(hŒstruct ssam_device *sdev”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjÍÎh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjÉÎubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚÎh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÉÎubh)�”}”(hhh]”jú)�”}”(hŒ ssam_device”h]”hŒ ssam_device”…”�”}”(hjëÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjèÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jíÎŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j³ÎsbŒc.ssam_device_register_clients”†”asbuh1hhjÉÎubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ïh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÉÎubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjÉÎubjú)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj&Ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÉÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjÅÎubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjŒÎh²hh³jžÎh´M™ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjˆÎh²hh³jžÎh´M™ubah}”(h]”jƒÎah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jžÎh´M™hj…Îh²hubj&)�”}”(hhh]”hþ)�”}”(hŒGRegister all client devices defined under the given SSAM parent device.”h]”hŒGRegister all client devices defined under the given SSAM parent device.”…”�”}”(hjPÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M™hjMÏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj…Îh²hh³jžÎh´M™ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjhÏjIjhÏjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hX**Parameters** ``struct ssam_device *sdev`` The parent device under which clients should be registered. **Description** Register all clients that have via firmware nodes been defined as children of the given (parent) device. The respective child firmware nodes will be associated with the correspondingly created child devices. The controller used by the parent device will be used to instantiate the new devices. See ssam_device_add() for details. **Return** Returns zero on success, nonzero on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjrÏh]”hŒ Parameters”…”�”}”(hjtÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjpÏubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M�hjlÏubjn)�”}”(hhh]”js)�”}”(hŒY``struct ssam_device *sdev`` The parent device under which clients should be registered. ”h]”(jy)�”}”(hŒ``struct ssam_device *sdev``”h]”j)�”}”(hj‘Ïh]”hŒstruct ssam_device *sdev”…”�”}”(hj“Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj�Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M›hj‹Ïubj•)�”}”(hhh]”hþ)�”}”(hŒ;The parent device under which clients should be registered.”h]”hŒ;The parent device under which clients should be registered.”…”�”}”(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&]”uh1jrh³j¦Ïh´M›hjˆÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjlÏubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjÌÏh]”hŒ Description”…”�”}”(hjÎÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÊÏubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M�hjlÏubhþ)�”}”(hŒÏRegister all clients that have via firmware nodes been defined as children of the given (parent) device. The respective child firmware nodes will be associated with the correspondingly created child devices.”h]”hŒÏRegister all clients that have via firmware nodes been defined as children of the given (parent) device. The respective child firmware nodes will be associated with the correspondingly created child devices.”…”�”}”(hjâÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MœhjlÏubhþ)�”}”(hŒxThe controller used by the parent device will be used to instantiate the new devices. See ssam_device_add() for details.”h]”hŒxThe controller used by the parent device will be used to instantiate the new devices. See ssam_device_add() for details.”…”�”}”(hjñÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M hjlÏubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjÐh]”hŒReturn”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M£hjlÏubhþ)�”}”(hŒ,Returns zero on success, nonzero on failure.”h]”hŒ,Returns zero on success, nonzero on failure.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M¤hjlÏubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ'SSAM_DEFINE_SYNC_REQUEST_CL_N (C macro)”Œc.SSAM_DEFINE_SYNC_REQUEST_CL_N”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_CL_N”h]”jË)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_CL_N”h]”jô)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_CL_N”h]”jú)�”}”(hjAÐh]”hŒSSAM_DEFINE_SYNC_REQUEST_CL_N”…”�”}”(hjKÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjGÐubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjCÐh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M¯ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj?Ðh²hh³j^Ðh´M¯ubah}”(h]”j:Ðah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j^Ðh´M¯hj<Ðh²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj<Ðh²hh³j^Ðh´M¯ubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjwÐjIjwÐjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´Nubhþ)�”}”(hŒ1``SSAM_DEFINE_SYNC_REQUEST_CL_N (name, spec...)``”h]”j)�”}”(hj}Ðh]”hŒ-SSAM_DEFINE_SYNC_REQUEST_CL_N (name, spec...)”…”�”}”(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/client-api:35: ./include/linux/surface_aggregator/device.h”h´M±hj)¨h²hubj )�”}”(hŒ^Define synchronous client-device SAM request function with neither argument nor return value. ”h]”hþ)�”}”(hŒ]Define synchronous client-device SAM request function with neither argument nor return value.”h]”hŒ]Define synchronous client-device SAM request function with neither argument nor return value.”…”�”}”(hj—Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M¯hj“Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¥Ðh´M¯hj)¨h²hubjN)�”}”(hXt**Parameters** ``name`` Name of the generated function. ``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. **Description** Defines a function executing the synchronous SAM request specified by **spec**, with the request having neither argument nor return value. Device specifying parameters are not hard-coded, but instead are provided via the client device, specifically its UID, supplied when calling this function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack. The generated function is defined as ``static int name(struct ssam_device *sdev)``, returning the status of the request, which is zero on success and negative on failure. The ``sdev`` parameter specifies both the target device of the request and by association the controller via which the request is sent. Refer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj²Ðh]”hŒ Parameters”…”�”}”(hj´Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj°Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M³hj¬Ðubjn)�”}”(hhh]”(js)�”}”(hŒ)``name`` Name of the generated function. ”h]”(jy)�”}”(hŒ``name``”h]”j)�”}”(hjÑÐh]”hŒname”…”�”}”(hjÓÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÏÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M±hjËÐubj•)�”}”(hhh]”hþ)�”}”(hŒName of the generated function.”h]”hŒName of the generated function.”…”�”}”(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&]”uh1jrh³jæÐh´M±hjÈÐubjs)�”}”(hŒo``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. ”h]”(jy)�”}”(hŒ ``spec...``”h]”j)�”}”(hj Ñh]”hŒspec...”…”�”}”(hj Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M²hjÑubj•)�”}”(hhh]”hþ)�”}”(hŒbSpecification (:c:type:`struct ssam_request_spec_md `) defining the request.”h]”(hŒSpecification (”…”�”}”(hj#Ñh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`struct ssam_request_spec_md `”h]”j)�”}”(hj-Ñh]”hŒstruct ssam_request_spec_md”…”�”}”(hj/Ñh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj+Ñubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_spec_md”uh1hh³jÑh´M²hj#ÑubhŒ) defining the request.”…”�”}”(hj#Ñh²hh³Nh´Nubeh}”(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&]”uh1jrh³jÑh´M²hjÈÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj¬Ðubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjhÑh]”hŒ Description”…”�”}”(hjjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjfÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M´hj¬Ðubhþ)�”}”(hXDefines a function executing the synchronous SAM request specified by **spec**, with the request having neither argument nor return value. Device specifying parameters are not hard-coded, but instead are provided via the client device, specifically its UID, supplied when calling this function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”h]”(hŒFDefines a function executing the synchronous SAM request specified by ”…”�”}”(hj~Ñh²hh³Nh´NubjX)�”}”(hŒ**spec**”h]”hŒspec”…”�”}”(hj†Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj~ÑubhXÎ, with the request having neither argument nor return value. Device specifying parameters are not hard-coded, but instead are provided via the client device, specifically its UID, supplied when calling this function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”…”�”}”(hj~Ñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M³hj¬Ðubhþ)�”}”(hX2The generated function is defined as ``static int name(struct ssam_device *sdev)``, returning the status of the request, which is zero on success and negative on failure. The ``sdev`` parameter specifies both the target device of the request and by association the controller via which the request is sent.”h]”(hŒ%The generated function is defined as ”…”�”}”(hjŸÑh²hh³Nh´Nubj)�”}”(hŒ-``static int name(struct ssam_device *sdev)``”h]”hŒ)static int name(struct ssam_device *sdev)”…”�”}”(hj§Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjŸÑubhŒ], returning the status of the request, which is zero on success and negative on failure. The ”…”�”}”(hjŸÑh²hh³Nh´Nubj)�”}”(hŒ``sdev``”h]”hŒsdev”…”�”}”(hj¹Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjŸÑubhŒ{ parameter specifies both the target device of the request and by association the controller via which the request is sent.”…”�”}”(hjŸÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M¼hj¬Ðubhþ)�”}”(hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”…”�”}”(hjÒÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MÂhj¬Ðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ'SSAM_DEFINE_SYNC_REQUEST_CL_W (C macro)”Œc.SSAM_DEFINE_SYNC_REQUEST_CL_W”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_CL_W”h]”jË)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_CL_W”h]”jô)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_CL_W”h]”jú)�”}”(hjûÑh]”hŒSSAM_DEFINE_SYNC_REQUEST_CL_W”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÒubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjýÑh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MÏubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjùÑh²hh³jÒh´MÏubah}”(h]”jôÑah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jÒh´MÏhjöÑh²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hjöÑh²hh³jÒh´MÏubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHj1ÒjIj1ÒjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´Nubhþ)�”}”(hŒ8``SSAM_DEFINE_SYNC_REQUEST_CL_W (name, atype, spec...)``”h]”j)�”}”(hj7Òh]”hŒ4SSAM_DEFINE_SYNC_REQUEST_CL_W (name, atype, spec...)”…”�”}”(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/client-api:35: ./include/linux/surface_aggregator/device.h”h´MÑhj)¨h²hubj )�”}”(hŒEDefine synchronous client-device SAM request function with argument. ”h]”hþ)�”}”(hŒDDefine synchronous client-device SAM request function with argument.”h]”hŒDDefine synchronous client-device SAM request function with argument.”…”�”}”(hjQÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MÏhjMÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j_Òh´MÏhj)¨h²hubjN)�”}”(hX**Parameters** ``name`` Name of the generated function. ``atype`` Type of the request's argument. ``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. **Description** Defines a function executing the synchronous SAM request specified by **spec**, with the request taking an argument of type **atype** and having no return value. Device specifying parameters are not hard-coded, but instead are provided via the client device, specifically its UID, supplied when calling this function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack. The generated function is defined as ``static int name(struct ssam_device *sdev, const atype *arg)``, returning the status of the request, which is zero on success and negative on failure. The ``sdev`` parameter specifies both the target device of the request and by association the controller via which the request is sent. The request's argument is specified via the ``arg`` pointer. Refer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjlÒh]”hŒ Parameters”…”�”}”(hjnÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MÓhjfÒubjn)�”}”(hhh]”(js)�”}”(hŒ)``name`` Name of the generated function. ”h]”(jy)�”}”(hŒ``name``”h]”j)�”}”(hj‹Òh]”hŒname”…”�”}”(hj�Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj‰Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MÑhj…Òubj•)�”}”(hhh]”hþ)�”}”(hŒName of the generated function.”h]”hŒName of the generated function.”…”�”}”(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&]”uh1jrh³j Òh´MÑhj‚Òubjs)�”}”(hŒ*``atype`` Type of the request's argument. ”h]”(jy)�”}”(hŒ ``atype``”h]”j)�”}”(hjÄÒh]”hŒatype”…”�”}”(hjÆÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÂÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MÒhj¾Òubj•)�”}”(hhh]”hþ)�”}”(hŒType of the request's argument.”h]”hŒ!Type of the request’s argument.”…”�”}”(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&]”uh1jrh³jÙÒh´MÒhj‚Òubjs)�”}”(hŒo``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. ”h]”(jy)�”}”(hŒ ``spec...``”h]”j)�”}”(hjýÒh]”hŒspec...”…”�”}”(hjÿÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjûÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MÓhj÷Òubj•)�”}”(hhh]”hþ)�”}”(hŒbSpecification (:c:type:`struct ssam_request_spec_md `) defining the request.”h]”(hŒSpecification (”…”�”}”(hjÓh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`struct ssam_request_spec_md `”h]”j)�”}”(hj Óh]”hŒstruct ssam_request_spec_md”…”�”}”(hj"Óh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hjÓubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_spec_md”uh1hh³jÓh´MÓhjÓubhŒ) defining the request.”…”�”}”(hjÓh²hh³Nh´Nubeh}”(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&]”uh1jrh³jÓh´MÓhj‚Òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjfÒubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj[Óh]”hŒ Description”…”�”}”(hj]Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjYÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MÕhjfÒubhþ)�”}”(hX3Defines a function executing the synchronous SAM request specified by **spec**, with the request taking an argument of type **atype** and having no return value. Device specifying parameters are not hard-coded, but instead are provided via the client device, specifically its UID, supplied when calling this function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”h]”(hŒFDefines a function executing the synchronous SAM request specified by ”…”�”}”(hjqÓh²hh³Nh´NubjX)�”}”(hŒ**spec**”h]”hŒspec”…”�”}”(hjyÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjqÓubhŒ., with the request taking an argument of type ”…”�”}”(hjqÓh²hh³Nh´NubjX)�”}”(hŒ **atype**”h]”hŒatype”…”�”}”(hj‹Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjqÓubhX® and having no return value. Device specifying parameters are not hard-coded, but instead are provided via the client device, specifically its UID, supplied when calling this function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”…”�”}”(hjqÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MÔhjfÒubhþ)�”}”(hX�The generated function is defined as ``static int name(struct ssam_device *sdev, const atype *arg)``, returning the status of the request, which is zero on success and negative on failure. The ``sdev`` parameter specifies both the target device of the request and by association the controller via which the request is sent. The request's argument is specified via the ``arg`` pointer.”h]”(hŒ%The generated function is defined as ”…”�”•}”(hj¤Óh²hh³Nh´Nubj)�”}”(hŒ?``static int name(struct ssam_device *sdev, const atype *arg)``”h]”hŒ;static int name(struct ssam_device *sdev, const atype *arg)”…”�”}”(hj¬Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¤ÓubhŒ], returning the status of the request, which is zero on success and negative on failure. The ”…”�”}”(hj¤Óh²hh³Nh´Nubj)�”}”(hŒ``sdev``”h]”hŒsdev”…”�”}”(hj¾Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¤ÓubhŒª parameter specifies both the target device of the request and by association the controller via which the request is sent. The request’s argument is specified via the ”…”�”}”(hj¤Óh²hh³Nh´Nubj)�”}”(hŒ``arg``”h]”hŒarg”…”�”}”(hjÐÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¤ÓubhŒ pointer.”…”�”}”(hj¤Óh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MÝhjfÒubhþ)�”}”(hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”…”�”}”(hjéÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MähjfÒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ'SSAM_DEFINE_SYNC_REQUEST_CL_R (C macro)”Œc.SSAM_DEFINE_SYNC_REQUEST_CL_R”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_CL_R”h]”jË)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_CL_R”h]”jô)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_CL_R”h]”jú)�”}”(hjÔh]”hŒSSAM_DEFINE_SYNC_REQUEST_CL_R”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÔubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjÔh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mñubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjÔh²hh³j/Ôh´Mñubah}”(h]”j Ôah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j/Ôh´Mñhj Ôh²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj Ôh²hh³j/Ôh´Mñubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHjHÔjIjHÔjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´Nubhþ)�”}”(hŒ8``SSAM_DEFINE_SYNC_REQUEST_CL_R (name, rtype, spec...)``”h]”j)�”}”(hjNÔh]”hŒ4SSAM_DEFINE_SYNC_REQUEST_CL_R (name, rtype, spec...)”…”�”}”(hjPÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjLÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Móhj)¨h²hubj )�”}”(hŒIDefine synchronous client-device SAM request function with return value. ”h]”hþ)�”}”(hŒHDefine synchronous client-device SAM request function with return value.”h]”hŒHDefine synchronous client-device SAM request function with return value.”…”�”}”(hjhÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MñhjdÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³jvÔh´Mñhj)¨h²hubjN)�”}”(hX **Parameters** ``name`` Name of the generated function. ``rtype`` Type of the request's return value. ``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. **Description** Defines a function executing the synchronous SAM request specified by **spec**, with the request taking no argument but having a return value of type **rtype**. Device specifying parameters are not hard-coded, but instead are provided via the client device, specifically its UID, supplied when calling this function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack. The generated function is defined as ``static int name(struct ssam_device *sdev, rtype *ret)``, returning the status of the request, which is zero on success and negative on failure. The ``sdev`` parameter specifies both the target device of the request and by association the controller via which the request is sent. The request's return value is written to the memory pointed to by the ``ret`` parameter. Refer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjƒÔh]”hŒ Parameters”…”�”}”(hj…Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj�Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mõhj}Ôubjn)�”}”(hhh]”(js)�”}”(hŒ)``name`` Name of the generated function. ”h]”(jy)�”}”(hŒ``name``”h]”j)�”}”(hj¢Ôh]”hŒname”…”�”}”(hj¤Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MóhjœÔubj•)�”}”(hhh]”hþ)�”}”(hŒName of the generated function.”h]”hŒName of the generated function.”…”�”}”(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&]”uh1jrh³j·Ôh´Móhj™Ôubjs)�”}”(hŒ.``rtype`` Type of the request's return value. ”h]”(jy)�”}”(hŒ ``rtype``”h]”j)�”}”(hjÛÔh]”hŒrtype”…”�”}”(hjÝÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÙÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MôhjÕÔubj•)�”}”(hhh]”hþ)�”}”(hŒ#Type of the request's return value.”h]”hŒ%Type of the request’s return value.”…”�”}”(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&]”uh1jrh³jðÔh´Môhj™Ôubjs)�”}”(hŒo``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. ”h]”(jy)�”}”(hŒ ``spec...``”h]”j)�”}”(hjÕh]”hŒspec...”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MõhjÕubj•)�”}”(hhh]”hþ)�”}”(hŒbSpecification (:c:type:`struct ssam_request_spec_md `) defining the request.”h]”(hŒSpecification (”…”�”}”(hj-Õh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`struct ssam_request_spec_md `”h]”j)�”}”(hj7Õh]”hŒstruct ssam_request_spec_md”…”�”}”(hj9Õh²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj5Õubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_spec_md”uh1hh³j)Õh´Mõhj-ÕubhŒ) defining the request.”…”�”}”(hj-Õh²hh³Nh´Nubeh}”(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&]”uh1jrh³j)Õh´Mõhj™Ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj}Ôubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjrÕh]”hŒ Description”…”�”}”(hjtÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjpÕubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M÷hj}Ôubhþ)�”}”(hX2Defines a function executing the synchronous SAM request specified by **spec**, with the request taking no argument but having a return value of type **rtype**. Device specifying parameters are not hard-coded, but instead are provided via the client device, specifically its UID, supplied when calling this function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”h]”(hŒFDefines a function executing the synchronous SAM request specified by ”…”�”}”(hjˆÕh²hh³Nh´NubjX)�”}”(hŒ**spec**”h]”hŒspec”…”�”}”(hj�Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjˆÕubhŒH, with the request taking no argument but having a return value of type ”…”�”}”(hjˆÕh²hh³Nh´NubjX)�”}”(hŒ **rtype**”h]”hŒrtype”…”�”}”(hj¢Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjˆÕubhX“. Device specifying parameters are not hard-coded, but instead are provided via the client device, specifically its UID, supplied when calling this function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”…”�”}”(hjˆÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Möhj}Ôubhþ)�”}”(hX—The generated function is defined as ``static int name(struct ssam_device *sdev, rtype *ret)``, returning the status of the request, which is zero on success and negative on failure. The ``sdev`` parameter specifies both the target device of the request and by association the controller via which the request is sent. The request's return value is written to the memory pointed to by the ``ret`` parameter.”h]”(hŒ%The generated function is defined as ”…”�”}”(hj»Õh²hh³Nh´Nubj)�”}”(hŒ9``static int name(struct ssam_device *sdev, rtype *ret)``”h]”hŒ5static int name(struct ssam_device *sdev, rtype *ret)”…”�”}”(hjÃÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj»ÕubhŒ], returning the status of the request, which is zero on success and negative on failure. The ”…”�”}”(hj»Õh²hh³Nh´Nubj)�”}”(hŒ``sdev``”h]”hŒsdev”…”�”}”(hjÕÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj»ÕubhŒÄ parameter specifies both the target device of the request and by association the controller via which the request is sent. The request’s return value is written to the memory pointed to by the ”…”�”}”(hj»Õh²hh³Nh´Nubj)�”}”(hŒ``ret``”h]”hŒret”…”�”}”(hjçÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj»ÕubhŒ parameter.”…”�”}”(hj»Õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mÿhj}Ôubhþ)�”}”(hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhj}Ôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ(SSAM_DEFINE_SYNC_REQUEST_CL_WR (C macro)”Œ c.SSAM_DEFINE_SYNC_REQUEST_CL_WR”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_CL_WR”h]”jË)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_CL_WR”h]”jô)�”}”(hŒSSAM_DEFINE_SYNC_REQUEST_CL_WR”h]”jú)�”}”(hj)Öh]”hŒSSAM_DEFINE_SYNC_REQUEST_CL_WR”…”�”}”(hj3Öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj/Öubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj+Öh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj'Öh²hh³jFÖh´Mubah}”(h]”j"Öah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jFÖh´Mhj$Öh²hubj&)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j%hj$Öh²hh³jFÖh´Mubeh}”(h]”h ]”(jBŒmacro”eh"]”h$]”h&]”jGjBjHj_ÖjIj_ÖjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´Nubhþ)�”}”(hŒ@``SSAM_DEFINE_SYNC_REQUEST_CL_WR (name, atype, rtype, spec...)``”h]”j)�”}”(hjeÖh]”hŒ`) defining the request. **Description** Defines a function executing the synchronous SAM request specified by **spec**, with the request taking an argument of type **atype** and having a return value of type **rtype**. Device specifying parameters are not hard-coded, but instead are provided via the client device, specifically its UID, supplied when calling this function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack. The generated function is defined as ``static int name(struct ssam_device *sdev, const atype *arg, rtype *ret)``, returning the status of the request, which is zero on success and negative on failure. The ``sdev`` parameter specifies both the target device of the request and by association the controller via which the request is sent. The request's argument is specified via the ``arg`` pointer. The request's return value is written to the memory pointed to by the ``ret`` parameter. Refer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjšÖh]”hŒ Parameters”…”�”}”(hjœÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj˜Öubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhj”Öubjn)�”}”(hhh]”(js)�”}”(hŒ)``name`` Name of the generated function. ”h]”(jy)�”}”(hŒ``name``”h]”j)�”}”(hj¹Öh]”hŒname”…”�”}”(hj»Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj·Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhj³Öubj•)�”}”(hhh]”hþ)�”}”(hŒName of the generated function.”h]”hŒName of the generated function.”…”�”}”(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&]”uh1jrh³jÎÖh´Mhj°Öubjs)�”}”(hŒ*``atype`` Type of the request's argument. ”h]”(jy)�”}”(hŒ ``atype``”h]”j)�”}”(hjòÖh]”hŒatype”…”�”}”(hjôÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjðÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MhjìÖubj•)�”}”(hhh]”hþ)�”}”(hŒType of the request's argument.”h]”hŒ!Type of the request’s argument.”…”�”}”(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&]”uh1jrh³j×h´Mhj°Öubjs)�”}”(hŒ.``rtype`` Type of the request's return value. ”h]”(jy)�”}”(hŒ ``rtype``”h]”j)�”}”(hj+×h]”hŒrtype”…”�”}”(hj-×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj)×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhj%×ubj•)�”}”(hhh]”hþ)�”}”(hŒ#Type of the request's return value.”h]”hŒ%Type of the request’s return value.”…”�”}”(hjD×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j@×h´MhjA×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj%×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j@×h´Mhj°Öubjs)�”}”(hŒo``spec...`` Specification (:c:type:`struct ssam_request_spec_md `) defining the request. ”h]”(jy)�”}”(hŒ ``spec...``”h]”j)�”}”(hjd×h]”hŒspec...”…”�”}”(hjf×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjb×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhj^×ubj•)�”}”(hhh]”hþ)�”}”(hŒbSpecification (:c:type:`struct ssam_request_spec_md `) defining the request.”h]”(hŒSpecification (”…”�”}”(hj}×h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`struct ssam_request_spec_md `”h]”j)�”}”(hj‡×h]”hŒstruct ssam_request_spec_md”…”�”}”(hj‰×h²hh³Nh´Nubah}”(h]”h ]”(jŒjBŒc-type”eh"]”h$]”h&]”uh1j~hj…×ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜Œ refdomain”jBŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jžj¢j¦Œssam_request_spec_md”uh1hh³jy×h´Mhj}×ubhŒ) defining the request.”…”�”}”(hj}×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jy×h´Mhjz×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj^×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jy×h´Mhj°Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj”Öubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjÂ×h]”hŒ Description”…”�”}”(hjÄ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÀ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhj”Öubhþ)�”}”(hXDDefines a function executing the synchronous SAM request specified by **spec**, with the request taking an argument of type **atype** and having a return value of type **rtype**. Device specifying parameters are not hard-coded, but instead are provided via the client device, specifically its UID, supplied when calling this function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”h]”(hŒFDefines a function executing the synchronous SAM request specified by ”…”�”}”(hjØ×h²hh³Nh´NubjX)�”}”(hŒ**spec**”h]”hŒspec”…”�”}”(hjà×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjØ×ubhŒ., with the request taking an argument of type ”…”�”}”(hjØ×h²hh³Nh´NubjX)�”}”(hŒ **atype**”h]”hŒatype”…”�”}”(hjò×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjØ×ubhŒ# and having a return value of type ”…”�”}”(hjØ×h²hh³Nh´NubjX)�”}”(hŒ **rtype**”h]”hŒrtype”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjØ×ubhX“. Device specifying parameters are not hard-coded, but instead are provided via the client device, specifically its UID, supplied when calling this function. The generated function takes care of setting up the request struct, buffer allocation, as well as execution of the request itself, returning once the request has been fully completed. The required transport buffer will be allocated on the stack.”…”�”}”(hjØ×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhj”Öubhþ)�”}”(hXæThe generated function is defined as ``static int name(struct ssam_device *sdev, const atype *arg, rtype *ret)``, returning the status of the request, which is zero on success and negative on failure. The ``sdev`` parameter specifies both the target device of the request and by association the controller via which the request is sent. The request's argument is specified via the ``arg`` pointer. The request's return value is written to the memory pointed to by the ``ret`` parameter.”h]”(hŒ%The generated function is defined as ”…”�”}”(hjØh²hh³Nh´Nubj)�”}”(hŒK``static int name(struct ssam_device *sdev, const atype *arg, rtype *ret)``”h]”hŒGstatic int name(struct ssam_device *sdev, const atype *arg, rtype *ret)”…”�”}”(hj%Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjØubhŒ], returning the status of the request, which is zero on success and negative on failure. The ”…”�”}”(hjØh²hh³Nh´Nubj)�”}”(hŒ``sdev``”h]”hŒsdev”…”�”}”(hj7Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjØubhŒª parameter specifies both the target device of the request and by association the controller via which the request is sent. The request’s argument is specified via the ”…”�”}”(hjØh²hh³Nh´Nubj)�”}”(hŒ``arg``”h]”hŒarg”…”�”}”(hjIØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjØubhŒR pointer. The request’s return value is written to the memory pointed to by the ”…”�”}”(hjØh²hh³Nh´Nubj)�”}”(hŒ``ret``”h]”hŒret”…”�”}”(hj[Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjØubhŒ parameter.”…”�”}”(hjØh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M"hj”Öubhþ)�”}”(hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”h]”hŒcRefer to ssam_request_do_sync_onstack() for more details on the behavior of the generated function.”…”�”}”(hjtØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M*hj”Öubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ*ssam_device_notifier_register (C function)”Œc.ssam_device_notifier_register”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ[int ssam_device_notifier_register (struct ssam_device *sdev, struct ssam_event_notifier *n)”h]”jË)�”}”(hŒZint ssam_device_notifier_register(struct ssam_device *sdev, struct ssam_event_notifier *n)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj£Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŸØh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M:ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Øh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjŸØh²hh³j±Øh´M:ubjô)�”}”(hŒssam_device_notifier_register”h]”jú)�”}”(hŒssam_device_notifier_register”h]”hŒssam_device_notifier_register”…”�”}”(hjÄØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÀØubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjŸØh²hh³j±Øh´M:ubjv )�”}”(hŒ9(struct ssam_device *sdev, struct ssam_event_notifier *n)”h]”(j| )�”}”(hŒstruct ssam_device *sdev”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjàØh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjÜØubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíØh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÜØubh)�”}”(hhh]”jú)�”}”(hŒ ssam_device”h]”hŒ ssam_device”…”�”}”(hjþØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjûØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jÙŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jÆØsbŒc.ssam_device_notifier_register”†”asbuh1hhjÜØubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÜØubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj,Ùh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjÜØubjú)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj9Ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÜØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjØØubj| )�”}”(hŒstruct ssam_event_notifier *n”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjRÙh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjNÙubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Ùh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjNÙubh)�”}”(hhh]”jú)�”}”(hŒssam_event_notifier”h]”hŒssam_event_notifier”…”�”}”(hjpÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjmÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jrÙŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jÙŒc.ssam_device_notifier_register”†”asbuh1hhjNÙubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽÙh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjNÙubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjœÙh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjNÙubjú)�”}”(hjh]”hŒn”…”�”}”(hj©Ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjNÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjØØubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjŸØh²hh³j±Øh´M:ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj›Øh²hh³j±Øh´M:ubah}”(h]”j–Øah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j±Øh´M:hj˜Øh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ;Register an event notifier for the specified client device.”h]”hŒ;Register an event notifier for the specified client device.”…”�”}”(hjÒÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M:hjÏÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj˜Øh²hh³j±Øh´M:ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjêÙjIjêÙjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hX�**Parameters** ``struct ssam_device *sdev`` The device the notifier should be registered on. ``struct ssam_event_notifier *n`` The event notifier to register. **Description** Register an event notifier. Increment the usage counter of the associated SAM event if the notifier is not marked as an observer. If the event is not marked as an observer and is currently not enabled, it will be enabled during this call. If the notifier is marked as an observer, no attempt will be made at enabling any event and no reference count will be modified. Notifiers marked as observers do not need to be associated with one specific event, i.e. as long as no event matching is performed, only the event target category needs to be set. **Return** Returns zero on success, ``-ENOSPC`` if there have already been ``INT_MAX`` notifiers for the event ID/type associated with the notifier block registered, ``-ENOMEM`` if the corresponding event entry could not be allocated, ``-ENODEV`` if the device is marked as hot-removed. If this is the first time that a notifier block is registered for the specific associated event, returns the status of the event-enable EC-command.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjôÙh]”hŒ Parameters”…”�”}”(hjöÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjòÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M>hjîÙubjn)�”}”(hhh]”(js)�”}”(hŒN``struct ssam_device *sdev`` The device the notifier should be registered on. ”h]”(jy)�”}”(hŒ``struct ssam_device *sdev``”h]”j)�”}”(hjÚh]”hŒstruct ssam_device *sdev”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M<hj Úubj•)�”}”(hhh]”hþ)�”}”(hŒ0The device the notifier should be registered on.”h]”hŒ0The device the notifier should be registered 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&]”uh1jrh³j(Úh´M<hj Úubjs)�”}”(hŒB``struct ssam_event_notifier *n`` The event notifier to register. ”h]”(jy)�”}”(hŒ!``struct ssam_event_notifier *n``”h]”j)�”}”(hjLÚh]”hŒstruct ssam_event_notifier *n”…”�”}”(hjNÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjJÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M=hjFÚubj•)�”}”(hhh]”hþ)�”}”(hŒThe event notifier to register.”h]”hŒThe event notifier to register.”…”�”}”(hjeÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jaÚh´M=hjbÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjFÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jaÚh´M=hj Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjîÙubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj‡Úh]”hŒ Description”…”�”}”(hj‰Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj…Úubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M?hjîÙubhþ)�”}”(hXoRegister an event notifier. Increment the usage counter of the associated SAM event if the notifier is not marked as an observer. If the event is not marked as an observer and is currently not enabled, it will be enabled during this call. If the notifier is marked as an observer, no attempt will be made at enabling any event and no reference count will be modified.”h]”hXoRegister an event notifier. Increment the usage counter of the associated SAM event if the notifier is not marked as an observer. If the event is not marked as an observer and is currently not enabled, it will be enabled during this call. If the notifier is marked as an observer, no attempt will be made at enabling any event and no reference count will be modified.”…”�”}”(hj�Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M>hjîÙubhþ)�”}”(hŒ³Notifiers marked as observers do not need to be associated with one specific event, i.e. as long as no event matching is performed, only the event target category needs to be set.”h]”hŒ³Notifiers marked as observers do not need to be associated with one specific event, i.e. as long as no event matching is performed, only the event target category needs to be set.”…”�”}”(hj¬Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MDhjîÙubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj½Úh]”hŒReturn”…”�”}”(hj¿Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj»Úubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MHhjîÙubhþ)�”}”(hX§Returns zero on success, ``-ENOSPC`` if there have already been ``INT_MAX`` notifiers for the event ID/type associated with the notifier block registered, ``-ENOMEM`` if the corresponding event entry could not be allocated, ``-ENODEV`` if the device is marked as hot-removed. If this is the first time that a notifier block is registered for the specific associated event, returns the status of the event-enable EC-command.”h]”(hŒReturns zero on success, ”…”�”}”(hjÓÚh²hh³Nh´Nubj)�”}”(hŒ ``-ENOSPC``”h]”hŒ-ENOSPC”…”�”}”(hjÛÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÓÚubhŒ if there have already been ”…”�”}”(hjÓÚh²hh³Nh´Nubj)�”}”(hŒ ``INT_MAX``”h]”hŒINT_MAX”…”�”}”(hjíÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÓÚubhŒP notifiers for the event ID/type associated with the notifier block registered, ”…”�”}”(hjÓÚh²hh³Nh´Nubj)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hjÿÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÓÚubhŒ: if the corresponding event entry could not be allocated, ”…”�”}”(hjÓÚh²hh³Nh´Nubj)�”}”(hŒ ``-ENODEV``”h]”hŒ-ENODEV”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÓÚubhŒ¼ if the device is marked as hot-removed. If this is the first time that a notifier block is registered for the specific associated event, returns the status of the event-enable EC-command.”…”�”}”(hjÓÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MIhjîÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ,ssam_device_notifier_unregister (C function)”Œ!c.ssam_device_notifier_unregister”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ]int ssam_device_notifier_unregister (struct ssam_device *sdev, struct ssam_event_notifier *n)”h]”jË)�”}”(hŒ\int ssam_device_notifier_unregister(struct ssam_device *sdev, struct ssam_event_notifier *n)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjJÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjFÛh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M`ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYÛh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjFÛh²hh³jXÛh´M`ubjô)�”}”(hŒssam_device_notifier_unregister”h]”jú)�”}”(hŒssam_device_notifier_unregister”h]”hŒssam_device_notifier_unregister”…”�”}”(hjkÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjgÛubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjFÛh²hh³jXÛh´M`ubjv )�”}”(hŒ9(struct ssam_device *sdev, struct ssam_event_notifier *n)”h]”(j| )�”}”(hŒstruct ssam_device *sdev”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj‡Ûh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjƒÛubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Ûh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjƒÛubh)�”}”(hhh]”jú)�”}”(hŒ ssam_device”h]”hŒ ssam_device”…”�”}”(hj¥Ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj¢Ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j§ÛŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jmÛsbŒ!c.ssam_device_notifier_unregister”†”asbuh1hhjƒÛubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅÛh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjƒÛubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjÓÛh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjƒÛubjú)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjàÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjƒÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjÛubj| )�”}”(hŒstruct ssam_event_notifier *n”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjùÛh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjõÛubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjõÛubh)�”}”(hhh]”jú)�”}”(hŒssam_event_notifier”h]”hŒssam_event_notifier”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jÜŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jÁÛŒ!c.ssam_device_notifier_unregister”†”asbuh1hhjõÛubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Üh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjõÛubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjCÜh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjõÛubjú)�”}”(hjh]”hŒn”…”�”}”(hjPÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjõÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjÛubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjFÛh²hh³jXÛh´M`ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjBÛh²hh³jXÛh´M`ubah}”(h]”j=Ûah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jXÛh´M`hj?Ûh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ=Unregister an event notifier for the specified client device.”h]”hŒ=Unregister an event notifier for the specified client device.”…”�”}”(hjyÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´M`hjvÜh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj?Ûh²hh³jXÛh´M`ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj‘ÜjIj‘ÜjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hX**Parameters** ``struct ssam_device *sdev`` The device the notifier has been registered on. ``struct ssam_event_notifier *n`` The event notifier to unregister. **Description** Unregister an event notifier. Decrement the usage counter of the associated SAM event if the notifier is not marked as an observer. If the usage counter reaches zero, the event will be disabled. In case the device has been marked as hot-removed, the event will not be disabled on the EC, as in those cases any attempt at doing so may time out. **Return** Returns zero on success, ``-ENOENT`` if the given notifier block has not been registered on the controller. If the given notifier block was the last one associated with its specific event, returns the status of the event-disable EC-command.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj›Üh]”hŒ Parameters”…”�”}”(hj�Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj™Üubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mdhj•Üubjn)�”}”(hhh]”(js)�”}”(hŒM``struct ssam_device *sdev`` The device the notifier has been registered on. ”h]”(jy)�”}”(hŒ``struct ssam_device *sdev``”h]”j)�”}”(hjºÜh]”hŒstruct ssam_device *sdev”…”�”}”(hj¼Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¸Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mbhj´Üubj•)�”}”(hhh]”hþ)�”}”(hŒ/The device the notifier has been registered on.”h]”hŒ/The device the notifier has been registered on.”…”�”}”(hjÓÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÏÜh´MbhjÐÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj´Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÏÜh´Mbhj±Üubjs)�”}”(hŒD``struct ssam_event_notifier *n`` The event notifier to unregister. ”h]”(jy)�”}”(hŒ!``struct ssam_event_notifier *n``”h]”j)�”}”(hjóÜh]”hŒstruct ssam_event_notifier *n”…”�”}”(hjõÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjñÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´MchjíÜubj•)�”}”(hhh]”hþ)�”}”(hŒ!The event notifier to unregister.”h]”hŒ!The event notifier to unregister.”…”�”}”(hj Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÝh´Mchj Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjíÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÝh´Mchj±Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj•Üubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj.Ýh]”hŒ Description”…”�”}”(hj0Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj,Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mehj•Üubhþ)�”}”(hŒÂUnregister an event notifier. Decrement the usage counter of the associated SAM event if the notifier is not marked as an observer. If the usage counter reaches zero, the event will be disabled.”h]”hŒÂUnregister an event notifier. Decrement the usage counter of the associated SAM event if the notifier is not marked as an observer. If the usage counter reaches zero, the event will be disabled.”…”�”}”(hjDÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mdhj•Üubhþ)�”}”(hŒ”In case the device has been marked as hot-removed, the event will not be disabled on the EC, as in those cases any attempt at doing so may time out.”h]”hŒ”In case the device has been marked as hot-removed, the event will not be disabled on the EC, as in those cases any attempt at doing so may time out.”…”�”}”(hjSÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mhhj•Üubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjdÝh]”hŒReturn”…”�”}”(hjfÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjbÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mkhj•Üubhþ)�”}”(hŒðReturns zero on success, ``-ENOENT`` if the given notifier block has not been registered on the controller. If the given notifier block was the last one associated with its specific event, returns the status of the event-disable EC-command.”h]”(hŒReturns zero on success, ”…”�”}”(hjzÝh²hh³Nh´Nubj)�”}”(hŒ ``-ENOENT``”h]”hŒ-ENOENT”…”�”}”(hj‚Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjzÝubhŒÌ if the given notifier block has not been registered on the controller. If the given notifier block was the last one associated with its specific event, returns the status of the event-disable EC-command.”…”�”}”(hjzÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:35: ./include/linux/surface_aggregator/device.h”h´Mlhj•Üubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_device_alloc (C function)”Œc.ssam_device_alloc”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒastruct ssam_device * ssam_device_alloc (struct ssam_controller *ctrl, struct ssam_device_uid uid)”h]”jË)�”}”(hŒ_struct ssam_device *ssam_device_alloc(struct ssam_controller *ctrl, struct ssam_device_uid uid)”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(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/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KEubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉÝh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj·Ýh²hh³jÈÝh´KEubh)�”}”(hhh]”jú)�”}”(hŒ ssam_device”h]”hŒ ssam_device”…”�”}”(hjÚÝh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj×Ýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jÜÝŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œssam_device_alloc”sbŒc.ssam_device_alloc”†”asbuh1hhj·Ýh²hh³jÈÝh´KEubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûÝh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj·Ýh²hh³jÈÝh´KEubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj Þh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj·Ýh²hh³jÈÝh´KEubjô)�”}”(hŒssam_device_alloc”h]”jú)�”}”(hjøÝh]”hŒssam_device_alloc”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÞubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj·Ýh²hh³jÈÝh´KEubjv )�”}”(hŒ:(struct ssam_controller *ctrl, struct ssam_device_uid uid)”h]”(j| )�”}”(hŒstruct ssam_controller *ctrl”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj5Þh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj1Þubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBÞh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj1Þubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjSÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjPÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jUÞŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jöÝŒc.ssam_device_alloc”†”asbuh1hhj1Þubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqÞh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj1ÞubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj1Þubjú)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjŒÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj1Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj-Þubj| )�”}”(hŒstruct ssam_device_uid uid”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj¥Þh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj¡Þubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Þh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj¡Þubh)�”}”(hhh]”jú)�”}”(hŒssam_device_uid”h]”hŒssam_device_uid”…”�”}”(hjÃÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÀÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jÅÞŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jöÝŒc.ssam_device_alloc”†”asbuh1hhj¡Þubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáÞh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj¡Þubjú)�”}”(hŒuid”h]”hŒuid”…”�”}”(hjïÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj¡Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj-Þubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj·Ýh²hh³jÈÝh´KEubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj³Ýh²hh³jÈÝh´KEubah}”(h]”j®Ýah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jÈÝh´KEhj°Ýh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ-Allocate and initialize a SSAM client device.”h]”hŒ-Allocate and initialize a SSAM client device.”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KEhjßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj°Ýh²hh³jÈÝh´KEubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj1ßjIj1ßjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hX:**Parameters** ``struct ssam_controller *ctrl`` The controller under which the device should be added. ``struct ssam_device_uid uid`` The UID of the device to be added. **Description** Allocates and initializes a new client device. The parent of the device will be set to the controller device and the name will be set based on the UID. Note that the device still has to be added via ssam_device_add(). Refer to that function for more details. **Return** Returns the newly allocated and initialized SSAM client device, or ``NULL`` if it could not be allocated.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj;ßh]”hŒ Parameters”…”�”}”(hj=ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj9ßubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KIhj5ßubjn)�”}”(hhh]”(js)�”}”(hŒX``struct ssam_controller *ctrl`` The controller under which the device should be added. ”h]”(jy)�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hjZßh]”hŒstruct ssam_controller *ctrl”…”�”}”(hj\ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjXßubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KFhjTßubj•)�”}”(hhh]”hþ)�”}”(hŒ6The controller under which the device should be added.”h]”hŒ6The controller under which the device should be added.”…”�”}”(hjsßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³joßh´KFhjpßubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjTßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³joßh´KFhjQßubjs)�”}”(hŒB``struct ssam_device_uid uid`` The UID of the device to be added. ”h]”(jy)�”}”(hŒ``struct ssam_device_uid uid``”h]”j)�”}”(hj“ßh]”hŒstruct ssam_device_uid uid”…”�”}”(hj•ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj‘ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KGhj�ßubj•)�”}”(hhh]”hþ)�”}”(hŒ"The UID of the device to be added.”h]”hŒ"The UID of the device to be added.”…”�”}”(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&]”uh1jrh³j¨ßh´KGhjQßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj5ßubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjÎßh]”hŒ Description”…”�”}”(hjÐßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÌßubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KIhj5ßubhþ)�”}”(hXAllocates and initializes a new client device. The parent of the device will be set to the controller device and the name will be set based on the UID. Note that the device still has to be added via ssam_device_add(). Refer to that function for more details.”h]”hXAllocates and initializes a new client device. The parent of the device will be set to the controller device and the name will be set based on the UID. Note that the device still has to be added via ssam_device_add(). Refer to that function for more details.”…”�”}”(hjäßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KHhj5ßubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjõßh]”hŒReturn”…”�”}”(hj÷ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjóßubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KMhj5ßubhþ)�”}”(hŒiReturns the newly allocated and initialized SSAM client device, or ``NULL`` if it could not be allocated.”h]”(hŒCReturns the newly allocated and initialized SSAM client device, or ”…”�”}”(hj àh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj àubhŒ if it could not be allocated.”…”�”}”(hj àh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KNhj5ßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_device_add (C function)”Œc.ssam_device_add”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ.int ssam_device_add (struct ssam_device *sdev)”h]”jË)�”}”(hŒ-int ssam_device_add(struct ssam_device *sdev)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjLàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjHàh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kjubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[àh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjHàh²hh³jZàh´Kjubjô)�”}”(hŒssam_device_add”h]”jú)�”}”(hŒssam_device_add”h]”hŒssam_device_add”…”�”}”(hjmàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjiàubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjHàh²hh³jZàh´Kjubjv )�”}”(hŒ(struct ssam_device *sdev)”h]”j| )�”}”(hŒstruct ssam_device *sdev”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj‰àh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj…àubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–àh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj…àubh)�”}”(hhh]”jú)�”}”(hŒ ssam_device”h]”hŒ ssam_device”…”�”}”(hj§àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj¤àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j©àŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA joàsbŒc.ssam_device_add”†”asbuh1hhj…àubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇàh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj…àubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjÕàh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj…àubjú)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjâàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj…àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj�àubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjHàh²hh³jZàh´Kjubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjDàh²hh³jZàh´Kjubah}”(h]”j?àah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jZàh´KjhjAàh²hubj&)�”}”(hhh]”hþ)�”}”(hŒAdd a SSAM client device.”h]”hŒAdd a SSAM client device.”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kjhj áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjAàh²hh³jZàh´Kjubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj$ájIj$ájJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hXß**Parameters** ``struct ssam_device *sdev`` The SSAM client device to be added. **Description** Added client devices must be guaranteed to always have a valid and active controller. Thus, this function will fail with ``-ENODEV`` if the controller of the device has not been initialized yet, has been suspended, or has been shut down. The caller of this function should ensure that the corresponding call to ssam_device_remove() is issued before the controller is shut down. If the added device is a direct child of the controller device (default), it will be automatically removed when the controller is shut down. By default, the controller device will become the parent of the newly created client device. The parent may be changed before ssam_device_add is called, but care must be taken that a) the correct suspend/resume ordering is guaranteed and b) the client device does not outlive the controller, i.e. that the device is removed before the controller is being shut down. In case these guarantees have to be manually enforced, please refer to the ssam_client_link() and ssam_client_bind() functions, which are intended to set up device-links for this purpose. **Return** Returns zero on success, a negative error code on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj.áh]”hŒ Parameters”…”�”}”(hj0áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj,áubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Knhj(áubjn)�”}”(hhh]”js)�”}”(hŒA``struct ssam_device *sdev`` The SSAM client device to be added. ”h]”(jy)�”}”(hŒ``struct ssam_device *sdev``”h]”j)�”}”(hjMáh]”hŒstruct ssam_device *sdev”…”�”}”(hjOáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjKáubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KkhjGáubj•)�”}”(hhh]”hþ)�”}”(hŒ#The SSAM client device to be added.”h]”hŒ#The SSAM client device to be added.”…”�”}”(hjfáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jbáh´Kkhjcáubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjGáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jbáh´KkhjDáubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj(áubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjˆáh]”hŒ Description”…”�”}”(hjŠáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj†áubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kmhj(áubhþ)�”}”(hŒíAdded client devices must be guaranteed to always have a valid and active controller. Thus, this function will fail with ``-ENODEV`` if the controller of the device has not been initialized yet, has been suspended, or has been shut down.”h]”(hŒyAdded client devices must be guaranteed to always have a valid and active controller. Thus, this function will fail with ”…”�”}”(hjžáh²hh³Nh´Nubj)�”}”(hŒ ``-ENODEV``”h]”hŒ-ENODEV”…”�”}”(hj¦áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjžáubhŒi if the controller of the device has not been initialized yet, has been suspended, or 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/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Klhj(áubhþ)�”}”(hXThe caller of this function should ensure that the corresponding call to ssam_device_remove() is issued before the controller is shut down. If the added device is a direct child of the controller device (default), it will be automatically removed when the controller is shut down.”h]”hXThe caller of this function should ensure that the corresponding call to ssam_device_remove() is issued before the controller is shut down. If the added device is a direct child of the controller device (default), it will be automatically removed when the controller is shut down.”…”�”}”(hj¿áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kqhj(áubhþ)�”}”(hX)By default, the controller device will become the parent of the newly created client device. The parent may be changed before ssam_device_add is called, but care must be taken that a) the correct suspend/resume ordering is guaranteed and b) the client device does not outlive the controller, i.e. that the device is removed before the controller is being shut down. In case these guarantees have to be manually enforced, please refer to the ssam_client_link() and ssam_client_bind() functions, which are intended to set up device-links for this purpose.”h]”hX)By default, the controller device will become the parent of the newly created client device. The parent may be changed before ssam_device_add is called, but care must be taken that a) the correct suspend/resume ordering is guaranteed and b) the client device does not outlive the controller, i.e. that the device is removed before the controller is being shut down. In case these guarantees have to be manually enforced, please refer to the ssam_client_link() and ssam_client_bind() functions, which are intended to set up device-links for this purpose.”…”�”}”(hjÎáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kvhj(áubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjßáh]”hŒReturn”…”�”}”(hjááh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjÝáubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Khj(á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/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´K€hj(áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œssam_device_remove (C function)”Œc.ssam_device_remove”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ2void ssam_device_remove (struct ssam_device *sdev)”h]”jË)�”}”(hŒ1void ssam_device_remove(struct ssam_device *sdev)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj$âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj âh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´K¦ubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3âh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj âh²hh³j2âh´K¦ubjô)�”}”(hŒssam_device_remove”h]”jú)�”}”(hŒssam_device_remove”h]”hŒssam_device_remove”…”�”}”(hjEâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjAâubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj âh²hh³j2âh´K¦ubjv )�”}”(hŒ(struct ssam_device *sdev)”h]”j| )�”}”(hŒstruct ssam_device *sdev”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjaâh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj]âubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnâh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj]âubh)�”}”(hhh]”jú)�”}”(hŒ ssam_device”h]”hŒ ssam_device”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj|âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j�âŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jGâsbŒc.ssam_device_remove”†”asbuh1hhj]âubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸâh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj]âubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj­âh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj]âubjú)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjºâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj]âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjYâubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj âh²hh³j2âh´K¦ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjâh²hh³j2âh´K¦ubah}”(h]”jâah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j2âh´K¦hjâh²hubj&)�”}”(hhh]”hþ)�”}”(hŒRemove a SSAM client device.”h]”hŒRemove a SSAM client device.”…”�”}”(hjäâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´K¦hjáâh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjâh²hh³j2âh´K¦ubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjüâjIjüâjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hŒ�**Parameters** ``struct ssam_device *sdev`` The device to remove. **Description** Removes and unregisters the provided SSAM client device.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjãh]”hŒ Parameters”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kªhjãubjn)�”}”(hhh]”js)�”}”(hŒ3``struct ssam_device *sdev`` The device to remove. ”h]”(jy)�”}”(hŒ``struct ssam_device *sdev``”h]”j)�”}”(hj%ãh]”hŒstruct ssam_device *sdev”…”�”}”(hj'ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj#ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´K§hjãubj•)�”}”(hhh]”hþ)�”}”(hŒThe device to remove.”h]”hŒThe device to remove.”…”�”}”(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&]”uh1jrh³j:ãh´K§hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjãubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj`ãh]”hŒ Description”…”�”}”(hjbãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj^ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´K©hjãubhþ)�”}”(hŒ8Removes and unregisters the provided SSAM client device.”h]”hŒ8Removes and unregisters the provided SSAM client device.”…”�”}”(hjvãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´K¨hjãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ!ssam_device_id_match (C function)”Œc.ssam_device_id_match”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(•ØÞhŒyconst struct ssam_device_id * ssam_device_id_match (const struct ssam_device_id *table, const struct ssam_device_uid uid)”h]”jË)�”}”(hŒwconst struct ssam_device_id *ssam_device_id_match(const struct ssam_device_id *table, const struct ssam_device_uid uid)”h]”(jÑ)�”}”(hjƒ h]”hŒconst”…”�”}”(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/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kåubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³ãh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj¡ãh²hh³j²ãh´KåubjÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjÁãh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj¡ãh²hh³j²ãh´Kåubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎãh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj¡ãh²hh³j²ãh´Kåubh)�”}”(hhh]”jú)�”}”(hŒssam_device_id”h]”hŒssam_device_id”…”�”}”(hjßãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÜãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jáãŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œssam_device_id_match”sbŒc.ssam_device_id_match”†”asbuh1hhj¡ãh²hh³j²ãh´Kåubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj¡ãh²hh³j²ãh´KåubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj¡ãh²hh³j²ãh´Kåubjô)�”}”(hŒssam_device_id_match”h]”jú)�”}”(hjýãh]”hŒssam_device_id_match”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjäubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj¡ãh²hh³j²ãh´Kåubjv )�”}”(hŒF(const struct ssam_device_id *table, const struct ssam_device_uid uid)”h]”(j| )�”}”(hŒ"const struct ssam_device_id *table”h]”(jÑ)�”}”(hjƒ h]”hŒconst”…”�”}”(hj:äh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj6äubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGäh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj6äubjÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjUäh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj6äubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbäh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj6äubh)�”}”(hhh]”jú)�”}”(hŒssam_device_id”h]”hŒssam_device_id”…”�”}”(hjsäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjpäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”juäŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jûãŒc.ssam_device_id_match”†”asbuh1hhj6äubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘äh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj6äubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjŸäh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj6äubjú)�”}”(hŒtable”h]”hŒtable”…”�”}”(hj¬äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj6äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj2äubj| )�”}”(hŒ const struct ssam_device_uid uid”h]”(jÑ)�”}”(hjƒ h]”hŒconst”…”�”}”(hjÅäh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjÁäubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒäh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÁäubjÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjàäh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjÁäubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíäh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÁäubh)�”}”(hhh]”jú)�”}”(hŒssam_device_uid”h]”hŒssam_device_uid”…”�”}”(hjþäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjûäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jåŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jûãŒc.ssam_device_id_match”†”asbuh1hhjÁäubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÁäubjú)�”}”(hŒuid”h]”hŒuid”…”�”}”(hj*åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÁäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hj2äubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj¡ãh²hh³j²ãh´Kåubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj�ãh²hh³j²ãh´Kåubah}”(h]”j˜ãah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j²ãh´Kåhjšãh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ3Find the matching ID table entry for the given UID.”h]”hŒ3Find the matching ID table entry for the given UID.”…”�”}”(hjTåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KåhjQåh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjšãh²hh³j²ãh´Kåubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjlåjIjlåjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hXI**Parameters** ``const struct ssam_device_id *table`` The table to search in. ``const struct ssam_device_uid uid`` The UID to matched against the individual table entries. **Description** Find the first match for the provided device UID in the provided ID table and return it. Returns ``NULL`` if no match could be found.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjvåh]”hŒ Parameters”…”�”}”(hjxåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjtåubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kéhjpåubjn)�”}”(hhh]”(js)�”}”(hŒ?``const struct ssam_device_id *table`` The table to search in. ”h]”(jy)�”}”(hŒ&``const struct ssam_device_id *table``”h]”j)�”}”(hj•åh]”hŒ"const struct ssam_device_id *table”…”�”}”(hj—åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj“åubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kæhj�åubj•)�”}”(hhh]”hþ)�”}”(hŒThe table to search in.”h]”hŒThe table to search in.”…”�”}”(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&]”uh1jrh³jªåh´KæhjŒåubjs)�”}”(hŒ^``const struct ssam_device_uid uid`` The UID to matched against the individual table entries. ”h]”(jy)�”}”(hŒ$``const struct ssam_device_uid uid``”h]”j)�”}”(hjÎåh]”hŒ const struct ssam_device_uid uid”…”�”}”(hjÐåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÌåubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KçhjÈåubj•)�”}”(hhh]”hþ)�”}”(hŒ8The UID to matched against the individual table entries.”h]”hŒ8The UID to matched against the individual table entries.”…”�”}”(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&]”uh1jrh³jãåh´KçhjŒåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjpåubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj æh]”hŒ Description”…”�”}”(hj æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kéhjpåubhþ)�”}”(hŒ…Find the first match for the provided device UID in the provided ID table and return it. Returns ``NULL`` if no match could be found.”h]”(hŒaFind the first match for the provided device UID in the provided ID table and return it. Returns ”…”�”}”(hjæh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj'æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjæubhŒ if no match could be found.”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kèhjpåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ"ssam_device_get_match (C function)”Œc.ssam_device_get_match”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒSconst struct ssam_device_id * ssam_device_get_match (const struct ssam_device *dev)”h]”jË)�”}”(hŒQconst struct ssam_device_id *ssam_device_get_match(const struct ssam_device *dev)”h]”(jÑ)�”}”(hjƒ h]”hŒconst”…”�”}”(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/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kúubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnæh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj\æh²hh³jmæh´KúubjÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj|æh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj\æh²hh³jmæh´Kúubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰æh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj\æh²hh³jmæh´Kúubh)�”}”(hhh]”jú)�”}”(hŒssam_device_id”h]”hŒssam_device_id”…”�”}”(hjšæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj—æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jœæŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA Œssam_device_get_match”sbŒc.ssam_device_get_match”†”asbuh1hhj\æh²hh³jmæh´Kúubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»æh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj\æh²hh³jmæh´KúubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjÉæh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj\æh²hh³jmæh´Kúubjô)�”}”(hŒssam_device_get_match”h]”jú)�”}”(hj¸æh]”hŒssam_device_get_match”…”�”}”(hjÚæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÖæubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj\æh²hh³jmæh´Kúubjv )�”}”(hŒ(const struct ssam_device *dev)”h]”j| )�”}”(hŒconst struct ssam_device *dev”h]”(jÑ)�”}”(hjƒ h]”hŒconst”…”�”}”(hjõæh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjñæubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjñæubjÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjñæubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjñæubh)�”}”(hhh]”jú)�”}”(hŒ ssam_device”h]”hŒ ssam_device”…”�”}”(hj.çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj+çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j0çŒmodname”NŒ classname”Njžj¡)�”}”j¤]”j¶æŒc.ssam_device_get_match”†”asbuh1hhjñæubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLçh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjñæubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjZçh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjñæubjú)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjgçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjñæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjíæubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj\æh²hh³jmæh´Kúubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhjXæh²hh³jmæh´Kúubah}”(h]”jSæah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jmæh´KúhjUæh²hubj&)�”}”(hhh]”hþ)�”}”(hŒOFind and return the ID matching the device in the ID table of the bound driver.”h]”hŒOFind and return the ID matching the device in the ID table of the bound driver.”…”�”}”(hj‘çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KúhjŽçh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjUæh²hh³jmæh´Kúubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj©çjIj©çjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hXª**Parameters** ``const struct ssam_device *dev`` The device for which to get the matching ID table entry. **Description** Find the fist match for the UID of the device in the ID table of the currently bound driver and return it. Returns ``NULL`` if the device does not have a driver bound to it, the driver does not have match_table (i.e. it is ``NULL``), or there is no match in the driver's match_table. This function essentially calls ssam_device_id_match() with the ID table of the bound device driver and the UID of the device. **Return** Returns the first match for the UID of the device in the device driver's match table, or ``NULL`` if no such match could be found.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj³çh]”hŒ Parameters”…”�”}”(hjµçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj±çubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kþhj­çubjn)�”}”(hhh]”js)�”}”(hŒ[``const struct ssam_device *dev`` The device for which to get the matching ID table entry. ”h]”(jy)�”}”(hŒ!``const struct ssam_device *dev``”h]”j)�”}”(hjÒçh]”hŒconst struct ssam_device *dev”…”�”}”(hjÔçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÐçubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´KühjÌçubj•)�”}”(hhh]”hþ)�”}”(hŒ8The device for which to get the matching ID table entry.”h]”hŒ8The device for which to get the matching ID table entry.”…”�”}”(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&]”uh1jrh³jççh´KühjÉçubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj­çubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj èh]”hŒ Description”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj èubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kþhj­çubhþ)�”}”(hXFind the fist match for the UID of the device in the ID table of the currently bound driver and return it. Returns ``NULL`` if the device does not have a driver bound to it, the driver does not have match_table (i.e. it is ``NULL``), or there is no match in the driver's match_table.”h]”(hŒsFind the fist match for the UID of the device in the ID table of the currently bound driver and return it. Returns ”…”�”}”(hj#èh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj+èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj#èubhŒd if the device does not have a driver bound to it, the driver does not have match_table (i.e. it is ”…”�”}”(hj#èh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj=èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj#èubhŒ6), or there is no match in the driver’s match_table.”…”�”}”(hj#èh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Kýhj­çubhþ)�”}”(hŒ~This function essentially calls ssam_device_id_match() with the ID table of the bound device driver and the UID of the device.”h]”hŒ~This function essentially calls ssam_device_id_match() with the ID table of the bound device driver and the UID of the device.”…”�”}”(hjVèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhj­çubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjgèh]”hŒReturn”…”�”}”(hjièh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjeèubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhj­çubhþ)�”}”(hŒ‚Returns the first match for the UID of the device in the device driver's match table, or ``NULL`` if no such match could be found.”h]”(hŒ[Returns the first match for the UID of the device in the device driver’s match table, or ”…”�”}”(hj}èh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj…èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj}èubhŒ! if no such match could be found.”…”�”}”(hj}èh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhj­çubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ'ssam_device_get_match_data (C function)”Œc.ssam_device_get_match_data”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒGconst void * ssam_device_get_match_data (const struct ssam_device *dev)”h]”jË)�”}”(hŒEconst void *ssam_device_get_match_data(const struct ssam_device *dev)”h]”(jÑ)�”}”(hjƒ h]”hŒconst”…”�”}”(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/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌèh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjºèh²hh³jËèh´Mubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÚèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjºèh²hh³jËèh´Mubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèèh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjºèh²hh³jËèh´MubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjöèh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjºèh²hh³jËèh´Mubjô)�”}”(hŒssam_device_get_match_data”h]”jú)�”}”(hŒssam_device_get_match_data”h]”hŒssam_device_get_match_data”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjéubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjºèh²hh³jËèh´Mubjv )�”}”(hŒ(const struct ssam_device *dev)”h]”j| )�”}”(hŒconst struct ssam_device *dev”h]”(jÑ)�”}”(hjƒ h]”hŒconst”…”�”}”(hj#éh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjéubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0éh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjéubjÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj>éh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjéubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKéh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjéubh)�”}”(hhh]”jú)�”}”(hŒ ssam_device”h]”hŒ ssam_device”…”�”}”(hj\éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjYéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j^éŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j ésbŒc.ssam_device_get_match_data”†”asbuh1hhjéubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|éh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjéubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjŠéh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjéubjú)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj—éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjéubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjºèh²hh³jËèh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj¶èh²hh³jËèh´Mubah}”(h]”j±èah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jËèh´Mhj³èh²hubj&)�”}”(hhh]”hþ)�”}”(hŒjFind the ID matching the device in the ID table of the bound driver and return its ``driver_data`` member.”h]”(hŒSFind the ID matching the device in the ID table of the bound driver and return its ”…”�”}”(hjÁéh²hh³Nh´Nubj)�”}”(hŒ``driver_data``”h]”hŒ driver_data”…”�”}”(hjÉéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÁéubhŒ member.”…”�”}”(hjÁéh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhj¾éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj³èh²hh³jËèh´Mubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjëéjIjëéjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hX**Parameters** ``const struct ssam_device *dev`` The device for which to get the match data. **Description** Find the fist match for the UID of the device in the ID table of the corresponding driver and return its driver_data. Returns ``NULL`` if the device does not have a driver bound to it, the driver does not have match_table (i.e. it is ``NULL``), there is no match in the driver's match_table, or the match does not have any driver_data. This function essentially calls ssam_device_get_match() and, if any match could be found, returns its ``struct ssam_device_id.driver_data`` member. **Return** Returns the driver data associated with the first match for the UID of the device in the device driver's match table, or ``NULL`` if no such match could be found.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjõéh]”hŒ Parameters”…”�”}”(hj÷éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjóéubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhjïéubjn)�”}”(hhh]”js)�”}”(hŒN``const struct ssam_device *dev`` The device for which to get the match data. ”h]”(jy)�”}”(hŒ!``const struct ssam_device *dev``”h]”j)�”}”(hjêh]”hŒconst struct ssam_device *dev”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhjêubj•)�”}”(hhh]”hþ)�”}”(hŒ+The device for which to get the match data.”h]”hŒ+The device for which to get the match data.”…”�”}”(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&]”uh1jrh³j)êh´Mhj êubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjïéubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjOêh]”hŒ Description”…”�”}”(hjQêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjMêubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhjïéubhþ)�”}”(hXOFind the fist match for the UID of the device in the ID table of the corresponding driver and return its driver_data. Returns ``NULL`` if the device does not have a driver bound to it, the driver does not have match_table (i.e. it is ``NULL``), there is no match in the driver's match_table, or the match does not have any driver_data.”h]”(hŒ~Find the fist match for the UID of the device in the ID table of the corresponding driver and return its driver_data. Returns ”…”�”}”(hjeêh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjmêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjeêubhŒd if the device does not have a driver bound to it, the driver does not have match_table (i.e. it is ”…”�”}”(hjeêh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjeêubhŒ_), there is no match in the driver’s match_table, or the match does not have any driver_data.”…”�”}”(hjeêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhjïéubhþ)�”}”(hŒ“This function essentially calls ssam_device_get_match() and, if any match could be found, returns its ``struct ssam_device_id.driver_data`` member.”h]”(hŒfThis function essentially calls ssam_device_get_match() and, if any match could be found, returns its ”…”�”}”(hj˜êh²hh³Nh´Nubj)�”}”(hŒ%``struct ssam_device_id.driver_data``”h]”hŒ!struct ssam_device_id.driver_data”…”�”}”(hj êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj˜êubhŒ member.”…”�”}”(hj˜êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´M"hjïéubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hj»êh]”hŒReturn”…”�”}”(hj½êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj¹êubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´M%hjïéubhþ)�”}”(hŒ¢Returns the driver data associated with the first match for the UID of the device in the device driver's match table, or ``NULL`` if no such match could be found.”h]”(hŒ{Returns the driver data associated with the first match for the UID of the device in the device driver’s match table, or ”…”�”}”(hjÑêh²hh³Nh´Nubj)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÙêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÑêubhŒ! if no such match could be found.”…”�”}”(hjÑêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´M&hjïéubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ*__ssam_device_driver_register (C function)”Œc.__ssam_device_driver_register”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒYint __ssam_device_driver_register (struct ssam_device_driver *sdrv, struct module *owner)”h]”jË)�”}”(hŒXint __ssam_device_driver_register(struct ssam_device_driver *sdrv, struct module *owner)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjëh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MWubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!ëh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjëh²hh³j ëh´MWubjô)�”}”(hŒ__ssam_device_driver_register”h]”jú)�”}”(hŒ__ssam_device_driver_register”h]”hŒ__ssam_device_driver_register”…”�”}”(hj3ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj/ëubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhjëh²hh³j ëh´MWubjv )�”}”(hŒ7(struct ssam_device_driver *sdrv, struct module *owner)”h]”(j| )�”}”(hŒstruct ssam_device_driver *sdrv”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjOëh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjKëubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ëh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjKëubh)�”}”(hhh]”jú)�”}”(hŒssam_device_driver”h]”hŒssam_device_driver”…”�”}”(hjmëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjjëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”joëŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j5ësbŒc.__ssam_device_driver_register”†”asbuh1hhjKëubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ëh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjKëubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj›ëh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjKëubjú)�”}”(hŒsdrv”h]”hŒsdrv”…”�”}”(hj¨ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjKëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjGëubj| )�”}”(hŒstruct module *owner”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjÁëh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj½ëubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎëh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj½ëubh)�”}”(hhh]”jú)�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hjßëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÜëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jáëŒmodname”NŒ classname”Njžj¡)�”}”j¤]”j‰ëŒc.__ssam_device_driver_register”†”asbuh1hhj½ëubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýëh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj½ëubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj ìh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj½ëubjú)�”}”(hŒowner”h]”hŒowner”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj½ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjGëubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hjëh²hh³j ëh´MWubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj ëh²hh³j ëh´MWubah}”(h]”jëah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j ëh´MWhjëh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ%Register a SSAM client device driver.”h]”hŒ%Register a SSAM client device driver.”…”�”}”(hjBìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MWhj?ìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjëh²hh³j ëh´MWubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjZìjIjZìjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hX!**Parameters** ``struct ssam_device_driver *sdrv`` The driver to register. ``struct module *owner`` The module owning the provided driver. **Description** Please refer to the ssam_device_driver_register() macro for the normal way to register a driver from inside its owning module.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjdìh]”hŒ Parameters”…”�”}”(hjfìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjbìubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´M[hj^ìubjn)�”}”(hhh]”(js)�”}”(hŒ<``struct ssam_device_driver *sdrv`` The driver to register. ”h]”(jy)�”}”(hŒ#``struct ssam_device_driver *sdrv``”h]”j)�”}”(hjƒìh]”hŒstruct ssam_device_driver *sdrv”…”�”}”(hj…ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj�ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MXhj}ìubj•)�”}”(hhh]”hþ)�”}”(hŒThe driver to register.”h]”hŒThe driver to register.”…”�”}”(hjœìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j˜ìh´MXhj™ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj}ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j˜ìh´MXhjzìubjs)�”}”(hŒ@``struct module *owner`` The module owning the provided driver. ”h]”(jy)�”}”(hŒ``struct module *owner``”h]”j)�”}”(hj¼ìh]”hŒstruct module *owner”…”�”}”(hj¾ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjºìubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MYhj¶ìubj•)�”}”(hhh]”hþ)�”}”(hŒ&The module owning the provided driver.”h]”hŒ&The module owning the provided driver.”…”�”}”(hjÕìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÑìh´MYhjÒìubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj¶ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jÑìh´MYhjzìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj^ìubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj÷ìh]”hŒ Description”…”�”}”(hjùìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjõìubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´M[hj^ìubhþ)�”}”(hŒ~Please refer to the ssam_device_driver_register() macro for the normal way to register a driver from inside its owning module.”h]”hŒ~Please refer to the ssam_device_driver_register() macro for the normal way to register a driver from inside its owning module.”…”�”}”(hj íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MZhj^ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ*ssam_device_driver_unregister (C function)”Œc.ssam_device_driver_unregister”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒDvoid ssam_device_driver_unregister (struct ssam_device_driver *sdrv)”h]”jË)�”}”(hŒCvoid ssam_device_driver_unregister(struct ssam_device_driver *sdrv)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj<íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj8íh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mlubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKíh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj8íh²hh³jJíh´Mlubjô)�”}”(hŒssam_device_driver_unregister”h]”jú)�”}”(hŒssam_device_driver_unregister”h]”hŒssam_device_driver_unregister”…”�”}”(hj]íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjYíubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj8íh²hh³jJíh´Mlubjv )�”}”(hŒ!(struct ssam_device_driver *sdrv)”h]”j| )�”}”(hŒstruct ssam_device_driver *sdrv”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjyíh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjuíubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†íh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjuíubh)�”}”(hhh]”jú)�”}”(hŒssam_device_driver”h]”hŒssam_device_driver”…”�”}”(hj—íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj”íubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j™íŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA j_ísbŒc.ssam_device_driver_unregister”†”asbuh1hhjuíubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·íh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjuíubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjÅíh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjuíubjú)�”}”(hŒsdrv”h]”hŒsdrv”…”�”}”(hjÒíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjuíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjqíubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj8íh²hh³jJíh´Mlubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj4íh²hh³jJíh´Mlubah}”(h]”j/íah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³jJíh´Mlhj1íh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ Unregister a SSAM device driver.”h]”hŒ Unregister a SSAM device driver.”…”�”}”(hjüíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mlhjùíh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj1íh²hh³jJíh´Mlubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjîjIjîjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hŒO**Parameters** ``struct ssam_device_driver *sdrv`` The driver to unregister.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjîh]”hŒ Parameters”…”�”}”(hj îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mphjîubjn)�”}”(hhh]”js)�”}”(hŒ=``struct ssam_device_driver *sdrv`` The driver to unregister.”h]”(jy)�”}”(hŒ#``struct ssam_device_driver *sdrv``”h]”j)�”}”(hj=îh]”hŒstruct ssam_device_driver *sdrv”…”�”}”(hj?îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj;îubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mrhj7îubj•)�”}”(hhh]”hþ)�”}”(hŒThe driver to unregister.”h]”hŒThe driver to unregister.”…”�”}”(hjVîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MmhjSîubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hj7îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³jRîh´Mrhj4îubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ$__ssam_register_clients (C function)”Œc.__ssam_register_clients”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒmint __ssam_register_clients (struct device *parent, struct ssam_controller *ctrl, struct fwnode_handle *node)”h]”jË)�”}”(hŒlint __ssam_register_clients(struct device *parent, struct ssam_controller *ctrl, struct fwnode_handle *node)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj—îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj“îh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MÇubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦îh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj“îh²hh³j¥îh´MÇubjô)�”}”(hŒ__ssam_register_clients”h]”jú)�”}”(hŒ__ssam_register_clients”h]”hŒ__ssam_register_clients”…”�”}”(hj¸îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj´îubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj“îh²hh³j¥îh´MÇubjv )�”}”(hŒQ(struct device *parent, struct ssam_controller *ctrl, struct fwnode_handle *node)”h]”(j| )�”}”(hŒstruct device *parent”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjÔîh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjÐîubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáîh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÐîubh)�”}”(hhh]”jú)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjòîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjïîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jôîŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jºîsbŒc.__ssam_register_clients”†”asbuh1hhjÐîubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjÐîubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj ïh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjÐîubjú)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj-ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÐîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjÌîubj| )�”}”(hŒstruct ssam_controller *ctrl”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjFïh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjBïubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSïh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjBïubh)�”}”(hhh]”jú)�”}”(hŒssam_controller”h]”hŒssam_controller”…”�”}”(hjdïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjaïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jfïŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jïŒc.__ssam_register_clients”†”asbuh1hhjBïubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚ïh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjBïubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj�ïh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjBïubjú)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj�ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjBïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjÌîubj| )�”}”(hŒstruct fwnode_handle *node”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hj¶ïh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhj²ïubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃïh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj²ïubh)�”}”(hhh]”jú)�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hjÔïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÑïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”jÖïŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jïŒc.__ssam_register_clients”†”asbuh1hhj²ïubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòïh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj²ïubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hj²ïubjú)�”}”(hŒnode”h]”hŒnode”…”�”}”(hj ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhj²ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjÌîubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj“îh²hh³j¥îh´MÇubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj�îh²hh³j¥îh´MÇubah}”(h]”jŠîah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j¥îh´MÇhjŒîh²hubj&)�”}”(hhh]”hþ)�”}”(hŒ^Register client devices defined under the given firmware node as children of the given device.”h]”hŒ^Register client devices defined under the given firmware node as children of the given device.”…”�”}”(hj7ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MÇhj4ðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŒîh²hh³j¥îh´MÇubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHjOðjIjOðjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hXI**Parameters** ``struct device *parent`` The parent device under which clients should be registered. ``struct ssam_controller *ctrl`` The controller with which client should be registered. ``struct fwnode_handle *node`` The firmware node holding definitions of the devices to be added. **Description** Register all clients that have been defined as children of the given root firmware node as children of the given parent device. The respective child firmware nodes will be associated with the correspondingly created child devices. The given controller will be used to instantiate the new devices. See ssam_device_add() for details. Note that, generally, the use of either ssam_device_register_clients() or ssam_register_clients() should be preferred as they directly use the firmware node and/or controller associated with the given device. This function is only intended for use when different device specifications (e.g. ACPI and firmware nodes) need to be combined (as is done in the platform hub of the device registry). **Return** Returns zero on success, nonzero on failure.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hjYðh]”hŒ Parameters”…”�”}”(hj[ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjWðubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MËhjSðubjn)�”}”(hhh]”(js)�”}”(hŒV``struct device *parent`` The parent device under which clients should be registered. ”h]”(jy)�”}”(hŒ``struct device *parent``”h]”j)�”}”(hjxðh]”hŒstruct device *parent”…”�”}”(hjzðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjvðubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MÉhjrðubj•)�”}”(hhh]”hþ)�”}”(hŒ;The parent device under which clients should be registered.”h]”hŒ;The parent device under which clients should be registered.”…”�”}”(hj‘ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j�ðh´MÉhjŽðubah}”(h]”h ]”h"]”h$]”h&]”uh1j”hjrðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jrh³j�ðh´MÉhjoðubjs)�”}”(hŒX``struct ssam_controller *ctrl`` The controller with which client should be registered. ”h]”(jy)�”}”(hŒ ``struct ssam_controller *ctrl``”h]”j)�”}”(hj±ðh]”hŒstruct ssam_controller *ctrl”…”�”}”(hj³ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¯ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MÊhj«ðubj•)�”}”(hhh]”hþ)�”}”(hŒ6The controller with which client should be registered.”h]”hŒ6The controller with which client should be registered.”…”�”}”(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&]”uh1jrh³jÆðh´MÊhjoðubjs)�”}”(hŒa``struct fwnode_handle *node`` The firmware node holding definitions of the devices to be added. ”h]”(jy)�”}”(hŒ``struct fwnode_handle *node``”h]”j)�”}”(hjêðh]”hŒstruct fwnode_handle *node”…”�”}”(hjìðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjèðubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MËhjäðubj•)�”}”(hhh]”hþ)�”}”(hŒAThe firmware node holding definitions of the devices to be added.”h]”hŒAThe firmware node holding definitions of the devices to be added.”…”�”}”(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&]”uh1jrh³jÿðh´MËhjoðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjSðubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hj%ñh]”hŒ Description”…”�”}”(hj'ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj#ñubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MÍhjSðubhþ)�”}”(hŒæRegister all clients that have been defined as children of the given root firmware node as children of the given parent device. The respective child firmware nodes will be associated with the correspondingly created child devices.”h]”hŒæRegister all clients that have been defined as children of the given root firmware node as children of the given parent device. The respective child firmware nodes will be associated with the correspondingly created child devices.”…”�”}”(hj;ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MÌhjSðubhþ)�”}”(hŒdThe given controller will be used to instantiate the new devices. See ssam_device_add() for details.”h]”hŒdThe given controller will be used to instantiate the new devices. See ssam_device_add() for details.”…”�”}”(hjJñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MÑhjSðubhþ)�”}”(hXˆNote that, generally, the use of either ssam_device_register_clients() or ssam_register_clients() should be preferred as they directly use the firmware node and/or controller associated with the given device. This function is only intended for use when different device specifications (e.g. ACPI and firmware nodes) need to be combined (as is done in the platform hub of the device registry).”h]”hXˆNote that, generally, the use of either ssam_device_register_clients() or ssam_register_clients() should be preferred as they directly use the firmware node and/or controller associated with the given device. This function is only intended for use when different device specifications (e.g. ACPI and firmware nodes) need to be combined (as is done in the platform hub of the device registry).”…”�”}”(hjYñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MÔhjSðubhþ)�”}”(hŒ **Return**”h]”jX)�”}”(hjjñh]”hŒReturn”…”�”}”(hjlñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjhñubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MÛhjSðubhþ)�”}”(hŒ,Returns zero on success, nonzero on failure.”h]”hŒ,Returns zero on success, nonzero on failure.”…”�”}”(hj€ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´MÜhjSðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubj¯)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j»Œ ssam_remove_clients (C function)”Œc.ssam_remove_clients”hNt”auh1j®hj)¨h²hh³Nh´NubjÀ)�”}”(hhh]”(jÅ)�”}”(hŒ-void ssam_remove_clients (struct device *dev)”h]”jË)�”}”(hŒ,void ssam_remove_clients(struct device *dev)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¯ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj«ñh²hh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾ñh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhj«ñh²hh³j½ñh´Mubjô)�”}”(hŒssam_remove_clients”h]”jú)�”}”(hŒssam_remove_clients”h]”hŒssam_remove_clients”…”�”}”(hjÐñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjÌñubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jóhj«ñh²hh³j½ñh´Mubjv )�”}”(hŒ(struct device *dev)”h]”j| )�”}”(hŒstruct device *dev”h]”(jÑ)�”}”(hj­h]”hŒstruct”…”�”}”(hjìñh²hh³Nh´Nubah}”(h]”h ]”jÝah"]”h$]”h&]”uh1jÐhjèñubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùñh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjèñubh)�”}”(hhh]”jú)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj òh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jBŒreftype”jA Œ reftarget”j òŒmodname”NŒ classname”Njžj¡)�”}”j¤]”jI )�”}”jA jÒñsbŒc.ssam_remove_clients”†”asbuh1hhjèñubjã)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*òh²hh³Nh´Nubah}”(h]”h ]”jïah"]”h$]”h&]”uh1jâhjèñubjÍ )�”}”(hjÐ h]”hŒ*”…”�”}”(hj8òh²hh³Nh´Nubah}”(h]”h ]”jÙ ah"]”h$]”h&]”uh1jÌ hjèñubjú)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjEòh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jùhjèñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j{ hjäñubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1ju hj«ñh²hh³j½ñh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÊjjhj§ñh²hh³j½ñh´Mubah}”(h]”j¢ñah ]”(jjeh"]”h$]”h&]”j"ˆj#)j$huh1jÄh³j½ñh´Mhj¤ñh²hubj&)�”}”(hhh]”hþ)�”}”(hŒWRemove SSAM client devices registered as direct children under the given parent device.”h]”hŒWRemove SSAM client devices registered as direct children under the given parent device.”…”�”}”(hjoòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhjlòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¤ñh²hh³j½ñh´Mubeh}”(h]”h ]”(jBŒfunction”eh"]”h$]”h&]”jGjBjHj‡òjIj‡òjJ‰jK‰jL‰uh1j¿h²hhj)¨h³Nh´NubjN)�”}”(hXG**Parameters** ``struct device *dev`` The (parent) device to remove all direct clients for. **Description** Remove all SSAM client devices registered as direct children under the given device. Note that this only accounts for direct children of the device. Refer to ssam_device_add()/ssam_device_remove() for more details.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jX)�”}”(hj‘òh]”hŒ Parameters”…”�”}”(hj“òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhj�òubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhj‹òubjn)�”}”(hhh]”js)�”}”(hŒM``struct device *dev`` The (parent) device to remove all direct clients for. ”h]”(jy)�”}”(hŒ``struct device *dev``”h]”j)�”}”(hj°òh]”hŒstruct device *dev”…”�”}”(hj²òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj®òubah}”(h]”h ]”h"]”h$]”h&]”uh1jxh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhjªòubj•)�”}”(hhh]”hþ)�”}”(hŒ5The (parent) device to remove all direct clients for.”h]”hŒ5The (parent) device to remove all direct clients for.”…”�”}”(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&]”uh1jrh³jÅòh´Mhj§òubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj‹òubhþ)�”}”(hŒ**Description**”h]”jX)�”}”(hjëòh]”hŒ Description”…”�”}”(hjíòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjéòubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhj‹òubhþ)�”}”(hŒÖRemove all SSAM client devices registered as direct children under the given device. Note that this only accounts for direct children of the device. Refer to ssam_device_add()/ssam_device_remove() for more details.”h]”hŒÖRemove all SSAM client devices registered as direct children under the given device. Note that this only accounts for direct children of the device. Refer to ssam_device_add()/ssam_device_remove() for more details.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³Œ‚/var/lib/git/docbuild/linux/Documentation/driver-api/surface_aggregator/client-api:37: ./drivers/platform/surface/aggregator/bus.c”h´Mhj‹òubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jMhj)¨h²hh³Nh´Nubeh}”(h]”juah ]”h"]”Œ client bus and client device api”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K!ubeh}”(h]”jah ]”h"]”Œclient driver 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”jHóŒ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"ójjšj–j'9j1j&¨jSjójuuŒ nametypes”}”(j"ó‰jš‰j'9‰j&¨‰jó‰uh}”(jhÊj–háj1j�j½jÆjžj£jKjPj'j,j«j°j· j¼ jÁ jÆ jî jó j j j<jAj¨j­jîjój$j)jjjoj°jµjâjçjKjPj jj¿jÄj¸j½j$j)j� j• jÓ!jØ!ja%jf%j(j(jF*jK*jj,jo,jØ.jÝ.jí0jò0jæ2jë2ju5jz5jX7j]7jSj*9jG9jL9j$:j):jm<jr<j–=j›=j…@jŠ@jBjBjÇCjÌCjWFj\Fj“Hj˜HjJJjOJj_LjdLjnNjsNjAPjFPj­Rj²Rj¹Tj¾TjsVjxVjŠXj�Xj¡Zj¦Zj]j]jó^jø^j.aj3ajicjncjfjfjIgjNgjúhjÿhjŠjj�jjlj ljnj nj‘oj–ojqj!qjôrjùrjÑsjÖsjSvjXvjµxjºxj»zjÀzjv|j{|jÐ}jÕ}j€j…j�j�j[„j`„j݇jâ‡jm‰jr‰jËjÈ‹jŽj"Žj2‘j7‘jÿ”j•j”—j™—jºšj¿šjfžjkžj¢j¢jw£j|£jú¥jÿ¥juj)¨jF¨jK¨j\©ja©j9ªj>ªj&¬j+¬jå¯jê¯jY³j^³jͶjÒ¶j¤¸j©¸jXºj]ºj1¼j6¼j¾j¾jÏ¿jÔ¿jPÁjUÁj ÃjÃjÅj#ÅjÑÆjÖÆj_ÈjdÈj5Êj:ÊjËjËj#Ìj(ÌjƒÎjˆÎj:Ðj?ÐjôÑjùÑj ÔjÔj"Öj'Öj–Øj›Øj=ÛjBÛj®Ýj³Ýj?àjDàjâjâj˜ãj�ãjSæjXæj±èj¶èjëj ëj/íj4íjŠîj�îj¢ñj§ñhÞjj+j"jMjDjojfuŒ 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”“”}”jVóKs…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.