€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ+/translations/zh_CN/driver-api/interconnect”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/zh_TW/driver-api/interconnect”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/it_IT/driver-api/interconnect”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/ja_JP/driver-api/interconnect”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/ko_KR/driver-api/interconnect”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/pt_BR/driver-api/interconnect”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/sp_SP/driver-api/interconnect”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒE/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ%Generic System Interconnect Subsystem”h]”hŒ%Generic System Interconnect Subsystem”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hXHThis framework is designed to provide a standard kernel interface to control the settings of the interconnects on an SoC. These settings can be throughput, latency and priority between multiple interconnected devices or functional blocks. This can be controlled dynamically in order to save power or provide maximum performance.”h]”hXHThis framework is designed to provide a standard kernel interface to control the settings of the interconnects on an SoC. These settings can be throughput, latency and priority between multiple interconnected devices or functional blocks. This can be controlled dynamically in order to save power or provide maximum performance.”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhï)�”}”(hXSThe interconnect bus is hardware with configurable parameters, which can be set on a data path according to the requests received from various drivers. An example of interconnect buses are the interconnects between various components or functional blocks in chipsets. There can be multiple interconnects on an SoC that can be multi-tiered.”h]”hXSThe interconnect bus is hardware with configurable parameters, which can be set on a data path according to the requests received from various drivers. An example of interconnect buses are the interconnects between various components or functional blocks in chipsets. There can be multiple interconnects on an SoC that can be multi-tiered.”…”�”}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhï)�”}”(hŒLBelow is a simplified diagram of a real-world SoC interconnect bus topology.”h]”hŒLBelow is a simplified diagram of a real-world SoC interconnect bus topology.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhŒ literal_block”“”)�”}”(hXå+----------------+ +----------------+ | HW Accelerator |--->| M NoC |<---------------+ +----------------+ +----------------+ | | | +------------+ +-----+ +-------------+ V +------+ | | | DDR | | +--------+ | PCIe | | | +-----+ | | Slaves | +------+ | | ^ ^ | +--------+ | | C NoC | | | V V | | +------------------+ +------------------------+ | | +-----+ | |-->| |-->| |-->| CPU | | |-->| |<--| | +-----+ | Mem NoC | | S NoC | +------------+ | |<--| |---------+ | | |<--| |<------+ | | +--------+ +------------------+ +------------------------+ | | +-->| Slaves | ^ ^ ^ ^ ^ | | +--------+ | | | | | | V +------+ | +-----+ +-----+ +---------+ +----------------+ +--------+ | CPUs | | | GPU | | DSP | | Masters |-->| P NoC |-->| Slaves | +------+ | +-----+ +-----+ +---------+ +----------------+ +--------+ | +-------+ | Modem | +-------+”h]”hXå+----------------+ +----------------+ | HW Accelerator |--->| M NoC |<---------------+ +----------------+ +----------------+ | | | +------------+ +-----+ +-------------+ V +------+ | | | DDR | | +--------+ | PCIe | | | +-----+ | | Slaves | +------+ | | ^ ^ | +--------+ | | C NoC | | | V V | | +------------------+ +------------------------+ | | +-----+ | |-->| |-->| |-->| CPU | | |-->| |<--| | +-----+ | Mem NoC | | S NoC | +------------+ | |<--| |---------+ | | |<--| |<------+ | | +--------+ +------------------+ +------------------------+ | | +-->| Slaves | ^ ^ ^ ^ ^ | | +--------+ | | | | | | V +------+ | +-----+ +-----+ +---------+ +----------------+ +--------+ | CPUs | | | GPU | | DSP | | Masters |-->| P NoC |-->| Slaves | +------+ | +-----+ +-----+ +---------+ +----------------+ +--------+ | +-------+ | Modem | +-------+”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´KhhÝh²hubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Terminology”h]”hŒ Terminology”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj2h²hh³hÇh´K5ubhï)�”}”(hŒªInterconnect provider is the software definition of the interconnect hardware. The interconnect providers on the above diagram are M NoC, S NoC, C NoC, P NoC and Mem NoC.”h]”hŒªInterconnect provider is the software definition of the interconnect hardware. The interconnect providers on the above diagram are M NoC, S NoC, C NoC, P NoC and Mem NoC.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K7hj2h²hubhï)�”}”(hXyInterconnect node is the software definition of the interconnect hardware port. Each interconnect provider consists of multiple interconnect nodes, which are connected to other SoC components including other interconnect providers. The point on the diagram where the CPUs connect to the memory is called an interconnect node, which belongs to the Mem NoC interconnect provider.”h]”hXyInterconnect node is the software definition of the interconnect hardware port. Each interconnect provider consists of multiple interconnect nodes, which are connected to other SoC components including other interconnect providers. The point on the diagram where the CPUs connect to the memory is called an interconnect node, which belongs to the Mem NoC interconnect provider.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K;hj2h²hubhï)�”}”(hŒ‚Interconnect endpoints are the first or the last element of the path. Every endpoint is a node, but not every node is an endpoint.”h]”hŒ‚Interconnect endpoints are the first or the last element of the path. Every endpoint is a node, but not every node is an endpoint.”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KAhj2h²hubhï)�”}”(hŒåInterconnect path is everything between two endpoints including all the nodes that have to be traversed to reach from a source to destination node. It may include multiple master-slave pairs across several interconnect providers.”h]”hŒåInterconnect path is everything between two endpoints including all the nodes that have to be traversed to reach from a source to destination node. It may include multiple master-slave pairs across several interconnect providers.”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KDhj2h²hubhï)�”}”(hXnInterconnect consumers are the entities which make use of the data paths exposed by the providers. The consumers send requests to providers requesting various throughput, latency and priority. Usually the consumers are device drivers, that send request based on their needs. An example for a consumer is a video decoder that supports various formats and image sizes.”h]”hXnInterconnect consumers are the entities which make use of the data paths exposed by the providers. The consumers send requests to providers requesting various throughput, latency and priority. Usually the consumers are device drivers, that send request based on their needs. An example for a consumer is a video decoder that supports various formats and image sizes.”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KHhj2h²hubeh}”(h]”Œ terminology”ah ]”h"]”Œ terminology”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K5ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒInterconnect providers”h]”hŒInterconnect providers”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj‘h²hh³hÇh´KOubhï)�”}”(hŒÍInterconnect provider is an entity that implements methods to initialize and configure interconnect bus hardware. The interconnect provider drivers should be registered with the interconnect provider core.”h]”hŒÍInterconnect provider is an entity that implements methods to initialize and configure interconnect bus hardware. The interconnect provider drivers should be registered with the interconnect provider core.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KQhj‘h²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œicc_node_data (C struct)”Œc.icc_node_data”hNt”auh1j°hj‘h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ icc_node_data”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct icc_node_data”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jÒhjÎh²hh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.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Œ icc_node_data”h]”hŒ desc_sig_name”“”)�”}”(hjÊh]”hŒ icc_node_data”…”�”}”(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Œ icc node data”h]”hŒ icc node data”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´Khj)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hjÃh²hh³jãh´Kubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”jDŒobjtype”jEŒdesctype”jEŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jÁh²hhj‘h³Nh´NubhŒ container”“”)�”}”(hŒŒ**Definition**:: struct icc_node_data { struct icc_node *node; u32 tag; }; **Members** ``node`` icc node ``tag`` tag”h]”(hï)�”}”(hŒ**Definition**::”h]”(hŒstrong”“”)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjUubhŒ:”…”�”}”(hjUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´KhjQubj)�”}”(hŒAstruct icc_node_data { struct icc_node *node; u32 tag; };”h]”hŒAstruct icc_node_data { struct icc_node *node; u32 tag; };”…”�”}”hjtsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´KhjQubhï)�”}”(hŒ **Members**”h]”jZ)�”}”(hj…h]”hŒMembers”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´KhjQubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ``node`` icc node ”h]”(hŒterm”“”)�”}”(hŒ``node``”h]”hŒliteral”“”)�”}”(hjªh]”hŒnode”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´Khj¢ubhŒ definition”“”)�”}”(hhh]”hï)�”}”(hŒicc node”h]”hŒicc node”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÁh´KhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÁh´Khj�ubj¡)�”}”(hŒ ``tag`` tag”h]”(j§)�”}”(hŒ``tag``”h]”j­)�”}”(hjçh]”hŒtag”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´KhjáubjÃ)�”}”(hhh]”hï)�”}”(hŒtag”h]”hŒtag”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´Khjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jüh´Khj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj‘h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_onecell_data (C struct)”Œc.icc_onecell_data”hNt”auh1j°hj‘h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒicc_onecell_data”h]”jÍ)�”}”(hŒstruct icc_onecell_data”h]”(jÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhj=h²hh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´Kubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj=h²hh³jNh´Kubjö)�”}”(hŒicc_onecell_data”h]”jü)�”}”(hj;h]”hŒicc_onecell_data”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj]ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj=h²hh³jNh´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhj9h²hh³jNh´Kubah}”(h]”j4ah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³jNh´Khj6h²hubj()�”}”(hhh]”hï)�”}”(hŒ.driver data for onecell interconnect providers”h]”hŒ.driver data for onecell interconnect providers”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´Khj€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj6h²hh³jNh´Kubeh}”(h]”h ]”(jDŒstruct”eh"]”h$]”h&]”jIjDjJj›jKj›jL‰jM‰jN‰uh1jÁh²hhj‘h³Nh´NubjP)�”}”(hŒè**Definition**:: struct icc_onecell_data { unsigned int num_nodes; struct icc_node *nodes[]; }; **Members** ``num_nodes`` number of nodes in this device ``nodes`` array of pointers to the nodes in this device”h]”(hï)�”}”(hŒ**Definition**::”h]”(jZ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj£ubhŒ:”…”�”}”(hj£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K!hjŸubj)�”}”(hŒVstruct icc_onecell_data { unsigned int num_nodes; struct icc_node *nodes[]; };”h]”hŒVstruct icc_onecell_data { unsigned int num_nodes; struct icc_node *nodes[]; };”…”�”}”hjÀsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K#hjŸubhï)�”}”(hŒ **Members**”h]”jZ)�”}”(hjÑh]”hŒMembers”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K(hjŸubjœ)�”}”(hhh]”(j¡)�”}”(hŒ-``num_nodes`` number of nodes in this device ”h]”(j§)�”}”(hŒ ``num_nodes``”h]”j­)�”}”(hjðh]”hŒ num_nodes”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K hjêubjÃ)�”}”(hhh]”hï)�”}”(hŒnumber of nodes in this device”h]”hŒnumber of nodes in this device”…”�”}”(hj h²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&]”uh1j h³jh´K hjçubj¡)�”}”(hŒ7``nodes`` array of pointers to the nodes in this device”h]”(j§)�”}”(hŒ ``nodes``”h]”j­)�”}”(hj)h]”hŒnodes”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K hj#ubjÃ)�”}”(hhh]”hï)�”}”(hŒ-array of pointers to the nodes in this device”h]”hŒ-array of pointers to the nodes in this device”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K!hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j>h´K hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj‘h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_provider (C struct)”Œc.icc_provider”hNt”auh1j°hj‘h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒ icc_provider”h]”jÍ)�”}”(hŒstruct icc_provider”h]”(jÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhjh²hh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K'ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjh²hh³j�h´K'ubjö)�”}”(hŒ icc_provider”h]”jü)�”}”(hj}h]”hŒ icc_provider”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŸubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhjh²hh³j�h´K'ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhj{h²hh³j�h´K'ubah}”(h]”jvah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³j�h´K'hjxh²hubj()�”}”(hhh]”hï)�”}”(hŒ[interconnect provider (controller) entity that might provide multiple interconnect controls”h]”hŒ[interconnect provider (controller) entity that might provide multiple interconnect controls”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K+hjÂh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hjxh²hh³j�h´K'ubeh}”(h]”h ]”(jDŒstruct”eh"]”h$]”h&]”jIjDjJjÝjKjÝjL‰jM‰jN‰uh1jÁh²hhj‘h³Nh´NubjP)�”}”(hXþ**Definition**:: struct icc_provider { struct list_head provider_list; struct list_head nodes; int (*set)(struct icc_node *src, struct icc_node *dst); int (*aggregate)(struct icc_node *node, u32 tag, u32 avg_bw, u32 peak_bw, u32 *agg_avg, u32 *agg_peak); void (*pre_aggregate)(struct icc_node *node); int (*get_bw)(struct icc_node *node, u32 *avg, u32 *peak); struct icc_node* (*xlate)(const struct of_phandle_args *spec, void *data); struct icc_node_data* (*xlate_extended)(const struct of_phandle_args *spec, void *data); struct device *dev; int users; bool inter_set; void *data; }; **Members** ``provider_list`` list of the registered interconnect providers ``nodes`` internal list of the interconnect provider nodes ``set`` pointer to device specific set operation function ``aggregate`` pointer to device specific aggregate operation function ``pre_aggregate`` pointer to device specific function that is called before the aggregation begins (optional) ``get_bw`` pointer to device specific function to get current bandwidth ``xlate`` provider-specific callback for mapping nodes from phandle arguments ``xlate_extended`` vendor-specific callback for mapping node data from phandle arguments ``dev`` the device this interconnect provider belongs to ``users`` count of active users ``inter_set`` whether inter-provider pairs will be configured with **set** ``data`` pointer to private data”h]”(hï)�”}”(hŒ**Definition**::”h]”(jZ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjåubhŒ:”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K/hjáubj)�”}”(hX€struct icc_provider { struct list_head provider_list; struct list_head nodes; int (*set)(struct icc_node *src, struct icc_node *dst); int (*aggregate)(struct icc_node *node, u32 tag, u32 avg_bw, u32 peak_bw, u32 *agg_avg, u32 *agg_peak); void (*pre_aggregate)(struct icc_node *node); int (*get_bw)(struct icc_node *node, u32 *avg, u32 *peak); struct icc_node* (*xlate)(const struct of_phandle_args *spec, void *data); struct icc_node_data* (*xlate_extended)(const struct of_phandle_args *spec, void *data); struct device *dev; int users; bool inter_set; void *data; };”h]”hX€struct icc_provider { struct list_head provider_list; struct list_head nodes; int (*set)(struct icc_node *src, struct icc_node *dst); int (*aggregate)(struct icc_node *node, u32 tag, u32 avg_bw, u32 peak_bw, u32 *agg_avg, u32 *agg_peak); void (*pre_aggregate)(struct icc_node *node); int (*get_bw)(struct icc_node *node, u32 *avg, u32 *peak); struct icc_node* (*xlate)(const struct of_phandle_args *spec, void *data); struct icc_node_data* (*xlate_extended)(const struct of_phandle_args *spec, void *data); struct device *dev; int users; bool inter_set; void *data; };”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K1hjáubhï)�”}”(hŒ **Members**”h]”jZ)�”}”(hjh]”hŒMembers”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K@hjáubjœ)�”}”(hhh]”(j¡)�”}”(hŒ@``provider_list`` list of the registered interconnect providers ”h]”(j§)�”}”(hŒ``provider_list``”h]”j­)�”}”(hj2h]”hŒ provider_list”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K/hj,ubjÃ)�”}”(hhh]”hï)�”}”(hŒ-list of the registered interconnect providers”h]”hŒ-list of the registered interconnect providers”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jGh´K/hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jGh´K/hj)ubj¡)�”}”(hŒ;``nodes`` internal list of the interconnect provider nodes ”h]”(j§)�”}”(hŒ ``nodes``”h]”j­)�”}”(hjkh]”hŒnodes”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K0hjeubjÃ)�”}”(hhh]”hï)�”}”(hŒ0internal list of the interconnect provider nodes”h]”hŒ0internal list of the interconnect provider nodes”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j€h´K0hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j€h´K0hj)ubj¡)�”}”(hŒ:``set`` pointer to device specific set operation function ”h]”(j§)�”}”(hŒ``set``”h]”j­)�”}”(hj¤h]”hŒset”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K1hjžubjÃ)�”}”(hhh]”hï)�”}”(hŒ1pointer to device specific set operation function”h]”hŒ1pointer to device specific set operation function”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¹h´K1hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¹h´K1hj)ubj¡)�”}”(hŒF``aggregate`` pointer to device specific aggregate operation function ”h]”(j§)�”}”(hŒ ``aggregate``”h]”j­)�”}”(hjÝh]”hŒ aggregate”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K2hj×ubjÃ)�”}”(hhh]”hï)�”}”(hŒ7pointer to device specific aggregate operation function”h]”hŒ7pointer to device specific aggregate operation function”…”�”}”(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&]”uh1j h³jòh´K2hj)ubj¡)�”}”(hŒn``pre_aggregate`` pointer to device specific function that is called before the aggregation begins (optional) ”h]”(j§)�”}”(hŒ``pre_aggregate``”h]”j­)�”}”(hjh]”hŒ pre_aggregate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K4hjubjÃ)�”}”(hhh]”hï)�”}”(hŒ[pointer to device specific function that is called before the aggregation begins (optional)”h]”hŒ[pointer to device specific function that is called before the aggregation begins (optional)”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K3hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j+h´K4hj)ubj¡)�”}”(hŒH``get_bw`` pointer to device specific function to get current bandwidth ”h]”(j§)�”}”(hŒ ``get_bw``”h]”j­)�”}”(hjPh]”hŒget_bw”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K5hjJubjÃ)�”}”(hhh]”hï)�”}”(hŒ``provider`` points to the interconnect provider of this node ”h]”(j§)�”}”(hŒ ``provider``”h]”j­)�”}”(hj¡ h]”hŒprovider”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjŸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´KUhj› ubjÃ)�”}”(hhh]”hï)�”}”(hŒ0points to the interconnect provider of this node”h]”hŒ0points to the interconnect provider of this node”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¶ h´KUhj· ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj› ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¶ h´KUhj´ubj¡)�”}”(hŒC``node_list`` the list entry in the parent provider's "nodes" list ”h]”(j§)�”}”(hŒ ``node_list``”h]”j­)�”}”(hjÚ h]”hŒ node_list”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjØ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´KVhjÔ ubjÃ)�”}”(hhh]”hï)�”}”(hŒ4the list entry in the parent provider's "nodes" list”h]”hŒ:the list entry in the parent provider’s “nodesâ€� list”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jï h´KVhjð ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÔ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jï h´KVhj´ubj¡)�”}”(hŒ7``search_list`` list used when walking the nodes graph ”h]”(j§)�”}”(hŒ``search_list``”h]”j­)�”}”(hj h]”hŒ search_list”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´KWhj ubjÃ)�”}”(hhh]”hï)�”}”(hŒ&list used when walking the nodes graph”h]”hŒ&list used when walking the nodes graph”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j( h´KWhj) ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j( h´KWhj´ubj¡)�”}”(hŒB``reverse`` pointer to previous node when walking the nodes graph ”h]”(j§)�”}”(hŒ ``reverse``”h]”j­)�”}”(hjL h]”hŒreverse”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjJ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´KXhjF ubjÃ)�”}”(hhh]”hï)�”}”(hŒ5pointer to previous node when walking the nodes graph”h]”hŒ5pointer to previous node when walking the nodes graph”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³ja h´KXhjb ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjF ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³ja h´KXhj´ubj¡)�”}”(hŒ@``is_traversed`` flag that is used when walking the nodes graph ”h]”(j§)�”}”(hŒ``is_traversed``”h]”j­)�”}”(hj… h]”hŒ is_traversed”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjƒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´KYhj ubjÃ)�”}”(hhh]”hï)�”}”(hŒ.flag that is used when walking the nodes graph”h]”hŒ.flag that is used when walking the nodes graph”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jš h´KYhj› ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jš h´KYhj´ubj¡)�”}”(hŒI``req_list`` a list of QoS constraint requests associated with this node ”h]”(j§)�”}”(hŒ ``req_list``”h]”j­)�”}”(hj¾ h]”hŒreq_list”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj¼ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´KZhj¸ ubjÃ)�”}”(hhh]”hï)�”}”(hŒ;a list of QoS constraint requests associated with this node”h]”hŒ;a list of QoS constraint requests associated with this node”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÓ h´KZhjÔ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¸ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÓ h´KZhj´ubj¡)�”}”(hŒM``avg_bw`` aggregated value of average bandwidth requests from all consumers ”h]”(j§)�”}”(hŒ ``avg_bw``”h]”j­)�”}”(hj÷ h]”hŒavg_bw”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjõ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K[hjñ ubjÃ)�”}”(hhh]”hï)�”}”(hŒAaggregated value of average bandwidth requests from all consumers”h]”hŒAaggregated value of average bandwidth requests from all consumers”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j h´K[hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjñ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j h´K[hj´ubj¡)�”}”(hŒK``peak_bw`` aggregated value of peak bandwidth requests from all consumers ”h]”(j§)�”}”(hŒ ``peak_bw``”h]”j­)�”}”(hj0 h]”hŒpeak_bw”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj. ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K\hj* ubjÃ)�”}”(hhh]”hï)�”}”(hŒ>aggregated value of peak bandwidth requests from all consumers”h]”hŒ>aggregated value of peak bandwidth requests from all consumers”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jE h´K\hjF ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj* ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jE h´K\hj´ubj¡)�”}”(hŒP``init_avg`` average bandwidth value that is read from the hardware during init ”h]”(j§)�”}”(hŒ ``init_avg``”h]”j­)�”}”(hji h]”hŒinit_avg”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjg ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K]hjc ubjÃ)�”}”(hhh]”hï)�”}”(hŒBaverage bandwidth value that is read from the hardware during init”h]”hŒBaverage bandwidth value that is read from the hardware during init”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j~ h´K]hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjc ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j~ h´K]hj´ubj¡)�”}”(hŒN``init_peak`` peak bandwidth value that is read from the hardware during init ”h]”(j§)�”}”(hŒ ``init_peak``”h]”j­)�”}”(hj¢ h]”hŒ init_peak”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj  ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K^hjœ ubjÃ)�”}”(hhh]”hï)�”}”(hŒ?peak bandwidth value that is read from the hardware during init”h]”hŒ?peak bandwidth value that is read from the hardware during init”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j· h´K^hj¸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjœ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j· h´K^hj´ubj¡)�”}”(hŒ ``data`` pointer to private data”h]”(j§)�”}”(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&]”uh1j¦h³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K^hjÕ ubjÃ)�”}”(hhh]”hï)�”}”(hŒpointer to private data”h]”hŒpointer to private data”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œm/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:85: ./include/linux/interconnect-provider.h”h´K_hjñ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÕ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jð h´K^hj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj‘h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œ icc_node_create_dyn (C function)”Œc.icc_node_create_dyn”hNt”auh1j°hj‘h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒ,struct icc_node * icc_node_create_dyn (void)”h]”jÍ)�”}”(hŒ*struct icc_node *icc_node_create_dyn(void)”h]”(jÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhj1 h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Miubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj1 h²hh³jB h´Miubh)�”}”(hhh]”jü)�”}”(hŒicc_node”h]”hŒicc_node”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjQ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”Œ identifier”Œ reftarget”jV Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jo Œ ASTIdentifier”“”)�”}”jj Œicc_node_create_dyn”sbŒc.icc_node_create_dyn”†”asbuh1hhj1 h²hh³jB h´Miubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj1 h²hh³jB h´MiubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j‹ hj1 h²hh³jB h´Miubjö)�”}”(hŒicc_node_create_dyn”h]”jü)�”}”(hjz h]”hŒicc_node_create_dyn”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjœ ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj1 h²hh³jB h´MiubhŒdesc_parameterlist”“”)�”}”(hŒ(void)”h]”hŒdesc_parameter”“”)�”}”(hŒvoid”h]”hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j¿ hj» ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hjµ ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³ hj1 h²hh³jB h´Miubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhj- h²hh³jB h´Miubah}”(h]”j( ah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³jB h´Mihj* h²hubj()�”}”(hhh]”hï)�”}”(hŒcreate a node with dynamic id”h]”hŒcreate a node with dynamic id”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mihjé h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj* h²hh³jB h´Miubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj jKj jL‰jM‰jN‰uh1jÁh²hhj‘h³Nh´NubjP)�”}”(hŒg**Parameters** ``void`` no arguments **Return** icc_node pointer on success, or ERR_PTR() on error”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mmhj ubjœ)�”}”(hhh]”j¡)�”}”(hŒ``void`` no arguments ”h]”(j§)�”}”(hŒ``void``”h]”j­)�”}”(hj- h]”hŒvoid”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj+ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Khj' ubjÃ)�”}”(hhh]”hï)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jB h´KhjC ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj' ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jB h´Khj$ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj ubhï)�”}”(hŒ **Return**”h]”jZ)�”}”(hjh h]”hŒReturn”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjf ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Khj ubhï)�”}”(hŒ2icc_node pointer on success, or ERR_PTR() on error”h]”hŒ2icc_node pointer on success, or ERR_PTR() on error”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mkhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj‘h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_node_create (C function)”Œc.icc_node_create”hNt”auh1j°hj‘h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒ*struct icc_node * icc_node_create (int id)”h]”jÍ)�”}”(hŒ(struct icc_node *icc_node_create(int id)”h]”(jÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhj© h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.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|ubh)�”}”(hhh]”jü)�”}”(hŒicc_node”h]”hŒicc_node”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÉ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”jÎ Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj Œicc_node_create”sbŒc.icc_node_create”†”asbuh1hhj© h²hh³jº 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Œ )�”}”(hj� h]”hŒ*”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hj© h²hh³jº h´M|ubjö)�”}”(hŒicc_node_create”h]”jü)�”}”(hjê h]”hŒicc_node_create”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj© h²hh³jº h´M|ubj´ )�”}”(hŒ(int id)”h]”jº )�”}”(hŒint id”h]”(jÀ )�”}”(hŒint”h]”hŒint”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hj#ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj#ubjü)�”}”(hŒid”h]”hŒid”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hjubah}”(h]”h ]”h"]”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 ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³jº h´M|hj¢ h²hubj()�”}”(hhh]”hï)�”}”(hŒ create a node”h]”hŒ create a node”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M|hjjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj¢ h²hh³jº h´M|ubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj…jKj…jL‰jM‰jN‰uh1jÁh²hhj‘h³Nh´NubjP)�”}”(hŒd**Parameters** ``int id`` node id **Return** icc_node pointer on success, or ERR_PTR() on error”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hj�h]”hŒ Parameters”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M€hj‰ubjœ)�”}”(hhh]”j¡)�”}”(hŒ``int id`` node id ”h]”(j§)�”}”(hŒ ``int id``”h]”j­)�”}”(hj®h]”hŒint id”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M}hj¨ubjÃ)�”}”(hhh]”hï)�”}”(hŒnode id”h]”hŒnode id”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÃh´M}hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÃh´M}hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‰ubhï)�”}”(hŒ **Return**”h]”jZ)�”}”(hjéh]”hŒReturn”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mhj‰ubhï)�”}”(hŒ2icc_node pointer on success, or ERR_PTR() on error”h]”hŒ2icc_node pointer on success, or ERR_PTR() on error”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mhj‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj‘h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_node_destroy (C function)”Œc.icc_node_destroy”hNt”auh1j°hj‘h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒvoid icc_node_destroy (int id)”h]”jÍ)�”}”(hŒvoid icc_node_destroy(int id)”h]”(jÀ )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hj*h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.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Œicc_node_destroy”h]”jü)�”}”(hŒicc_node_destroy”h]”hŒicc_node_destroy”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjKubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj*h²hh³j<h´M�ubj´ )�”}”(hŒ(int id)”h]”jº )�”}”(hŒint id”h]”(jÀ )�”}”(hŒint”h]”hŒint”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hjgubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjgubjü)�”}”(hŒid”h]”hŒid”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hjcubah}”(h]”h ]”h"]”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 ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³j<h´M�hj#h²hubj()�”}”(hhh]”hï)�”}”(hŒdestroy a node”h]”hŒdestroy a node”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M�hj®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj#h²hh³j<h´M�ubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJjÉjKjÉjL‰jM‰jN‰uh1jÁh²hhj‘h³Nh´NubjP)�”}”(hŒ$**Parameters** ``int id`` node id”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hjÓh]”hŒ Parameters”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M”hjÍubjœ)�”}”(hhh]”j¡)�”}”(hŒ``int id`` node id”h]”(j§)�”}”(hŒ ``int id``”h]”j­)�”}”(hjòh]”hŒint id”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M–hjìubjÃ)�”}”(hhh]”hï)�”}”(hŒnode id”h]”hŒnode id”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M‘hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jh´M–hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÍubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj‘h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_node_set_name (C function)”Œc.icc_node_set_name”hNt”auh1j°hj‘h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒdint icc_node_set_name (struct icc_node *node, const struct icc_provider *provider, const char *name)”h]”jÍ)�”}”(hŒcint icc_node_set_name(struct icc_node *node, const struct icc_provider *provider, const char *name)”h]”(jÀ )�”}”(hŒint”h]”hŒint”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hjHh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M¬ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjHh²hh³jZh´M¬ubjö)�”}”(hŒicc_node_set_name”h]”jü)�”}”(hŒicc_node_set_name”h]”hŒicc_node_set_name”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjiubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhjHh²hh³jZh´M¬ubj´ )�”}”(hŒN(struct icc_node *node, const struct icc_provider *provider, const char *name)”h]”(jº )�”}”(hŒstruct icc_node *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Œicc_node”h]”hŒicc_node”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”j©Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj josbŒc.icc_node_set_name”†”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�ubjº )�”}”(hŒ#const struct icc_provider *provider”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÷ubjÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hjh²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Œ icc_provider”h]”hŒ icc_provider”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”j7Œmodname”NŒ classname”Njn jq )�”}”jt ]”jÃŒc.icc_node_set_name”†”asbuh1hhj÷ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj÷ubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hj÷ubjü)�”}”(hŒprovider”h]”hŒprovider”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hj�ubjº )�”}”(hŒconst char *name”h]”(jÓ)�”}”(hjýh]”hŒconst”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhjƒubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjƒubjÀ )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hjƒubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjƒubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hjƒubjü)�”}”(hŒname”h]”hŒname”…”�”}”(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Æuh1j³ hjHh²hh³jZh´M¬ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhjDh²hh³jZh´M¬ubah}”(h]”j?ah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³jZh´M¬hjAh²hubj()�”}”(hhh]”hï)�”}”(hŒ set node name”h]”hŒ set node name”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M¬hjòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hjAh²hh³jZh´M¬ubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj jKj jL‰jM‰jN‰uh1jÁh²hhj‘h³Nh´NubjP)�”}”(hŒÇ**Parameters** ``struct icc_node *node`` node ``const struct icc_provider *provider`` node provider ``const char *name`` node name **Return** 0 on success, or -ENOMEM on allocation failure”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hjh]”hŒ Parameters”…”�”}”(•hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M°hjubjœ)�”}”(hhh]”(j¡)�”}”(hŒ``struct icc_node *node`` node ”h]”(j§)�”}”(hŒ``struct icc_node *node``”h]”j­)�”}”(hj6h]”hŒstruct icc_node *node”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M­hj0ubjÃ)�”}”(hhh]”hï)�”}”(hŒnode”h]”hŒnode”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jKh´M­hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jKh´M­hj-ubj¡)�”}”(hŒ6``const struct icc_provider *provider`` node provider ”h]”(j§)�”}”(hŒ'``const struct icc_provider *provider``”h]”j­)�”}”(hjoh]”hŒ#const struct icc_provider *provider”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M®hjiubjÃ)�”}”(hhh]”hï)�”}”(hŒ node provider”h]”hŒ node provider”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j„h´M®hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j„h´M®hj-ubj¡)�”}”(hŒ``const char *name`` node name ”h]”(j§)�”}”(hŒ``const char *name``”h]”j­)�”}”(hj¨h]”hŒconst char *name”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M¯hj¢ubjÃ)�”}”(hhh]”hï)�”}”(hŒ node name”h]”hŒ node name”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j½h´M¯hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j½h´M¯hj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubhï)�”}”(hŒ **Return**”h]”jZ)�”}”(hjãh]”hŒReturn”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M±hjubhï)�”}”(hŒ.0 on success, or -ENOMEM on allocation failure”h]”hŒ.0 on success, or -ENOMEM on allocation failure”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M±hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj‘h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_link_nodes (C function)”Œc.icc_link_nodes”hNt”auh1j°hj‘h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒJint icc_link_nodes (struct icc_node *src_node, struct icc_node **dst_node)”h]”jÍ)�”}”(hŒIint icc_link_nodes(struct icc_node *src_node, struct icc_node **dst_node)”h]”(jÀ )�”}”(hŒint”h]”hŒint”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hj$h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´MÃubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj$h²hh³j6h´MÃubjö)�”}”(hŒicc_link_nodes”h]”jü)�”}”(hŒicc_link_nodes”h]”hŒicc_link_nodes”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjEubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj$h²hh³j6h´MÃubj´ )�”}”(hŒ7(struct icc_node *src_node, struct icc_node **dst_node)”h]”(jº )�”}”(hŒstruct icc_node *src_node”h]”(jÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhjaubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjaubh)�”}”(hhh]”jü)�”}”(hŒicc_node”h]”hŒicc_node”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”j…Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj jKsbŒc.icc_link_nodes”†”asbuh1hhjaubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjaubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hjaubjü)�”}”(hŒsrc_node”h]”hŒsrc_node”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hj]ubjº )�”}”(hŒstruct icc_node **dst_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Œicc_node”h]”hŒicc_node”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”j÷Œmodname”NŒ classname”Njn jq )�”}”jt ]”jŸŒc.icc_link_nodes”†”asbuh1hhjÓubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²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Œ*”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hjÓubjü)�”}”(hŒdst_node”h]”hŒdst_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Æuh1j³ hj$h²hh³j6h´MÃubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhj h²hh³j6h´MÃubah}”(h]”jah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³j6h´MÃhjh²hubj()�”}”(hhh]”hï)�”}”(hŒcreate link between two nodes”h]”hŒcreate link between two nodes”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´MÃhjbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hjh²hh³j6h´MÃubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj}jKj}jL‰jM‰jN‰uh1jÁh²hhj‘h³Nh´NubjP)�”}”(hXØ**Parameters** ``struct icc_node *src_node`` source node ``struct icc_node **dst_node`` destination node **Description** Create a link between two nodes. The nodes might belong to different interconnect providers and the **dst_node** might not exist (if the provider driver has not probed yet). So just create the **dst_node** and when the actual provider driver is probed, the rest of the node data is filled. **Return** 0 on success, or an error code otherwise”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hj‡h]”hŒ Parameters”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´MÇhj�ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ*``struct icc_node *src_node`` source node ”h]”(j§)�”}”(hŒ``struct icc_node *src_node``”h]”j­)�”}”(hj¦h]”hŒstruct icc_node *src_node”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´MÄhj ubjÃ)�”}”(hhh]”hï)�”}”(hŒ source node”h]”hŒ source node”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j»h´MÄhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j»h´MÄhj�ubj¡)�”}”(hŒ0``struct icc_node **dst_node`` destination node ”h]”(j§)�”}”(hŒ``struct icc_node **dst_node``”h]”j­)�”}”(hjßh]”hŒstruct icc_node **dst_node”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´MÅhjÙubjÃ)�”}”(hhh]”hï)�”}”(hŒdestination node”h]”hŒdestination node”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jôh´MÅhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jôh´MÅhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj�ubhï)�”}”(hŒ**Description**”h]”jZ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´MÇhj�ubhï)�”}”(hX!Create a link between two nodes. The nodes might belong to different interconnect providers and the **dst_node** might not exist (if the provider driver has not probed yet). So just create the **dst_node** and when the actual provider driver is probed, the rest of the node data is filled.”h]”(hŒdCreate a link between two nodes. The nodes might belong to different interconnect providers and the ”…”�”}”(hj0h²hh³Nh´NubjZ)�”}”(hŒ **dst_node**”h]”hŒdst_node”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj0ubhŒQ might not exist (if the provider driver has not probed yet). So just create the ”…”�”}”(hj0h²hh³Nh´NubjZ)�”}”(hŒ **dst_node**”h]”hŒdst_node”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj0ubhŒT and when the actual provider driver is probed, the rest of the node data is filled.”…”�”}”(hj0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´MÆhj�ubhï)�”}”(hŒ **Return**”h]”jZ)�”}”(hjeh]”hŒReturn”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´MÌhj�ubhï)�”}”(hŒ(0 on success, or an error code otherwise”h]”hŒ(0 on success, or an error code otherwise”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´MÍhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj‘h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_link_create (C function)”Œc.icc_link_create”hNt”auh1j°hj‘h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒ=int icc_link_create (struct icc_node *node, const int dst_id)”h]”jÍ)�”}”(hŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mhhj:ubjœ)�”}”(hhh]”j¡)�”}”(hŒW``struct icc_provider *provider`` the interconnect provider we are removing nodes from ”h]”(j§)�”}”(hŒ!``struct icc_provider *provider``”h]”j­)�”}”(hj_h]”hŒstruct icc_provider *provider”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´MehjYubjÃ)�”}”(hhh]”hï)�”}”(hŒ4the interconnect provider we are removing nodes from”h]”hŒ4the interconnect provider we are removing nodes from”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jth´Mehjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jth´MehjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj:ubhï)�”}”(hŒ **Return**”h]”jZ)�”}”(hjšh]”hŒReturn”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mghj:ubhï)�”}”(hŒ(0 on success, or an error code otherwise”h]”hŒ(0 on success, or an error code otherwise”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mghj:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj‘h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_provider_init (C function)”Œc.icc_provider_init”hNt”auh1j°hj‘h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒ6void icc_provider_init (struct icc_provider *provider)”h]”jÍ)�”}”(hŒ5void icc_provider_init(struct icc_provider *provider)”h]”(jÀ )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hjÛh²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mzubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjÛh²hh³jíh´Mzubjö)�”}”(hŒicc_provider_init”h]”jü)�”}”(hŒicc_provider_init”h]”hŒicc_provider_init”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjüubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhjÛh²hh³jíh´Mzubj´ )�”}”(hŒ(struct icc_provider *provider)”h]”jº )�”}”(hŒstruct icc_provider *provider”h]”(jÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhjubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjubh)�”}”(hhh]”jü)�”}”(hŒ icc_provider”h]”hŒ icc_provider”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”j<Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj jsbŒc.icc_provider_init”†”asbuh1hhjubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hjubjü)�”}”(hŒprovider”h]”hŒprovider”…”�”}”(hjuh²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Æuh1j³ hjÛh²hh³jíh´Mzubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhj×h²hh³jíh´Mzubah}”(h]”jÒah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³jíh´MzhjÔh²hubj()�”}”(hhh]”hï)�”}”(hŒ&initialize a new interconnect provider”h]”hŒ&initialize a new interconnect provider”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mzhjœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hjÔh²hh³jíh´Mzubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj·jKj·jL‰jM‰jN‰uh1jÁh²hhj‘h³Nh´NubjP)�”}”(hŒ¡**Parameters** ``struct icc_provider *provider`` the interconnect provider to initialize **Description** Must be called before adding nodes to the provider.”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hjÁh]”hŒ Parameters”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M~hj»ubjœ)�”}”(hhh]”j¡)�”}”(hŒJ``struct icc_provider *provider`` the interconnect provider to initialize ”h]”(j§)�”}”(hŒ!``struct icc_provider *provider``”h]”j­)�”}”(hjàh]”hŒstruct icc_provider *provider”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M{hjÚubjÃ)�”}”(hhh]”hï)�”}”(hŒ'the interconnect provider to initialize”h]”hŒ'the interconnect provider to initialize”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jõh´M{hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jõh´M{hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj»ubhï)�”}”(hŒ**Description**”h]”jZ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M}hj»ubhï)�”}”(hŒ3Must be called before adding nodes to the provider.”h]”hŒ3Must be called before adding nodes to the provider.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M|hj»ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj‘h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œ"icc_provider_register (C function)”Œc.icc_provider_register”hNt”auh1j°hj‘h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒ9int icc_provider_register (struct icc_provider *provider)”h]”jÍ)�”}”(hŒ8int icc_provider_register(struct icc_provider *provider)”h]”(jÀ )�”}”(hŒint”h]”hŒint”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hj\h²hh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mˆubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj\h²hh³jnh´Mˆubjö)�”}”(hŒicc_provider_register”h]”jü)�”}”(hŒicc_provider_register”h]”hŒicc_provider_register”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj}ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj\h²hh³jnh´Mˆubj´ )�”}”(hŒ(struct icc_provider *provider)”h]”jº )�”}”(hŒstruct icc_provider *provider”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Œ icc_provider”h]”hŒ icc_provider”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”j½Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj jƒsbŒc.icc_provider_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Œprovider”h]”hŒprovider”…”�”}”(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Æuh1j³ hj\h²hh³jnh´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhjXh²hh³jnh´Mˆubah}”(h]”jSah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³jnh´MˆhjUh²hubj()�”}”(hhh]”hï)�”}”(hŒ$register a new interconnect provider”h]”hŒ$register a new interconnect provider”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mˆhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hjUh²hh³jnh´Mˆubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj8jKj8jL‰jM‰jN‰uh1jÁh²hhj‘h³Nh´NubjP)�”}”(hŒ�**Parameters** ``struct icc_provider *provider`` the interconnect provider to register **Return** 0 on success, or an error code otherwise”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hjBh]”hŒ Parameters”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´MŒhj<ubjœ)�”}”(hhh]”j¡)�”}”(hŒH``struct icc_provider *provider`` the interconnect provider to register ”h]”(j§)�”}”(hŒ!``struct icc_provider *provider``”h]”j­)�”}”(hjah]”hŒstruct icc_provider *provider”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M‰hj[ubjÃ)�”}”(hhh]”hï)�”}”(hŒ%the interconnect provider to register”h]”hŒ%the interconnect provider to register”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jvh´M‰hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jvh´M‰hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj<ubhï)�”}”(hŒ **Return**”h]”jZ)�”}”(hjœh]”hŒReturn”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M‹hj<ubhï)�”}”(hŒ(0 on success, or an error code otherwise”h]”hŒ(0 on success, or an error code otherwise”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M‹hj<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj‘h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œ$icc_provider_deregister (C function)”Œc.icc_provider_deregister”hNt”auh1j°hj‘h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒ Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj j sbŒc.icc_provider_deregister”†”asbuh1hhj ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj ubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hj ubjü)�”}”(hŒprovider”h]”hŒprovider”…”�”}”(hjw 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Æ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 ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³jïh´M�hjÖh²hubj()�”}”(hhh]”hï)�”}”(hŒ#deregister an interconnect provider”h]”hŒ#deregister an interconnect provider”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M�hjž h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hjÖh²hh³jïh´M�ubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj¹ jKj¹ jL‰jM‰jN‰uh1jÁh²hhj‘h³Nh´NubjP)�”}”(hŒ[**Parameters** ``struct icc_provider *provider`` the interconnect provider to deregister”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hjà h]”hŒ Parameters”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÁ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M¡hj½ ubjœ)�”}”(hhh]”j¡)�”}”(hŒI``struct icc_provider *provider`` the interconnect provider to deregister”h]”(j§)�”}”(hŒ!``struct icc_provider *provider``”h]”j­)�”}”(hjâ h]”hŒstruct icc_provider *provider”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´M£hjÜ ubjÃ)�”}”(hhh]”hï)�”}”(hŒ'the interconnect provider to deregister”h]”hŒ'the interconnect provider to deregister”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:87: ./drivers/interconnect/core.c”h´Mžhjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÜ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j÷ h´M£hjÙ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj½ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj‘h²hh³Nh´Nubeh}”(h]”Œinterconnect-providers”ah ]”h"]”Œinterconnect providers”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KOubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒInterconnect consumers”h]”hŒInterconnect consumers”…”�”}”(hj.!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj+!h²hh³hÇh´K^ubhï)�”}”(hŒ´Interconnect consumers are the clients which use the interconnect APIs to get paths between endpoints and set their bandwidth/latency/QoS requirements for these interconnect paths.”h]”hŒ´Interconnect consumers are the clients which use the interconnect APIs to get paths between endpoints and set their bandwidth/latency/QoS requirements for these interconnect paths.”…”�”}”(hj``struct device *dev`` device pointer for the consumer device ”h]”(j§)�”}”(hŒ``struct device *dev``”h]”j­)�”}”(hjÔ"h]”hŒstruct device *dev”…”�”}”(hjÖ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjÒ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´MÔhjÎ"ubjÃ)�”}”(hhh]”hï)�”}”(hŒ&device pointer for the consumer device”h]”hŒ&device pointer for the consumer device”…”�”}”(hjí"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jé"h´MÔhjê"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjÎ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jé"h´MÔhjË"ubj¡)�”}”(hŒ$``int idx`` interconnect path index ”h]”(j§)�”}”(hŒ ``int idx``”h]”j­)�”}”(hj #h]”hŒint idx”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj #ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´MÕhj#ubjÃ)�”}”(hhh]”hï)�”}”(hŒinterconnect path index”h]”hŒinterconnect path index”…”�”}”(hj&#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j"#h´MÕhj##ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j"#h´MÕhjË"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¯"ubhï)�”}”(hŒ**Description**”h]”jZ)�”}”(hjH#h]”hŒ Description”…”�”}”(hjJ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjF#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M×hj¯"ubhï)�”}”(hXRThis function will search for a path between two endpoints and return an icc_path handle on success. Use icc_put() to release constraints when they are not needed anymore. If the interconnect API is disabled, NULL is returned and the consumer drivers will still build. Drivers are free to handle this specifically, but they don't have to.”h]”hXTThis function will search for a path between two endpoints and return an icc_path handle on success. Use icc_put() to release constraints when they are not needed anymore. If the interconnect API is disabled, NULL is returned and the consumer drivers will still build. Drivers are free to handle this specifically, but they don’t have to.”…”�”}”(hj^#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´MÖhj¯"ubhï)�”}”(hŒ **Return**”h]”jZ)�”}”(hjo#h]”hŒReturn”…”�”}”(hjq#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjm#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´MÝhj¯"ubhï)�”}”(hŒ‹icc_path pointer on success or ERR_PTR() on error. NULL is returned when the API is disabled or the "interconnects" DT property is missing.”h]”hŒ�icc_path pointer on success or ERR_PTR() on error. NULL is returned when the API is disabled or the “interconnectsâ€� DT property is missing.”…”�”}”(hj…#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´MÞhj¯"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj+!h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œof_icc_get (C function)”Œ c.of_icc_get”hNt”auh1j°hj+!h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒCstruct icc_path * of_icc_get (struct device *dev, const char *name)”h]”jÍ)�”}”(hŒAstruct icc_path *of_icc_get(struct device *dev, const char *name)”h]”(jÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hj´#h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhj°#h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M3ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ#h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj°#h²hh³jÁ#h´M3ubh)�”}”(hhh]”jü)�”}”(hŒicc_path”h]”hŒicc_path”…”�”}”(hjÓ#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÐ#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”jÕ#Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj Œ of_icc_get”sbŒ c.of_icc_get”†”asbuh1hhj°#h²hh³jÁ#h´M3ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô#h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj°#h²hh³jÁ#h´M3ubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hj°#h²hh³jÁ#h´M3ubjö)�”}”(hŒ of_icc_get”h]”jü)�”}”(hjñ#h]”hŒ of_icc_get”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj$ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj°#h²hh³jÁ#h´M3ubj´ )�”}”(hŒ&(struct device *dev, const char *name)”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”…”�”}”(hjL$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjI$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”jN$Œmodname”NŒ classname”Njn jq )�”}”jt ]”jï#Œ c.of_icc_get”†”asbuh1hhj*$ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj$h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj*$ubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hjx$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&$ubjº )�”}”(hŒconst char *name”h]”(jÓ)�”}”(hjýh]”hŒconst”…”�”}”(hjž$h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhjš$ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«$h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjš$ubjÀ )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¹$h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hjš$ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ$h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjš$ubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hjÕ$h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hjš$ubjü)�”}”(hŒname”h]”hŒname”…”�”}”(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Æuh1j³ hj°#h²hh³jÁ#h´M3ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhj¬#h²hh³jÁ#h´M3ubah}”(h]”j§#ah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³jÁ#h´M3hj©#h²hubj()�”}”(hhh]”hï)�”}”(hŒ.get a path handle from a DT node based on name”h]”hŒ.get a path handle from a DT node based on name”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M3hj %h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj©#h²hh³jÁ#h´M3ubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj$%jKj$%jL‰jM‰jN‰uh1jÁh²hhj+!h³Nh´NubjP)�”}”(hX|**Parameters** ``struct device *dev`` device pointer for the consumer device ``const char *name`` interconnect path name **Description** This function will search for a path between two endpoints and return an icc_path handle on success. Use icc_put() to release constraints when they are not needed anymore. If the interconnect API is disabled, NULL is returned and the consumer drivers will still build. Drivers are free to handle this specifically, but they don't have to. **Return** icc_path pointer on success or ERR_PTR() on error. NULL is returned when the API is disabled or the "interconnects" DT property is missing.”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hj.%h]”hŒ Parameters”…”�”}”(hj0%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj,%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M7hj(%ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ>``struct device *dev`` device pointer for the consumer device ”h]”(j§)�”}”(hŒ``struct device *dev``”h]”j­)�”}”(hjM%h]”hŒstruct device *dev”…”�”}”(hjO%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjK%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M4hjG%ubjÃ)�”}”(hhh]”hï)�”}”(hŒ&device pointer for the consumer device”h]”hŒ&device pointer for the consumer device”…”�”}”(hjf%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jb%h´M4hjc%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjG%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jb%h´M4hjD%ubj¡)�”}”(hŒ,``const char *name`` interconnect path name ”h]”(j§)�”}”(hŒ``const char *name``”h]”j­)�”}”(hj†%h]”hŒconst char *name”…”�”}”(hjˆ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj„%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M5hj€%ubjÃ)�”}”(hhh]”hï)�”}”(hŒinterconnect path name”h]”hŒinterconnect path name”…”�”}”(hjŸ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j›%h´M5hjœ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj€%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j›%h´M5hjD%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj(%ubhï)�”}”(hŒ**Description**”h]”jZ)�”}”(hjÁ%h]”hŒ Description”…”�”}”(hjÃ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj¿%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M7hj(%ubhï)�”}”(hXRThis function will search for a path between two endpoints and return an icc_path handle on success. Use icc_put() to release constraints when they are not needed anymore. If the interconnect API is disabled, NULL is returned and the consumer drivers will still build. Drivers are free to handle this specifically, but they don't have to.”h]”hXTThis function will search for a path between two endpoints and return an icc_path handle on success. Use icc_put() to release constraints when they are not needed anymore. If the interconnect API is disabled, NULL is returned and the consumer drivers will still build. Drivers are free to handle this specifically, but they don’t have to.”…”�”}”(hj×%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M6hj(%ubhï)�”}”(hŒ **Return**”h]”jZ)�”}”(hjè%h]”hŒReturn”…”�”}”(hjê%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjæ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M=hj(%ubhï)�”}”(hŒ‹icc_path pointer on success or ERR_PTR() on error. NULL is returned when the API is disabled or the "interconnects" DT property is missing.”h]”hŒ�icc_path pointer on success or ERR_PTR() on error. NULL is returned when the API is disabled or the “interconnectsâ€� DT property is missing.”…”�”}”(hjþ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M>hj(%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj+!h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_get (C function)”Œ c.icc_get”hNt”auh1j°hj+!h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒPstruct icc_path * icc_get (struct device *dev, const char *src, const char *dst)”h]”jÍ)�”}”(hŒNstruct icc_path *icc_get(struct device *dev, const char *src, const char *dst)”h]”(jÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hj-&h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhj)&h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´Mbubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;&h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj)&h²hh³j:&h´Mbubh)�”}”(hhh]”jü)�”}”(hŒicc_path”h]”hŒicc_path”…”�”}”(hjL&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjI&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”jN&Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj Œicc_get”sbŒ c.icc_get”†”asbuh1hhj)&h²hh³j:&h´Mbubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm&h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj)&h²hh³j:&h´MbubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hj{&h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hj)&h²hh³j:&h´Mbubjö)�”}”(hŒicc_get”h]”jü)�”}”(hjj&h]”hŒicc_get”…”�”}”(hjŒ&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjˆ&ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj)&h²hh³j:&h´Mbubj´ )�”}”(hŒ6(struct device *dev, const char *src, const char *dst)”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”jDŒreftype”jj Œ reftarget”jÇ&Œmodname”NŒ classname”Njn jq )�”}”jt ]”jh&Œ c.icc_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Œ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Ÿ&ubjº )�”}”(hŒconst char *src”h]”(jÓ)�”}”(hjýh]”hŒconst”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhj'ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$'h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj'ubjÀ )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj2'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Œ*”…”�”}”(hjN'h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hj'ubjü)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(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Œconst char *dst”h]”(jÓ)�”}”(hjýh]”hŒconst”…”�”}”(hjt'h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhjp'ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjp'ubjÀ )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hjp'ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjp'ubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hj«'h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hjp'ubjü)�”}”(hŒdst”h]”hŒdst”…”�”}”(hj¸'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjp'ubeh}”(h]”h ]”h"•]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hjŸ&ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³ hj)&h²hh³j:&h´Mbubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhj%&h²hh³j:&h´Mbubah}”(h]”j &ah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³j:&h´Mbhj"&h²hubj()�”}”(hhh]”hï)�”}”(hŒ'get a path handle between two endpoints”h]”hŒ'get a path handle between two endpoints”…”�”}”(hjâ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´Mbhjß'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj"&h²hh³j:&h´Mbubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJjú'jKjú'jL‰jM‰jN‰uh1jÁh²hhj+!h³Nh´NubjP)�”}”(hXÍ**Parameters** ``struct device *dev`` device pointer for the consumer device ``const char *src`` source node name ``const char *dst`` destination node name **Description** This function will search for a path between two endpoints and return an icc_path handle on success. Use icc_put() to release constraints when they are not needed anymore. **Return** icc_path pointer on success or ERR_PTR() on error. NULL is returned when the API is disabled.”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hj(h]”hŒ Parameters”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´Mfhjþ'ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ>``struct device *dev`` device pointer for the consumer device ”h]”(j§)�”}”(hŒ``struct device *dev``”h]”j­)�”}”(hj#(h]”hŒstruct device *dev”…”�”}”(hj%(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj!(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´Mchj(ubjÃ)�”}”(hhh]”hï)�”}”(hŒ&device pointer for the consumer device”h]”hŒ&device pointer for the consumer device”…”�”}”(hj<(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j8(h´Mchj9(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j8(h´Mchj(ubj¡)�”}”(hŒ%``const char *src`` source node name ”h]”(j§)�”}”(hŒ``const char *src``”h]”j­)�”}”(hj\(h]”hŒconst char *src”…”�”}”(hj^(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjZ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´MdhjV(ubjÃ)�”}”(hhh]”hï)�”}”(hŒsource node name”h]”hŒsource node name”…”�”}”(hju(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jq(h´Mdhjr(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjV(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jq(h´Mdhj(ubj¡)�”}”(hŒ*``const char *dst`` destination node name ”h]”(j§)�”}”(hŒ``const char *dst``”h]”j­)�”}”(hj•(h]”hŒconst char *dst”…”�”}”(hj—(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj“(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´Mehj�(ubjÃ)�”}”(hhh]”hï)�”}”(hŒdestination node name”h]”hŒdestination node name”…”�”}”(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&]”uh1j h³jª(h´Mehj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjþ'ubhï)�”}”(hŒ**Description**”h]”jZ)�”}”(hjÐ(h]”hŒ Description”…”�”}”(hjÒ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÎ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´Mghjþ'ubhï)�”}”(hŒ«This function will search for a path between two endpoints and return an icc_path handle on success. Use icc_put() to release constraints when they are not needed anymore.”h]”hŒ«This function will search for a path between two endpoints and return an icc_path handle on success. Use icc_put() to release constraints when they are not needed anymore.”…”�”}”(hjæ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´Mfhjþ'ubhï)�”}”(hŒ **Return**”h]”jZ)�”}”(hj÷(h]”hŒReturn”…”�”}”(hjù(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjõ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´Mjhjþ'ubhï)�”}”(hŒ]icc_path pointer on success or ERR_PTR() on error. NULL is returned when the API is disabled.”h]”hŒ]icc_path pointer on success or ERR_PTR() on error. NULL is returned when the API is disabled.”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´Mkhjþ'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj+!h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_set_tag (C function)”Œ c.icc_set_tag”hNt”auh1j°hj+!h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒ1void icc_set_tag (struct icc_path *path, u32 tag)”h]”jÍ)�”}”(hŒ0void icc_set_tag(struct icc_path *path, u32 tag)”h]”(jÀ )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj<)h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hj8)h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M“ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK)h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj8)h²hh³jJ)h´M“ubjö)�”}”(hŒ icc_set_tag”h]”jü)�”}”(hŒ icc_set_tag”h]”hŒ icc_set_tag”…”�”}”(hj])h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjY)ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj8)h²hh³jJ)h´M“ubj´ )�”}”(hŒ (struct icc_path *path, u32 tag)”h]”(jº )�”}”(hŒstruct icc_path *path”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Œicc_path”h]”hŒicc_path”…”�”}”(hj—)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj”)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”j™)Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj j_)sbŒ c.icc_set_tag”†”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Œpath”h]”hŒpath”…”�”}”(hjÒ)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhju)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hjq)ubjº )�”}”(hŒu32 tag”h]”(h)�”}”(hhh]”jü)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjî)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjë)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”jð)Œmodname”NŒ classname”Njn jq )�”}”jt ]”j³)Œ c.icc_set_tag”†”asbuh1hhjç)ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjç)ubjü)�”}”(hŒtag”h]”hŒtag”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjç)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hjq)ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³ hj8)h²hh³jJ)h´M“ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhj4)h²hh³jJ)h´M“ubah}”(h]”j/)ah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³jJ)h´M“hj1)h²hubj()�”}”(hhh]”hï)�”}”(hŒset an optional tag on a path”h]”hŒset an optional tag on a path”…”�”}”(hjD*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M“hjA*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj1)h²hh³jJ)h´M“ubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj\*jKj\*jL‰jM‰jN‰uh1jÁh²hhj+!h³Nh´NubjP)�”}”(hX **Parameters** ``struct icc_path *path`` the path we want to tag ``u32 tag`` the tag value **Description** This function allows consumers to append a tag to the requests associated with a path, so that a different aggregation could be done based on this tag.”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hjf*h]”hŒ Parameters”…”�”}”(hjh*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjd*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M—hj`*ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ2``struct icc_path *path`` the path we want to tag ”h]”(j§)�”}”(hŒ``struct icc_path *path``”h]”j­)�”}”(hj…*h]”hŒstruct icc_path *path”…”�”}”(hj‡*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjƒ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M”hj*ubjÃ)�”}”(hhh]”hï)�”}”(hŒthe path we want to tag”h]”hŒthe path we want to tag”…”�”}”(hjž*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jš*h´M”hj›*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jš*h´M”hj|*ubj¡)�”}”(hŒ``u32 tag`` the tag value ”h]”(j§)�”}”(hŒ ``u32 tag``”h]”j­)�”}”(hj¾*h]”hŒu32 tag”…”�”}”(hjÀ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj¼*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M•hj¸*ubjÃ)�”}”(hhh]”hï)�”}”(hŒ the tag value”h]”hŒ the tag 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&]”uh1j h³jÓ*h´M•hj|*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj`*ubhï)�”}”(hŒ**Description**”h]”jZ)�”}”(hjù*h]”hŒ Description”…”�”}”(hjû*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj÷*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M—hj`*ubhï)�”}”(hŒ—This function allows consumers to append a tag to the requests associated with a path, so that a different aggregation could be done based on this tag.”h]”hŒ—This function allows consumers to append a tag to the requests associated with a path, so that a different aggregation could be done based on this tag.”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M–hj`*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj+!h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_get_name (C function)”Œc.icc_get_name”hNt”auh1j°hj+!h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒ1const char * icc_get_name (struct icc_path *path)”h]”jÍ)�”}”(hŒ/const char *icc_get_name(struct icc_path *path)”h]”(jÓ)�”}”(hjýh]”hŒconst”…”�”}”(hj>+h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhj:+h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M«ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL+h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj:+h²hh³jK+h´M«ubjÀ )�”}”(hŒchar”h]”hŒchar”…”�”}”(hjZ+h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hj:+h²hh³jK+h´M«ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh+h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj:+h²hh³jK+h´M«ubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hjv+h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hj:+h²hh³jK+h´M«ubjö)�”}”(hŒ icc_get_name”h]”jü)�”}”(hŒ icc_get_name”h]”hŒ icc_get_name”…”�”}”(hj‡+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjƒ+ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj:+h²hh³jK+h´M«ubj´ )�”}”(hŒ(struct icc_path *path)”h]”jº )�”}”(hŒstruct icc_path *path”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Œicc_path”h]”hŒicc_path”…”�”}”(hjÁ+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¾+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”jÃ+Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj j‰+sbŒc.icc_get_name”†”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Œpath”h]”hŒpath”…”�”}”(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Æuh1j³ hj:+h²hh³jK+h´M«ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhj6+h²hh³jK+h´M«ubah}”(h]”j1+ah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³jK+h´M«hj3+h²hubj()�”}”(hhh]”hï)�”}”(hŒGet name of the icc path”h]”hŒGet name of the icc path”…”�”}”(hj&,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M«hj#,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj3+h²hh³jK+h´M«ubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj>,jKj>,jL‰jM‰jN‰uh1jÁh²hhj+!h³Nh´NubjP)�”}”(hŒÚ**Parameters** ``struct icc_path *path`` interconnect path **Description** This function is used by an interconnect consumer to get the name of the icc path. Returns a valid pointer on success, or NULL otherwise.”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hjH,h]”hŒ Parameters”…”�”}”(hjJ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjF,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M¯hjB,ubjœ)�”}”(hhh]”j¡)�”}”(hŒ,``struct icc_path *path`` interconnect path ”h]”(j§)�”}”(hŒ``struct icc_path *path``”h]”j­)�”}”(hjg,h]”hŒstruct icc_path *path”…”�”}”(hji,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hje,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M¬hja,ubjÃ)�”}”(hhh]”hï)�”}”(hŒinterconnect path”h]”hŒinterconnect path”…”�”}”(hj€,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j|,h´M¬hj},ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhja,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j|,h´M¬hj^,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjB,ubhï)�”}”(hŒ**Description**”h]”jZ)�”}”(hj¢,h]”hŒ Description”…”�”}”(hj¤,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M®hjB,ubhï)�”}”(hŒRThis function is used by an interconnect consumer to get the name of the icc path.”h]”hŒRThis function is used by an interconnect consumer to get the name of the icc path.”…”�”}”(hj¸,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M­hjB,ubhï)�”}”(hŒ6Returns a valid pointer on success, or NULL otherwise.”h]”hŒ6Returns a valid pointer on success, or NULL otherwise.”…”�”}”(hjÇ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M°hjB,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj+!h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_set_bw (C function)”Œ c.icc_set_bw”hNt”auh1j°hj+!h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒ?int icc_set_bw (struct icc_path *path, u32 avg_bw, u32 peak_bw)”h]”jÍ)�”}”(hŒ>int icc_set_bw(struct icc_path *path, u32 avg_bw, u32 peak_bw)”h]”(jÀ )�”}”(hŒint”h]”hŒint”…”�”}”(hjö,h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hjò,h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.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Œ icc_set_bw”h]”jü)�”}”(hŒ icc_set_bw”h]”hŒ icc_set_bw”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj-ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhjò,h²hh³j-h´M½ubj´ )�”}”(hŒ0(struct icc_path *path, u32 avg_bw, u32 peak_bw)”h]”(jº )�”}”(hŒstruct icc_path *path”h]”(jÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hj3-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Œicc_path”h]”hŒicc_path”…”�”}”(hjQ-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjN-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”jS-Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj j-sbŒ c.icc_set_bw”†”asbuh1hhj/-ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq-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Œpath”h]”hŒpath”…”�”}”(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Œ u32 avg_bw”h]”(h)�”}”(hhh]”jü)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj¨-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¥-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”jª-Œmodname”NŒ classname”Njn jq )�”}”jt ]”jm-Œ c.icc_set_bw”†”asbuh1hhj¡-ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ-h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj¡-ubjü)�”}”(hŒavg_bw”h]”hŒavg_bw”…”�”}”(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Œ u32 peak_bw”h]”(h)�”}”(hhh]”jü)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjð-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjí-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”jò-Œmodname”NŒ classname”Njn jq )�”}”jt ]”jm-Œ c.icc_set_bw”†”asbuh1hhjé-ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjé-ubjü)�”}”(hŒpeak_bw”h]”hŒpeak_bw”…”�”}”(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Æ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 ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³j-h´M½hjë,h²hubj()�”}”(hhh]”hï)�”}”(hŒ1set bandwidth constraints on an interconnect path”h]”hŒ1set bandwidth constraints on an interconnect path”…”�”}”(hjF.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M½hjC.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hjë,h²hh³j-h´M½ubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj^.jKj^.jL‰jM‰jN‰uh1jÁh²hhj+!h³Nh´NubjP)�”}”(hX§**Parameters** ``struct icc_path *path`` interconnect path ``u32 avg_bw`` average bandwidth in kilobytes per second ``u32 peak_bw`` peak bandwidth in kilobytes per second **Description** This function is used by an interconnect consumer to express its own needs in terms of bandwidth for a previously requested path between two endpoints. The requests are aggregated and each node is updated accordingly. The entire path is locked by a mutex to ensure that the set() is completed. The **path** can be NULL when the "interconnects" DT properties is missing, which will mean that no constraints will be set. Returns 0 on success, or an appropriate error code otherwise.”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hjh.h]”hŒ Parameters”…”�”}”(hjj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjf.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´MÁhjb.ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ,``struct icc_path *path`` interconnect path ”h]”(j§)�”}”(hŒ``struct icc_path *path``”h]”j­)�”}”(hj‡.h]”hŒstruct icc_path *path”…”�”}”(hj‰.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj….ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M¾hj�.ubjÃ)�”}”(hhh]”hï)�”}”(hŒinterconnect path”h]”hŒinterconnect path”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jœ.h´M¾hj�.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj�.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jœ.h´M¾hj~.ubj¡)�”}”(hŒ9``u32 avg_bw`` average bandwidth in kilobytes per second ”h]”(j§)�”}”(hŒ``u32 avg_bw``”h]”j­)�”}”(hjÀ.h]”hŒ u32 avg_bw”…”�”}”(hjÂ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj¾.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M¿hjº.ubjÃ)�”}”(hhh]”hï)�”}”(hŒ)average bandwidth in kilobytes per second”h]”hŒ)average bandwidth in kilobytes per second”…”�”}”(hjÙ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÕ.h´M¿hjÖ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjº.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÕ.h´M¿hj~.ubj¡)�”}”(hŒ7``u32 peak_bw`` peak bandwidth in kilobytes per second ”h]”(j§)�”}”(hŒ``u32 peak_bw``”h]”j­)�”}”(hjù.h]”hŒ u32 peak_bw”…”�”}”(hjû.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj÷.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´MÀhjó.ubjÃ)�”}”(hhh]”hï)�”}”(hŒ&peak bandwidth in kilobytes per second”h]”hŒ&peak bandwidth in kilobytes per second”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j/h´MÀhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjó.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j/h´MÀhj~.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjb.ubhï)�”}”(hŒ**Description**”h]”jZ)�”}”(hj4/h]”hŒ Description”…”�”}”(hj6/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj2/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´MÂhjb.ubhï)�”}”(hX¢This function is used by an interconnect consumer to express its own needs in terms of bandwidth for a previously requested path between two endpoints. The requests are aggregated and each node is updated accordingly. The entire path is locked by a mutex to ensure that the set() is completed. The **path** can be NULL when the "interconnects" DT properties is missing, which will mean that no constraints will be set.”h]”(hX*This function is used by an interconnect consumer to express its own needs in terms of bandwidth for a previously requested path between two endpoints. The requests are aggregated and each node is updated accordingly. The entire path is locked by a mutex to ensure that the set() is completed. The ”…”�”}”(hjJ/h²hh³Nh´NubjZ)�”}”(hŒ**path**”h]”hŒpath”…”�”}”(hjR/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjJ/ubhŒt can be NULL when the “interconnectsâ€� DT properties is missing, which will mean that no constraints will be set.”…”�”}”(hjJ/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´MÁhjb.ubhï)�”}”(hŒ=Returns 0 on success, or an appropriate error code otherwise.”h]”hŒ=Returns 0 on success, or an appropriate error code otherwise.”…”�”}”(hjk/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´MÈhjb.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj+!h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_put (C function)”Œ c.icc_put”hNt”auh1j°hj+!h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒ$void icc_put (struct icc_path *path)”h]”jÍ)�”}”(hŒ#void icc_put(struct icc_path *path)”h]”(jÀ )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjš/h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hj–/h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.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Œicc_put”h]”jü)�”}”(hŒicc_put”h]”hŒicc_put”…”�”}”(hj»/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj·/ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj–/h²hh³j¨/h´M"ubj´ )�”}”(hŒ(struct icc_path *path)”h]”jº )�”}”(hŒstruct icc_path *path”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Œicc_path”h]”hŒicc_path”…”�”}”(hjõ/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjò/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”j÷/Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj j½/sbŒ c.icc_put”†”asbuh1hhjÓ/ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjÓ/ubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hj#0h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hjÓ/ubjü)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj00h²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Æ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 ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³j¨/h´M"hj�/h²hubj()�”}”(hhh]”hï)�”}”(hŒ%release the reference to the icc_path”h]”hŒ%release the reference to the icc_path”…”�”}”(hjZ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M"hjW0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj�/h²hh³j¨/h´M"ubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJjr0jKjr0jL‰jM‰jN‰uh1jÁh²hhj+!h³Nh´NubjP)�”}”(hŒÐ**Parameters** ``struct icc_path *path`` interconnect path **Description** Use this function to release the constraints on a path when the path is no longer needed. The constraints will be re-aggregated.”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hj|0h]”hŒ Parameters”…”�”}”(hj~0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjz0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M&hjv0ubjœ)�”}”(hhh]”j¡)�”}”(hŒ,``struct icc_path *path`` interconnect path ”h]”(j§)�”}”(hŒ``struct icc_path *path``”h]”j­)�”}”(hj›0h]”hŒstruct icc_path *path”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj™0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M#hj•0ubjÃ)�”}”(hhh]”hï)�”}”(hŒinterconnect path”h]”hŒinterconnect path”…”�”}”(hj´0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j°0h´M#hj±0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj•0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j°0h´M#hj’0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjv0ubhï)�”}”(hŒ**Description**”h]”jZ)�”}”(hjÖ0h]”hŒ Description”…”�”}”(hjØ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÔ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M%hjv0ubhï)�”}”(hŒ€Use this function to release the constraints on a path when the path is no longer needed. The constraints will be re-aggregated.”h]”hŒ€Use this function to release the constraints on a path when the path is no longer needed. The constraints will be re-aggregated.”…”�”}”(hjì0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:100: ./drivers/interconnect/core.c”h´M$hjv0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj+!h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œof_icc_bulk_get (C function)”Œc.of_icc_bulk_get”hNt”auh1j°hj+!h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒTint of_icc_bulk_get (struct device *dev, int num_paths, struct icc_bulk_data *paths)”h]”jÍ)�”}”(hŒSint of_icc_bulk_get(struct device *dev, int num_paths, struct icc_bulk_data *paths)”h]”(jÀ )�”}”(hŒint”h]”hŒint”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hj1h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´Kubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*1h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj1h²hh³j)1h´Kubjö)�”}”(hŒof_icc_bulk_get”h]”jü)�”}”(hŒof_icc_bulk_get”h]”hŒof_icc_bulk_get”…”�”}”(hj<1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj81ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj1h²hh³j)1h´Kubj´ )�”}”(hŒ@(struct device *dev, int num_paths, struct icc_bulk_data *paths)”h]”(jº )�”}”(hŒstruct device *dev”h]”(jÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hjX1h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhjT1ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje1h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjT1ubh)�”}”(hhh]”jü)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjv1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjs1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”jx1Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj j>1sbŒc.of_icc_bulk_get”†”asbuh1hhjT1ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–1h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjT1ubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hj¤1h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hjT1ubjü)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj±1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjT1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hjP1ubjº )�”}”(hŒ int num_paths”h]”(jÀ )�”}”(hŒint”h]”hŒint”…”�”}”(hjÊ1h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hjÆ1ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ1h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjÆ1ubjü)�”}”(hŒ num_paths”h]”hŒ num_paths”…”�”}”(hjæ1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÆ1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hjP1ubjº )�”}”(hŒstruct icc_bulk_data *paths”h]”(jÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hjÿ1h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhjû1ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjû1ubh)�”}”(hhh]”jü)�”}”(hŒ icc_bulk_data”h]”hŒ icc_bulk_data”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”j2Œmodname”NŒ classname”Njn jq )�”}”jt ]”j’1Œc.of_icc_bulk_get”†”asbuh1hhjû1ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;2h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjû1ubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hjI2h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hjû1ubjü)�”}”(hŒpaths”h]”hŒpaths”…”�”}”(hjV2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjû1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hjP1ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³ hj1h²hh³j)1h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhj1h²hh³j)1h´Kubah}”(h]”j1ah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³j)1h´Khj1h²hubj()�”}”(hhh]”hï)�”}”(hŒget interconnect paths”h]”hŒget interconnect paths”…”�”}”(hj€2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´Khj}2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj1h²hh³j)1h´Kubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj˜2jKj˜2jL‰jM‰jN‰uh1jÁh²hhj+!h³Nh´NubjP)�”}”(hX**Parameters** ``struct device *dev`` the device requesting the path ``int num_paths`` the number of icc_bulk_data ``struct icc_bulk_data *paths`` the table with the paths we want to get **Description** Returns 0 on success or negative errno otherwise.”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hj¢2h]”hŒ Parameters”…”�”}”(hj¤2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj 2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K hjœ2ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ6``struct device *dev`` the device requesting the path ”h]”(j§)�”}”(hŒ``struct device *dev``”h]”j­)�”}”(hjÁ2h]”hŒstruct device *dev”…”�”}”(hjÃ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj¿2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K hj»2ubjÃ)�”}”(hhh]”hï)�”}”(hŒthe device requesting the path”h]”hŒthe device requesting the path”…”�”}”(hjÚ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÖ2h´K hj×2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj»2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÖ2h´K hj¸2ubj¡)�”}”(hŒ.``int num_paths`` the number of icc_bulk_data ”h]”(j§)�”}”(hŒ``int num_paths``”h]”j­)�”}”(hjú2h]”hŒ int num_paths”…”�”}”(hjü2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjø2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K hjô2ubjÃ)�”}”(hhh]”hï)�”}”(hŒthe number of icc_bulk_data”h]”hŒthe number of icc_bulk_data”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j3h´K hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjô2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j3h´K hj¸2ubj¡)�”}”(hŒH``struct icc_bulk_data *paths`` the table with the paths we want to get ”h]”(j§)�”}”(hŒ``struct icc_bulk_data *paths``”h]”j­)�”}”(hj33h]”hŒstruct icc_bulk_data *paths”…”�”}”(hj53h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj13ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K hj-3ubjÃ)�”}”(hhh]”hï)�”}”(hŒ'the table with the paths we want to get”h]”hŒ'the table with the paths we want to get”…”�”}”(hjL3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jH3h´K hjI3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj-3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jH3h´K hj¸2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjœ2ubhï)�”}”(hŒ**Description**”h]”jZ)�”}”(hjn3h]”hŒ Description”…”�”}”(hjp3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjl3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K hjœ2ubhï)�”}”(hŒ1Returns 0 on success or negative errno otherwise.”h]”hŒ1Returns 0 on success or negative errno otherwise.”…”�”}”(hj„3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K hjœ2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj+!h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_bulk_put (C function)”Œc.icc_bulk_put”hNt”auh1j°hj+!h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒ>void icc_bulk_put (int num_paths, struct icc_bulk_data *paths)”h]”jÍ)�”}”(hŒ=void icc_bulk_put(int num_paths, struct icc_bulk_data *paths)”h]”(jÀ )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³3h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hj¯3h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K*ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ3h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj¯3h²hh³jÁ3h´K*ubjö)�”}”(hŒ icc_bulk_put”h]”jü)�”}”(hŒ icc_bulk_put”h]”hŒ icc_bulk_put”…”�”}”(hjÔ3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÐ3ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhj¯3h²hh³jÁ3h´K*ubj´ )�”}”(hŒ,(int num_paths, struct icc_bulk_data *paths)”h]”(jº )�”}”(hŒ int num_paths”h]”(jÀ )�”}”(hŒint”h]”hŒint”…”�”}”(hjð3h²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ì3ubjü)�”}”(hŒ num_paths”h]”hŒ num_paths”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjì3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hjè3ubjº )�”}”(hŒstruct icc_bulk_data *paths”h]”(jÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hj%4h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhj!4ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj24h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj!4ubh)�”}”(hhh]”jü)�”}”(hŒ icc_bulk_data”h]”hŒ icc_bulk_data”…”�”}”(hjC4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj@4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”jE4Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj jÖ3sbŒc.icc_bulk_put”†”asbuh1hhj!4ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc4h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähj!4ubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hjq4h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hj!4ubjü)�”}”(hŒpaths”h]”hŒpaths”…”�”}”(hj~4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj!4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hjè3ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³ hj¯3h²hh³jÁ3h´K*ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhj«3h²hh³jÁ3h´K*ubah}”(h]”j¦3ah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³jÁ3h´K*hj¨3h²hubj()�”}”(hhh]”hï)�”}”(hŒ put a list of interconnect paths”h]”hŒ put a list of interconnect paths”…”�”}”(hj¨4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K*hj¥4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj¨3h²hh³jÁ3h´K*ubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJjÀ4jKjÀ4jL‰jM‰jN‰uh1jÁh²hhj+!h³Nh´NubjP)�”}”(hŒ“**Parameters** ``int num_paths`` the number of icc_bulk_data ``struct icc_bulk_data *paths`` the icc_bulk_data table with the paths being put”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hjÊ4h]”hŒ Parameters”…”�”}”(hjÌ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÈ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K.hjÄ4ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ.``int num_paths`` the number of icc_bulk_data ”h]”(j§)�”}”(hŒ``int num_paths``”h]”j­)�”}”(hjé4h]”hŒ int num_paths”…”�”}”(hjë4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjç4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K+hjã4ubjÃ)�”}”(hhh]”hï)�”}”(hŒthe number of icc_bulk_data”h]”hŒthe number of icc_bulk_data”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jþ4h´K+hjÿ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhjã4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jþ4h´K+hjà4ubj¡)�”}”(hŒP``struct icc_bulk_data *paths`` the icc_bulk_data table with the paths being put”h]”(j§)�”}”(hŒ``struct icc_bulk_data *paths``”h]”j­)�”}”(hj"5h]”hŒstruct icc_bulk_data *paths”…”�”}”(hj$5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj 5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K-hj5ubjÃ)�”}”(hhh]”hï)�”}”(hŒ0the icc_bulk_data table with the paths being put”h]”hŒ0the icc_bulk_data table with the paths being put”…”�”}”(hj;5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K,hj85ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j75h´K-hjà4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÄ4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jOhj+!h²hh³Nh´Nubj±)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j½Œicc_bulk_set_bw (C function)”Œc.icc_bulk_set_bw”hNt”auh1j°hj+!h²hh³Nh´NubjÂ)�”}”(hhh]”(jÇ)�”}”(hŒFint icc_bulk_set_bw (int num_paths, const struct icc_bulk_data *paths)”h]”jÍ)�”}”(hŒEint icc_bulk_set_bw(int num_paths, const struct icc_bulk_data *paths)”h]”(jÀ )�”}”(hŒint”h]”hŒint”…”�”}”(hj|5h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hjx5h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K8ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹5h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjx5h²hh³jŠ5h´K8ubjö)�”}”(hŒicc_bulk_set_bw”h]”jü)�”}”(hŒicc_bulk_set_bw”h]”hŒicc_bulk_set_bw”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj™5ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jõhjx5h²hh³jŠ5h´K8ubj´ )�”}”(hŒ2(int num_paths, const struct icc_bulk_data *paths)”h]”(jº )�”}”(hŒ int num_paths”h]”(jÀ )�”}”(hŒint”h]”hŒint”…”�”}”(hj¹5h²hh³Nh´Nubah}”(h]”h ]”jÌ ah"]”h$]”h&]”uh1j¿ hjµ5ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ5h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjµ5ubjü)�”}”(hŒ num_paths”h]”hŒ num_paths”…”�”}”(hjÕ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjµ5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hj±5ubjº )�”}”(hŒ!const struct icc_bulk_data *paths”h]”(jÓ)�”}”(hjýh]”hŒconst”…”�”}”(hjî5h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhjê5ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû5h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjê5ubjÓ)�”}”(hjÖh]”hŒstruct”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”jßah"]”h$]”h&]”uh1jÒhjê5ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjê5ubh)�”}”(hhh]”jü)�”}”(hŒ icc_bulk_data”h]”hŒ icc_bulk_data”…”�”}”(hj'6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj$6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jDŒreftype”jj Œ reftarget”j)6Œmodname”NŒ classname”Njn jq )�”}”jt ]”jw )�”}”jj jŸ5sbŒc.icc_bulk_set_bw”†”asbuh1hhjê5ubjå)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG6h²hh³Nh´Nubah}”(h]”h ]”jñah"]”h$]”h&]”uh1jähjê5ubjŒ )�”}”(hj� h]”hŒ*”…”�”}”(hjU6h²hh³Nh´Nubah}”(h]”h ]”j˜ ah"]”h$]”h&]”uh1j‹ hjê5ubjü)�”}”(hŒpaths”h]”hŒpaths”…”�”}”(hjb6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjê5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j¹ hj±5ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³ hjx5h²hh³jŠ5h´K8ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jÌjjhjt5h²hh³jŠ5h´K8ubah}”(h]”jo5ah ]”(jj eh"]”h$]”h&]”j$ˆj%)j&huh1jÆh³jŠ5h´K8hjq5h²hubj()�”}”(hhh]”hï)�”}”(hŒset bandwidth to a set of paths”h]”hŒset bandwidth to a set of paths”…”�”}”(hjŒ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´K8hj‰6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hjq5h²hh³jŠ5h´K8ubeh}”(h]”h ]”(jDŒfunction”eh"]”h$]”h&]”jIjDjJj¤6jKj¤6jL‰jM‰jN‰uh1jÁh²hhj+!h³Nh´NubjP)�”}”(hŒç**Parameters** ``int num_paths`` the number of icc_bulk_data ``const struct icc_bulk_data *paths`` the icc_bulk_data table containing the paths and bandwidth **Description** Returns 0 on success or negative errno otherwise.”h]”(hï)�”}”(hŒ**Parameters**”h]”jZ)�”}”(hj®6h]”hŒ Parameters”…”�”}”(hj°6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj¬6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/interconnect:105: ./drivers/interconnect/bulk.c”h´Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Knhjû=h²hubhï)�”}”(hŒ8``/sys/kernel/debug/interconnect/interconnect_summary``:”h]”(j­)�”}”(hŒ7``/sys/kernel/debug/interconnect/interconnect_summary``”h]”hŒ3/sys/kernel/debug/interconnect/interconnect_summary”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj>ubhŒ:”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Krhjû=h²hubhï)�”}”(hŒ•Show all interconnect nodes in the system with their aggregated bandwidth request. Indented under each node show bandwidth requests from each device.”h]”hŒ•Show all interconnect nodes in the system with their aggregated bandwidth request. Indented under each node show bandwidth requests from each device.”…”�”}”(hj6>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kthjû=h²hubhï)�”}”(hŒ6``/sys/kernel/debug/interconnect/interconnect_graph``:”h]”(j­)�”}”(hŒ5``/sys/kernel/debug/interconnect/interconnect_graph``”h]”hŒ1/sys/kernel/debug/interconnect/interconnect_graph”…”�”}”(hjH>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjD>ubhŒ:”…”�”}”(hjD>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kwhjû=h²hubhï)�”}”(hXShow the interconnect graph in the graphviz dot format. It shows all interconnect nodes and links in the system and groups together nodes from the same provider as subgraphs. The format is human-readable and can also be piped through dot to generate diagrams in many graphical formats::”h]”hXShow the interconnect graph in the graphviz dot format. It shows all interconnect nodes and links in the system and groups together nodes from the same provider as subgraphs. The format is human-readable and can also be piped through dot to generate diagrams in many graphical formats:”…”�”}”(hj`>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kyhjû=h²hubj)�”}”(hŒf$ cat /sys/kernel/debug/interconnect/interconnect_graph | \ dot -Tsvg > interconnect_graph.svg”h]”hŒf$ cat /sys/kernel/debug/interconnect/interconnect_graph | \ dot -Tsvg > interconnect_graph.svg”…”�”}”hjn>sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´K~hjû=h²hubhï)�”}”(hX%The ``test-client`` directory provides interfaces for issuing BW requests to any arbitrary path. Note that for safety reasons, this feature is disabled by default without a Kconfig to enable it. Enabling it requires code changes to ``#define INTERCONNECT_ALLOW_WRITE_DEBUGFS``. Example usage::”h]”(hŒThe ”…”�”}”(hj|>h²hh³Nh´Nubj­)�”}”(hŒ``test-client``”h]”hŒ test-client”…”�”}”(hj„>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj|>ubhŒÕ directory provides interfaces for issuing BW requests to any arbitrary path. Note that for safety reasons, this feature is disabled by default without a Kconfig to enable it. Enabling it requires code changes to ”…”�”}”(hj|>h²hh³Nh´Nubj­)�”}”(hŒ,``#define INTERCONNECT_ALLOW_WRITE_DEBUGFS``”h]”hŒ(#define INTERCONNECT_ALLOW_WRITE_DEBUGFS”…”�”}”(hj–>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj|>ubhŒ. Example usage:”…”�”}”(hj|>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K�hjû=h²hubj)�”}”(hX'cd /sys/kernel/debug/interconnect/test-client/ # Configure node endpoints for the path from CPU to DDR on # qcom/sm8550. echo chm_apps > src_node echo ebi > dst_node # Get path between src_node and dst_node. This is only # necessary after updating the node endpoints. echo 1 > get # Set desired BW to 1GBps avg and 2GBps peak. echo 1000000 > avg_bw echo 2000000 > peak_bw # Vote for avg_bw and peak_bw on the latest path from "get". # Voting for multiple paths is possible by repeating this # process for different nodes endpoints. echo 1 > commit”h]”hX'cd /sys/kernel/debug/interconnect/test-client/ # Configure node endpoints for the path from CPU to DDR on # qcom/sm8550. echo chm_apps > src_node echo ebi > dst_node # Get path between src_node and dst_node. This is only # necessary after updating the node endpoints. echo 1 > get # Set desired BW to 1GBps avg and 2GBps peak. echo 1000000 > avg_bw echo 2000000 > peak_bw # Vote for avg_bw and peak_bw on the latest path from "get". # Voting for multiple paths is possible by repeating this # process for different nodes endpoints. echo 1 > commit”…”�”}”hj®>sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´K†hjû=h²hubeh}”(h]”Œinterconnect-debugfs-interfaces”ah ]”h"]”Œinterconnect debugfs interfaces”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Klubeh}”(h]”Œ%generic-system-interconnect-subsystem”ah ]”h"]”Œ%generic system interconnect subsystem”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”jï>Œ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É>jÆ>j/j,jŽj‹j(!j%!jø=jõ=jÁ>j¾>uŒ nametypes”}”(jÉ>‰j/‰jމj(!‰jø=‰jÁ>‰uh}”(jÆ>hÊj,hÝj‹j2j%!j‘j¿jÈj4j9jvj{jjj( j- j  j¥ j!j&j?jDjj j�j¢jòj÷jöjûjQjVjÒj×jSjXjÔjÙjõ=j+!jV!j[!j§#j¬#j &j%&j/)j4)j1+j6+jé,jî,j�/j’/j1j1j¦3j«3jo5jt5jy7j~7jƒ9jˆ9jg;jl;j¾>jû=uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.