sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget)/translations/zh_CN/devicetree/kernel-apimodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/zh_TW/devicetree/kernel-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/it_IT/devicetree/kernel-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ja_JP/devicetree/kernel-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ko_KR/devicetree/kernel-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/pt_BR/devicetree/kernel-apimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/sp_SP/devicetree/kernel-apimodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhC/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api.rsthKubhtarget)}(h.. _devicetree:h]h}(h]h ]h"]h$]h&]refid devicetreeuh1hhKhhhhhhubhsection)}(hhh](htitle)}(hDeviceTree Kernel APIh]hDeviceTree Kernel API}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hCore functionsh]hCore functions}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleof_find_all_nodes (C function)c.of_find_all_nodeshNtauh1hhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(hAstruct device_node * of_find_all_nodes (struct device_node *prev)h]hdesc_signature_line)}(h?struct device_node *of_find_all_nodes(struct device_node *prev)h](hdesc_sig_keyword)}(hstructh]hstruct}(hj hhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubhdesc_sig_space)}(h h]h }(hj2hhhNhNubah}(h]h ]wah"]h$]h&]uh1j0hjhhhj/hMubh)}(hhh]h desc_sig_name)}(h device_nodeh]h device_node}(hjFhhhNhNubah}(h]h ]nah"]h$]h&]uh1jDhjAubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetjHmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]jc ASTIdentifier)}j^of_find_all_nodessbc.of_find_all_nodesasbuh1hhjhhhj/hMubj1)}(h h]h }(hjqhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj/hMubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjhhhj/hMubh desc_name)}(hof_find_all_nodesh]jE)}(hjnh]hof_find_all_nodes}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhj/hMubhdesc_parameterlist)}(h(struct device_node *prev)h]hdesc_parameter)}(hstruct device_node *prevh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jlc.of_find_all_nodesasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj/hMubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jsphinx_line_type declaratorhjhhhj/hMubah}(h]j ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhj/hMhjhhubh desc_content)}(hhh]h paragraph)}(hGet next node in global listh]hGet next node in global list}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj?hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj/hMubeh}(h]h ](j\functioneh"]h$]h&]domainj\objtypej\desctypej\noindex noindexentrynocontentsentryuh1j hhhhhNhNubh container)}(h**Parameters** ``struct device_node *prev`` Previous node or NULL to start iteration of_node_put() will be called on it **Return** A node pointer with refcount incremented, use of_node_put() on it when done.h](jC)}(h**Parameters**h]hstrong)}(hjnh]h Parameters}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjlubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjhubhdefinition_list)}(hhh]hdefinition_list_item)}(hi``struct device_node *prev`` Previous node or NULL to start iteration of_node_put() will be called on it h](hterm)}(h``struct device_node *prev``h]hliteral)}(hjh]hstruct device_node *prev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubh definition)}(hhh]jC)}(hKPrevious node or NULL to start iteration of_node_put() will be called on ith]hKPrevious node or NULL to start iteration of_node_put() will be called on it}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjhubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjhubjC)}(hLA node pointer with refcount incremented, use of_node_put() on it when done.h]hLA node pointer with refcount incremented, use of_node_put() on it when done.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjhubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j (of_machine_compatible_match (C function)c.of_machine_compatible_matchhNtauh1hhhhhhNhNubj)}(hhh](j)}(h=bool of_machine_compatible_match (const char *const *compats)h]j)}(hhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj:ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj+hMubj)}(h(const char *const *compats)h]j)}(hconst char *const *compatsh](j)}(hconsth]hconst}(hjZhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjVubj1)}(h h]h }(hjhhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubj)}(hcharh]hchar}(hjvhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjVubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubj)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjVubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubjE)}(hcompatsh]hcompats}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjVubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjRubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj+hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj+hMubah}(h]j ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj+hMhjhhubj>)}(hhh]jC)}(h3Test root of device tree against a compatible arrayh]h3Test root of device tree against a compatible array}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj+hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj jbj jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const char *const *compats`` NULL terminated array of compatible strings to look for in root node's compatible property. **Description** Returns true if the root node has any of the given compatible values in its compatible property.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj ubj)}(hhh]j)}(h{``const char *const *compats`` NULL terminated array of compatible strings to look for in root node's compatible property. h](j)}(h``const char *const *compats``h]j)}(hj2h]hconst char *const *compats}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj,ubj)}(hhh]jC)}(h[NULL terminated array of compatible strings to look for in root node's compatible property.h]h]NULL terminated array of compatible strings to look for in root node’s compatible property.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjGhMhjHubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhjGhMhj)ubah}(h]h ]h"]h$]h&]uh1jhj ubjC)}(h**Description**h]jq)}(hjmh]h Description}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jphjkubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj ubjC)}(h`Returns true if the root node has any of the given compatible values in its compatible property.h]h`Returns true if the root node has any of the given compatible values in its compatible property.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'of_machine_read_compatible (C function)c.of_machine_read_compatiblehNtauh1hhhhhhNhNubj)}(hhh](j)}(hLint of_machine_read_compatible (const char **compatible, unsigned int index)h]j)}(hKint of_machine_read_compatible(const char **compatible, unsigned int index)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hof_machine_read_compatibleh]jE)}(hof_machine_read_compatibleh]hof_machine_read_compatible}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h-(const char **compatible, unsigned int index)h](j)}(hconst char **compatibleh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(h compatibleh]h compatible}(hj@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned int indexh](j)}(hunsignedh]hunsigned}(hjYhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjUubj1)}(h h]h }(hjghhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubj)}(hinth]hint}(hjuhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjUubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubjE)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h)Get the compatible string of this machineh]h)Get the compatible string of this machine}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const char **compatible`` address at which the address of the compatible string will be stored ``unsigned int index`` index of the compatible entry in the list **Return** 0 on success, negative error number on failure.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh](j)}(ha``const char **compatible`` address at which the address of the compatible string will be stored h](j)}(h``const char **compatible``h]j)}(hjh]hconst char **compatible}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]jC)}(hDaddress at which the address of the compatible string will be storedh]hDaddress at which the address of the compatible string will be stored}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hA``unsigned int index`` index of the compatible entry in the list h](j)}(h``unsigned int index``h]j)}(hj6h]hunsigned int index}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj0ubj)}(hhh]jC)}(h)index of the compatible entry in the listh]h)index of the compatible entry in the list}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjKhMhjLubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhjKhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjqh]hReturn}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jphjoubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjC)}(h/0 on success, negative error number on failure.h]h/0 on success, negative error number on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j "of_machine_read_model (C function)c.of_machine_read_modelhNtauh1hhhhhhNhNubj)}(hhh](j)}(h.int of_machine_read_model (const char **model)h]j)}(h-int of_machine_read_model(const char **model)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hof_machine_read_modelh]jE)}(hof_machine_read_modelh]hof_machine_read_model}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h(const char **model)h]j)}(hconst char **modelh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hmodelh]hmodel}(hjDhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h$Get the model string of this machineh]h$Get the model string of this machine}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjkhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const char **model`` address at which the address of the model string will be stored **Return** 0 on success, negative error number on failure.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]j)}(hW``const char **model`` address at which the address of the model string will be stored h](j)}(h``const char **model``h]j)}(hjh]hconst char **model}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]jC)}(h?address at which the address of the model string will be storedh]h?address at which the address of the model string will be stored}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjC)}(h/0 on success, negative error number on failure.h]h/0 on success, negative error number on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !of_machine_get_match (C function)c.of_machine_get_matchhNtauh1hhhhhhNhNubj)}(hhh](j)}(hUconst struct of_device_id * of_machine_get_match (const struct of_device_id *matches)h]j)}(hSconst struct of_device_id *of_machine_get_match(const struct of_device_id *matches)h](j)}(hj\h]hconst}(hj/hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj+hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hj=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj+hhhj<hMubj)}(hj"h]hstruct}(hjKhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj+hhhj<hMubj1)}(h h]h }(hjXhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj+hhhj<hMubh)}(hhh]jE)}(h of_device_idh]h of_device_id}(hjihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjfubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjkmodnameN classnameNjbje)}jh]jk)}j^of_machine_get_matchsbc.of_machine_get_matchasbuh1hhj+hhhj<hMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj+hhhj<hMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+hhhj<hMubj)}(hof_machine_get_matchh]jE)}(hjh]hof_machine_get_match}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhj+hhhj<hMubj)}(h$(const struct of_device_id *matches)h]j)}(h"const struct of_device_id *matchesh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h of_device_idh]h of_device_id}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_machine_get_matchasbuh1hhjubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj) hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hmatchesh]hmatches}(hj6 hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj+hhhj<hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj'hhhj<hMubah}(h]j"ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj<hMhj$hhubj>)}(hhh]jC)}(h6Test root of device tree against an of_device_id arrayh]h6Test root of device tree against an of_device_id array}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj] hhubah}(h]h ]h"]h$]h&]uh1j=hj$hhhj<hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajx jbjx jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const struct of_device_id *matches`` NULL terminated array of of_device_id match structures to search in **Description** Returns matched entry or NULLh](jC)}(h**Parameters**h]jq)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj| ubj)}(hhh]j)}(hk``const struct of_device_id *matches`` NULL terminated array of of_device_id match structures to search in h](j)}(h&``const struct of_device_id *matches``h]j)}(hj h]h"const struct of_device_id *matches}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj ubj)}(hhh]jC)}(hCNULL terminated array of of_device_id match structures to search inh]hCNULL terminated array of of_device_id match structures to search in}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj| ubjC)}(h**Description**h]jq)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj| ubjC)}(hReturns matched entry or NULLh]hReturns matched entry or NULL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj| ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j &of_machine_get_match_data (C function)c.of_machine_get_match_datahNtauh1hhhhhhNhNubj)}(hhh](j)}(hKconst void * of_machine_get_match_data (const struct of_device_id *matches)h]j)}(hIconst void *of_machine_get_match_data(const struct of_device_id *matches)h](j)}(hj\h]hconst}(hj! hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hj/ hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj hhhj. hMubj)}(hvoidh]hvoid}(hj= hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj hhhj. hMubj1)}(h h]h }(hjK hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj hhhj. hMubj)}(hjh]h*}(hjY hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj. hMubj)}(hof_machine_get_match_datah]jE)}(hof_machine_get_match_datah]hof_machine_get_match_data}(hjj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjf ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj. hMubj)}(h$(const struct of_device_id *matches)h]j)}(h"const struct of_device_id *matchesh](j)}(hj\h]hconst}(hj hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hj"h]hstruct}(hj hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubh)}(hhh]jE)}(h of_device_idh]h of_device_id}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj modnameN classnameNjbje)}jh]jk)}j^jl sbc.of_machine_get_match_dataasbuh1hhj ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(hmatchesh]hmatches}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj~ ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj. hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj hhhj. hMubah}(h]j ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj. hMhj hhubj>)}(hhh]jC)}(h=Tell if root of device tree has a matching of_match structureh]h=Tell if root of device tree has a matching of_match structure}(hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj! hhubah}(h]h ]h"]h$]h&]uh1j=hj hhhj. hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj< jbj< jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const struct of_device_id *matches`` NULL terminated array of of_device_id match structures to search in **Description** Returns data associated with matched entry or NULLh](jC)}(h**Parameters**h]jq)}(hjF h]h Parameters}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjD ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj@ ubj)}(hhh]j)}(hk``const struct of_device_id *matches`` NULL terminated array of of_device_id match structures to search in h](j)}(h&``const struct of_device_id *matches``h]j)}(hje h]h"const struct of_device_id *matches}(hjg hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjc ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj_ ubj)}(hhh]jC)}(hCNULL terminated array of of_device_id match structures to search inh]hCNULL terminated array of of_device_id match structures to search in}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjz hMhj{ ubah}(h]h ]h"]h$]h&]uh1jhj_ ubeh}(h]h ]h"]h$]h&]uh1jhjz hMhj\ ubah}(h]h ]h"]h$]h&]uh1jhj@ ubjC)}(h**Description**h]jq)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj@ ubjC)}(h2Returns data associated with matched entry or NULLh]h2Returns data associated with matched entry or NULL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj@ ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #of_device_is_available (C function)c.of_device_is_availablehNtauh1hhhhhhNhNubj)}(hhh](j)}(h>bool of_device_is_available (const struct device_node *device)h]j)}(h=bool of_device_is_available(const struct device_node *device)h](j)}(hjh]hbool}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMAubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj hhhj hMAubj)}(hof_device_is_availableh]jE)}(hof_device_is_availableh]hof_device_is_available}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hMAubj)}(h"(const struct device_node *device)h]j)}(h const struct device_node *deviceh](j)}(hj\h]hconst}(hj! hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj. hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hj"h]hstruct}(hj< hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hjI hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjZ hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjW ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj\ modnameN classnameNjbje)}jh]jk)}j^j sbc.of_device_is_availableasbuh1hhj ubj1)}(h h]h }(hjz hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(hdeviceh]hdevice}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hMAubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj hhhj hMAubah}(h]j ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj hMAhj hhubj>)}(hhh]jC)}(h&check if a device is available for useh]h&check if a device is available for use}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMAhj hhubah}(h]h ]h"]h$]h&]uh1j=hj hhhj hMAubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj jbj jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const struct device_node *device`` Node to check for availability **Return** True if the status property is absent or set to "okay" or "ok", false otherwiseh](jC)}(h**Parameters**h]jq)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMEhj ubj)}(hhh]j)}(hD``const struct device_node *device`` Node to check for availability h](j)}(h$``const struct device_node *device``h]j)}(hj h]h const struct device_node *device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMChj ubj)}(hhh]jC)}(hNode to check for availabilityh]hNode to check for availability}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj hMChj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMChj ubah}(h]h ]h"]h$]h&]uh1jhj ubjC)}(h **Return**h]jq)}(hj; h]hReturn}(hj= hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj9 ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMEhj ubjC)}(hOTrue if the status property is absent or set to "okay" or "ok", false otherwiseh]hWTrue if the status property is absent or set to “okay” or “ok”, false otherwise}(hjQ hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMEhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $of_device_is_big_endian (C function)c.of_device_is_big_endianhNtauh1hhhhhhNhNubj)}(hhh](j)}(h?bool of_device_is_big_endian (const struct device_node *device)h]j)}(h>bool of_device_is_big_endian(const struct device_node *device)h](j)}(hjh]hbool}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj| hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMeubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj| hhhj hMeubj)}(hof_device_is_big_endianh]jE)}(hof_device_is_big_endianh]hof_device_is_big_endian}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj| hhhj hMeubj)}(h"(const struct device_node *device)h]j)}(h const struct device_node *deviceh](j)}(hj\h]hconst}(hj hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hj"h]hstruct}(hj hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj modnameN classnameNjbje)}jh]jk)}j^j sbc.of_device_is_big_endianasbuh1hhj ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(hdeviceh]hdevice}(hj0hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj| hhhj hMeubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjx hhhj hMeubah}(h]js ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj hMehju hhubj>)}(hhh]jC)}(h"check if a device has BE registersh]h"check if a device has BE registers}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMehjWhhubah}(h]h ]h"]h$]h&]uh1j=hju hhhj hMeubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajrjbjrjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *device`` Node to check for endianness **Return** True if the device has a "big-endian" property, or if the kernel was compiled for BE *and* the device has a "native-endian" property. Returns false otherwise. **Description** Callers would nominally use ioread32be/iowrite32be if of_device_is_big_endian() == true, or readl/writel otherwise.h](jC)}(h**Parameters**h]jq)}(hj|h]h Parameters}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjzubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMihjvubj)}(hhh]j)}(hB``const struct device_node *device`` Node to check for endianness h](j)}(h$``const struct device_node *device``h]j)}(hjh]h const struct device_node *device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMghjubj)}(hhh]jC)}(hNode to check for endiannessh]hNode to check for endianness}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMghjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMghjubah}(h]h ]h"]h$]h&]uh1jhjvubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMihjvubjC)}(hTrue if the device has a "big-endian" property, or if the kernel was compiled for BE *and* the device has a "native-endian" property. Returns false otherwise.h](hYTrue if the device has a “big-endian” property, or if the kernel was compiled for BE }(hjhhhNhNubhemphasis)}(h*and*h]hand}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhH the device has a “native-endian” property. Returns false otherwise.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMihjvubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMmhjvubh block_quote)}(hsCallers would nominally use ioread32be/iowrite32be if of_device_is_big_endian() == true, or readl/writel otherwise.h]jC)}(hsCallers would nominally use ioread32be/iowrite32be if of_device_is_big_endian() == true, or readl/writel otherwise.h]hsCallers would nominally use ioread32be/iowrite32be if of_device_is_big_endian() == true, or readl/writel otherwise.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMlhj)ubah}(h]h ]h"]h$]h&]uh1j'hj;hMlhjvubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_get_parent (C function)c.of_get_parenthNtauh1hhhhhhNhNubj)}(hhh](j)}(hCstruct device_node * of_get_parent (const struct device_node *node)h]j)}(hAstruct device_node *of_get_parent(const struct device_node *node)h](j)}(hj"h]hstruct}(hjbhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj^hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM|ubj1)}(h h]h }(hjphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj^hhhjohM|ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj~ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^ of_get_parentsbc.of_get_parentasbuh1hhj^hhhjohM|ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj^hhhjohM|ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^hhhjohM|ubj)}(h of_get_parenth]jE)}(hjh]h of_get_parent}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhj^hhhjohM|ubj)}(h (const struct device_node *node)h]j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_get_parentasbuh1hhjubj1)}(h h]h }(hj3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnodeh]hnode}(hjNhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj^hhhjohM|ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjZhhhjohM|ubah}(h]jUah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjohM|hjWhhubj>)}(hhh]jC)}(hGet a node's parent if anyh]hGet a node’s parent if any}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM|hjuhhubah}(h]h ]h"]h$]h&]uh1j=hjWhhhjohM|ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const struct device_node *node`` Node to get parent **Return** A node pointer with refcount incremented, use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]j)}(h6``const struct device_node *node`` Node to get parent h](j)}(h"``const struct device_node *node``h]j)}(hjh]hconst struct device_node *node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM}hjubj)}(hhh]jC)}(hNode to get parenth]hNode to get parent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM}hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM}hjubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjC)}(hLA node pointer with refcount incremented, use of_node_put() on it when done.h]hLA node pointer with refcount incremented, use of_node_put() on it when done.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_get_next_parent (C function)c.of_get_next_parenthNtauh1hhhhhhNhNubj)}(hhh](j)}(hBstruct device_node * of_get_next_parent (struct device_node *node)h]j)}(h@struct device_node *of_get_next_parent(struct device_node *node)h](j)}(hj"h]hstruct}(hj9hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj5hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5hhhjFhMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjXhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjUubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjZmodnameN classnameNjbje)}jh]jk)}j^of_get_next_parentsbc.of_get_next_parentasbuh1hhj5hhhjFhMubj1)}(h h]h }(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5hhhjFhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhhjFhMubj)}(hof_get_next_parenth]jE)}(hjvh]hof_get_next_parent}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhj5hhhjFhMubj)}(h(struct device_node *node)h]j)}(hstruct device_node *nodeh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jtc.of_get_next_parentasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnodeh]hnode}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj5hhhjFhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj1hhhjFhMubah}(h]j,ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjFhMhj.hhubj>)}(hhh]jC)}(hIterate to a node's parenth]hIterate to a node’s parent}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj1hhubah}(h]h ]h"]h$]h&]uh1j=hj.hhhjFhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajLjbjLjcjdjeuh1j hhhhhNhNubjg)}(hX>**Parameters** ``struct device_node *node`` Node to get parent of **Description** This is like of_get_parent() except that it drops the refcount on the passed node, making it suitable for iterating through a node's parents. **Return** A node pointer with refcount incremented, use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hjVh]h Parameters}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjTubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjPubj)}(hhh]j)}(h3``struct device_node *node`` Node to get parent of h](j)}(h``struct device_node *node``h]j)}(hjuh]hstruct device_node *node}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjoubj)}(hhh]jC)}(hNode to get parent ofh]hNode to get parent of}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjhMhjlubah}(h]h ]h"]h$]h&]uh1jhjPubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjPubjC)}(hThis is like of_get_parent() except that it drops the refcount on the passed node, making it suitable for iterating through a node's parents.h]hThis is like of_get_parent() except that it drops the refcount on the passed node, making it suitable for iterating through a node’s parents.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjPubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjPubjC)}(hLA node pointer with refcount incremented, use of_node_put() on it when done.h]hLA node pointer with refcount incremented, use of_node_put() on it when done.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjPubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_get_next_child (C function)c.of_get_next_childhNtauh1hhhhhhNhNubj)}(hhh](j)}(hastruct device_node * of_get_next_child (const struct device_node *node, struct device_node *prev)h]j)}(h_struct device_node *of_get_next_child(const struct device_node *node, struct device_node *prev)h](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hj*hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj)hMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj;hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj8ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj=modnameN classnameNjbje)}jh]jk)}j^of_get_next_childsbc.of_get_next_childasbuh1hhjhhhj)hMubj1)}(h h]h }(hj\hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj)hMubj)}(hjh]h*}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj)hMubj)}(hof_get_next_childh]jE)}(hjYh]hof_get_next_child}(hj{hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjwubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj)hMubj)}(h:(const struct device_node *node, struct device_node *prev)h](j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jWc.of_get_next_childasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node *prevh](j)}(hj"h]hstruct}(hj!hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj.hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj?hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj<ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjAmodnameN classnameNjbje)}jh]jWc.of_get_next_childasbuh1hhjubj1)}(h h]h }(hj]hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hprevh]hprev}(hjxhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj)hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj)hMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj)hMhjhhubj>)}(hhh]jC)}(hIterate a node childsh]hIterate a node childs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj)hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX=**Parameters** ``const struct device_node *node`` parent node ``struct device_node *prev`` previous child of the parent node, or NULL to get first **Return** A node pointer with refcount incremented, use of_node_put() on it when done. Returns NULL when prev is the last child. Decrements the refcount of prev.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh](j)}(h/``const struct device_node *node`` parent node h](j)}(h"``const struct device_node *node``h]j)}(hjh]hconst struct device_node *node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]jC)}(h parent nodeh]h parent node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hU``struct device_node *prev`` previous child of the parent node, or NULL to get first h](j)}(h``struct device_node *prev``h]j)}(hjh]hstruct device_node *prev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]jC)}(h7previous child of the parent node, or NULL to get firsth]h7previous child of the parent node, or NULL to get first}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj1hMhj2ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj1hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjWh]hReturn}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjUubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjC)}(hA node pointer with refcount incremented, use of_node_put() on it when done. Returns NULL when prev is the last child. Decrements the refcount of prev.h]hA node pointer with refcount incremented, use of_node_put() on it when done. Returns NULL when prev is the last child. Decrements the refcount of prev.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j *of_get_next_child_with_prefix (C function)c.of_get_next_child_with_prefixhNtauh1hhhhhhNhNubj)}(hhh](j)}(hstruct device_node * of_get_next_child_with_prefix (const struct device_node *node, struct device_node *prev, const char *prefix)h]j)}(hstruct device_node *of_get_next_child_with_prefix(const struct device_node *node, struct device_node *prev, const char *prefix)h](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^of_get_next_child_with_prefixsbc.of_get_next_child_with_prefixasbuh1hhjhhhjhMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hof_get_next_child_with_prefixh]jE)}(hjh]hof_get_next_child_with_prefix}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]+h&]hhuh1jhjhhhjhMubj)}(hN(const struct device_node *node, struct device_node *prev, const char *prefix)h](j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj#hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hj1hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj>hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjOhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjLubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjQmodnameN classnameNjbje)}jh]jc.of_get_next_child_with_prefixasbuh1hhjubj1)}(h h]h }(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node *prevh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_get_next_child_with_prefixasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *prefixh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hcharh]hchar}(hj,hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(hprefixh]hprefix}(hjUhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h$Find the next child node with prefixh]h$Find the next child node with prefix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj|hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *node`` parent node ``struct device_node *prev`` previous child of the parent node, or NULL to get first ``const char *prefix`` prefix that the node name should have **Description** This function is like of_get_next_child(), except that it automatically skips any nodes whose name doesn't have the given prefix. **Return** A node pointer with refcount incremented, use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh](j)}(h/``const struct device_node *node`` parent node h](j)}(h"``const struct device_node *node``h]j)}(hjh]hconst struct device_node *node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]jC)}(h parent nodeh]h parent node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hU``struct device_node *prev`` previous child of the parent node, or NULL to get first h](j)}(h``struct device_node *prev``h]j)}(hjh]hstruct device_node *prev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]jC)}(h7previous child of the parent node, or NULL to get firsth]h7previous child of the parent node, or NULL to get first}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h=``const char *prefix`` prefix that the node name should have h](j)}(h``const char *prefix``h]j)}(hj2h]hconst char *prefix}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj,ubj)}(hhh]jC)}(h%prefix that the node name should haveh]h%prefix that the node name should have}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjGhMhjHubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhjGhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjmh]h Description}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jphjkubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjC)}(hThis function is like of_get_next_child(), except that it automatically skips any nodes whose name doesn't have the given prefix.h]hThis function is like of_get_next_child(), except that it automatically skips any nodes whose name doesn’t have the given prefix.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjC)}(hLA node pointer with refcount incremented, use of_node_put() on it when done.h]hLA node pointer with refcount incremented, use of_node_put() on it when done.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j (of_get_next_available_child (C function)c.of_get_next_available_childhNtauh1hhhhhhNhNubj)}(hhh](j)}(hkstruct device_node * of_get_next_available_child (const struct device_node *node, struct device_node *prev)h]j)}(histruct device_node *of_get_next_available_child(const struct device_node *node, struct device_node *prev)h](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^of_get_next_available_childsbc.of_get_next_available_childasbuh1hhjhhhjhMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hof_get_next_available_childh]jE)}(hjh]hof_get_next_available_child}(hj8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h:(const struct device_node *node, struct device_node *prev)h](j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hjShhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjOubj1)}(h h]h }(hj`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjOubj)}(hj"h]hstruct}(hjnhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjOubj1)}(h h]h }(hj{hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjOubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_get_next_available_childasbuh1hhjOubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjOubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubjE)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjOubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjKubj)}(hstruct device_node *prevh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_get_next_available_childasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hprevh]hprev}(hj5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjKubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h"Find the next available child nodeh]h"Find the next available child node}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj\hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajwjbjwjcjdjeuh1j hhhhhNhNubjg)}(hX'**Parameters** ``const struct device_node *node`` parent node ``struct device_node *prev`` previous child of the parent node, or NULL to get first **Description** This function is like of_get_next_child(), except that it automatically skips any disabled nodes (i.e. status = "disabled").h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj{ubj)}(hhh](j)}(h/``const struct device_node *node`` parent node h](j)}(h"``const struct device_node *node``h]j)}(hjh]hconst struct device_node *node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]jC)}(h parent nodeh]h parent node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hU``struct device_node *prev`` previous child of the parent node, or NULL to get first h](j)}(h``struct device_node *prev``h]j)}(hjh]hstruct device_node *prev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]jC)}(h7previous child of the parent node, or NULL to get firsth]h7previous child of the parent node, or NULL to get first}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhj{ubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj{ubjC)}(h|This function is like of_get_next_child(), except that it automatically skips any disabled nodes (i.e. status = "disabled").h]hThis function is like of_get_next_child(), except that it automatically skips any disabled nodes (i.e. status = “disabled”).}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj{ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'of_get_next_reserved_child (C function)c.of_get_next_reserved_childhNtauh1hhhhhhNhNubj)}(hhh](j)}(hjstruct device_node * of_get_next_reserved_child (const struct device_node *node, struct device_node *prev)h]j)}(hhstruct device_node *of_get_next_reserved_child(const struct device_node *node, struct device_node *prev)h](j)}(hj"h]hstruct}(hjYhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjUhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjghhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUhhhjfhMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjxhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjuubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjzmodnameN classnameNjbje)}jh]jk)}j^of_get_next_reserved_childsbc.of_get_next_reserved_childasbuh1hhjUhhhjfhMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUhhhjfhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUhhhjfhMubj)}(hof_get_next_reserved_childh]jE)}(hjh]hof_get_next_reserved_child}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjUhhhjfhMubj)}(h:(const struct device_node *node, struct device_node *prev)h](j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_get_next_reserved_childasbuh1hhjubj1)}(h h]h }(hj*hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnodeh]hnode}(hjEhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node *prevh](j)}(hj"h]hstruct}(hj^hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjZubj1)}(h h]h }(hjkhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj|hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjyubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj~modnameN classnameNjbje)}jh]jc.of_get_next_reserved_childasbuh1hhjZubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubjE)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjUhhhjfhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjQhhhjfhMubah}(h]jLah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjfhMhjNhhubj>)}(hhh]jC)}(h!Find the next reserved child nodeh]h!Find the next reserved child node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjNhhhjfhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX'**Parameters** ``const struct device_node *node`` parent node ``struct device_node *prev`` previous child of the parent node, or NULL to get first **Description** This function is like of_get_next_child(), except that it automatically skips any disabled nodes (i.e. status = "disabled").h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM"hjubj)}(hhh](j)}(h/``const struct device_node *node`` parent node h](j)}(h"``const struct device_node *node``h]j)}(hj h]hconst struct device_node *node}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]jC)}(h parent nodeh]h parent node}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj5hMhj6ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj5hMhjubj)}(hU``struct device_node *prev`` previous child of the parent node, or NULL to get first h](j)}(h``struct device_node *prev``h]j)}(hjYh]hstruct device_node *prev}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjSubj)}(hhh]jC)}(h7previous child of the parent node, or NULL to get firsth]h7previous child of the parent node, or NULL to get first}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjnhM hjoubah}(h]h ]h"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]uh1jhjnhM hjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM"hjubjC)}(h|This function is like of_get_next_child(), except that it automatically skips any disabled nodes (i.e. status = "disabled").h]hThis function is like of_get_next_child(), except that it automatically skips any disabled nodes (i.e. status = “disabled”).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM!hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !of_get_next_cpu_node (C function)c.of_get_next_cpu_nodehNtauh1hhhhhhNhNubj)}(hhh](j)}(hDstruct device_node * of_get_next_cpu_node (struct device_node *prev)h]j)}(hBstruct device_node *of_get_next_cpu_node(struct device_node *prev)h](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM-ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhM-ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^of_get_next_cpu_nodesbc.of_get_next_cpu_nodeasbuh1hhjhhhjhM-ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhM-ubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM-ubj)}(hof_get_next_cpu_nodeh]jE)}(hjh]hof_get_next_cpu_node}(hj8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhM-ubj)}(h(struct device_node *prev)h]j)}(hstruct device_node *prevh](j)}(hj"h]hstruct}(hjShhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjOubj1)}(h h]h }(hj`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjOubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjqhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjnubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjsmodnameN classnameNjbje)}jh]jc.of_get_next_cpu_nodeasbuh1hhjOubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjOubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubjE)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjOubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjKubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM-ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhM-ubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhM-hjhhubj>)}(hhh]jC)}(hIterate on cpu nodesh]hIterate on cpu nodes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM-hjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhM-ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX|**Parameters** ``struct device_node *prev`` previous child of the /cpus node, or NULL to get first **Description** Unusable CPUs (those with the status property set to "fail" or "fail-...") will be skipped. **Return** A cpu node pointer with refcount incremented, use of_node_put() on it when done. Returns NULL when prev is the last child. Decrements the refcount of prev.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM1hjubj)}(hhh]j)}(hT``struct device_node *prev`` previous child of the /cpus node, or NULL to get first h](j)}(h``struct device_node *prev``h]j)}(hjh]hstruct device_node *prev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM.hjubj)}(hhh]jC)}(h6previous child of the /cpus node, or NULL to get firsth]h6previous child of the /cpus node, or NULL to get first}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj*hM.hj+ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj*hM.hj ubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjPh]h Description}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM0hjubjC)}(h[Unusable CPUs (those with the status property set to "fail" or "fail-...") will be skipped.h]hcUnusable CPUs (those with the status property set to “fail” or “fail-...”) will be skipped.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM/hjubjC)}(h **Return**h]jq)}(hjwh]hReturn}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjuubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM2hjubjC)}(hA cpu node pointer with refcount incremented, use of_node_put() on it when done. Returns NULL when prev is the last child. Decrements the refcount of prev.h]hA cpu node pointer with refcount incremented, use of_node_put() on it when done. Returns NULL when prev is the last child. Decrements the refcount of prev.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM3hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $of_get_compatible_child (C function)c.of_get_compatible_childhNtauh1hhhhhhNhNubj)}(hhh](j)}(hgstruct device_node * of_get_compatible_child (const struct device_node *parent, const char *compatible)h]j)}(hestruct device_node *of_get_compatible_child(const struct device_node *parent, const char *compatible)h](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMWubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMWubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^of_get_compatible_childsbc.of_get_compatible_childasbuh1hhjhhhjhMWubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMWubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMWubj)}(hof_get_compatible_childh]jE)}(hjh]hof_get_compatible_child}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMWubj)}(h:(const struct device_node *parent, const char *compatible)h](j)}(h const struct device_node *parenth](j)}(hj\h]hconst}(hj6 hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj2 ubj1)}(h h]h }(hjC hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2 ubj)}(hj"h]hstruct}(hjQ hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj2 ubj1)}(h h]h }(hj^ hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2 ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjo hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjl ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjq modnameN classnameNjbje)}jh]jc.of_get_compatible_childasbuh1hhj2 ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2 ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2 ubjE)}(hparenth]hparent}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj2 ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj. ubj)}(hconst char *compatibleh](j)}(hj\h]hconst}(hj hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hcharh]hchar}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(h compatibleh]h compatible}(hj!hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj. ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMWubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMWubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMWhjhhubj>)}(hhh]jC)}(hFind compatible child nodeh]hFind compatible child node}(hj/!hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMWhj,!hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMWubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajG!jbjG!jcjdjeuh1j hhhhhNhNubjg)}(hXF**Parameters** ``const struct device_node *parent`` parent node ``const char *compatible`` compatible string **Description** Lookup child node whose compatible property contains the given compatible string. **Return** a node pointer with refcount incremented, use of_node_put() on it when done; or NULL if not found.h](jC)}(h**Parameters**h]jq)}(hjQ!h]h Parameters}(hjS!hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjO!ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM[hjK!ubj)}(hhh](j)}(h1``const struct device_node *parent`` parent node h](j)}(h$``const struct device_node *parent``h]j)}(hjp!h]h const struct device_node *parent}(hjr!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjn!ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMXhjj!ubj)}(hhh]jC)}(h parent nodeh]h parent node}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj!hMXhj!ubah}(h]h ]h"]h$]h&]uh1jhjj!ubeh}(h]h ]h"]h$]h&]uh1jhj!hMXhjg!ubj)}(h-``const char *compatible`` compatible string h](j)}(h``const char *compatible``h]j)}(hj!h]hconst char *compatible}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMYhj!ubj)}(hhh]jC)}(hcompatible stringh]hcompatible string}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj!hMYhj!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj!hMYhjg!ubeh}(h]h ]h"]h$]h&]uh1jhjK!ubjC)}(h**Description**h]jq)}(hj!h]h Description}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj!ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM[hjK!ubjC)}(hQLookup child node whose compatible property contains the given compatible string.h]hQLookup child node whose compatible property contains the given compatible string.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMZhjK!ubjC)}(h **Return**h]jq)}(hj "h]hReturn}(hj "hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj "ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM]hjK!ubjC)}(hba node pointer with refcount incremented, use of_node_put() on it when done; or NULL if not found.h]hba node pointer with refcount incremented, use of_node_put() on it when done; or NULL if not found.}(hj!"hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM^hjK!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !of_get_child_by_name (C function)c.of_get_child_by_namehNtauh1hhhhhhNhNubj)}(hhh](j)}(h\struct device_node * of_get_child_by_name (const struct device_node *node, const char *name)h]j)}(hZstruct device_node *of_get_child_by_name(const struct device_node *node, const char *name)h](j)}(hj"h]hstruct}(hjP"hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjL"hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMpubj1)}(h h]h }(hj^"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjL"hhhj]"hMpubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjo"hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjl"ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjq"modnameN classnameNjbje)}jh]jk)}j^of_get_child_by_namesbc.of_get_child_by_nameasbuh1hhjL"hhhj]"hMpubj1)}(h h]h }(hj"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjL"hhhj]"hMpubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjL"hhhj]"hMpubj)}(hof_get_child_by_nameh]jE)}(hj"h]hof_get_child_by_name}(hj"hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj"ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjL"hhhj]"hMpubj)}(h2(const struct device_node *node, const char *name)h](j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hj"hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj"ubj1)}(h h]h }(hj"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"ubj)}(hj"h]hstruct}(hj"hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj"ubj1)}(h h]h }(hj"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj#hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj#ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj#modnameN classnameNjbje)}jh]j"c.of_get_child_by_nameasbuh1hhj"ubj1)}(h h]h }(hj!#hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"ubj)}(hjh]h*}(hj/#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubjE)}(hnodeh]hnode}(hj<#hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubj)}(hconst char *nameh](j)}(hj\h]hconst}(hjU#hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjQ#ubj1)}(h h]h }(hjb#hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQ#ubj)}(hcharh]hchar}(hjp#hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjQ#ubj1)}(h h]h }(hj~#hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQ#ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ#ubjE)}(hnameh]hname}(hj#hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQ#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubeh}(h]h ]h"]h$]h&]hhuh1jhjL"hhhj]"hMpubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjH"hhhj]"hMpubah}(h]jC"ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj]"hMphjE"hhubj>)}(hhh]jC)}(h.Find the child node by name for a given parenth]h.Find the child node by name for a given parent}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMphj#hhubah}(h]h ]h"]h$]h&]uh1j=hjE"hhhj]"hMpubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj#jbj#jcjdjeuh1j hhhhhNhNubjg)}(hXD**Parameters** ``const struct device_node *node`` parent node ``const char *name`` child name to look for. **Description** This function looks for child node for given matching name **Return** A node pointer if found, with refcount incremented, use of_node_put() on it when done. Returns NULL if node is not found.h](jC)}(h**Parameters**h]jq)}(hj#h]h Parameters}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj#ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMthj#ubj)}(hhh](j)}(h/``const struct device_node *node`` parent node h](j)}(h"``const struct device_node *node``h]j)}(hj$h]hconst struct device_node *node}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMqhj#ubj)}(hhh]jC)}(h parent nodeh]h parent node}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj$hMqhj$ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jhj$hMqhj#ubj)}(h-``const char *name`` child name to look for. h](j)}(h``const char *name``h]j)}(hj=$h]hconst char *name}(hj?$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;$ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMrhj7$ubj)}(hhh]jC)}(hchild name to look for.h]hchild name to look for.}(hjV$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjR$hMrhjS$ubah}(h]h ]h"]h$]h&]uh1jhj7$ubeh}(h]h ]h"]h$]h&]uh1jhjR$hMrhj#ubeh}(h]h ]h"]h$]h&]uh1jhj#ubjC)}(h**Description**h]jq)}(hjx$h]h Description}(hjz$hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjv$ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMthj#ubjC)}(h:This function looks for child node for given matching nameh]h:This function looks for child node for given matching name}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMshj#ubjC)}(h **Return**h]jq)}(hj$h]hReturn}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj$ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMuhj#ubjC)}(hyA node pointer if found, with refcount incremented, use of_node_put() on it when done. Returns NULL if node is not found.h]hyA node pointer if found, with refcount incremented, use of_node_put() on it when done. Returns NULL if node is not found.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMvhj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j +of_get_available_child_by_name (C function) c.of_get_available_child_by_namehNtauh1hhhhhhNhNubj)}(hhh](j)}(hfstruct device_node * of_get_available_child_by_name (const struct device_node *node, const char *name)h]j)}(hdstruct device_node *of_get_available_child_by_name(const struct device_node *node, const char *name)h](j)}(hj"h]hstruct}(hj$hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj$hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hj$hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj$hhhj$hMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj%ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj%modnameN classnameNjbje)}jh]jk)}j^of_get_available_child_by_namesb c.of_get_available_child_by_nameasbuh1hhj$hhhj$hMubj1)}(h h]h }(hj$%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj$hhhj$hMubj)}(hjh]h*}(hj2%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhj$hMubj)}(hof_get_available_child_by_nameh]jE)}(hj!%h]hof_get_available_child_by_name}(hjC%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj?%ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj$hhhj$hMubj)}(h2(const struct device_node *node, const char *name)h](j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hj^%hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjZ%ubj1)}(h h]h }(hjk%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZ%ubj)}(hj"h]hstruct}(hjy%hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjZ%ubj1)}(h h]h }(hj%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZ%ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj%ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj%modnameN classnameNjbje)}jh]j% c.of_get_available_child_by_nameasbuh1hhjZ%ubj1)}(h h]h }(hj%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZ%ubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZ%ubjE)}(hnodeh]hnode}(hj%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZ%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjV%ubj)}(hconst char *nameh](j)}(hj\h]hconst}(hj%hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj%ubj1)}(h h]h }(hj%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj%ubj)}(hcharh]hchar}(hj&hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj%ubj1)}(h h]h }(hj&hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj%ubj)}(hjh]h*}(hj &hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubjE)}(hnameh]hname}(hj-&hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjV%ubeh}(h]h ]h"]h$]h&]hhuh1jhj$hhhj$hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj$hhhj$hMubah}(h]j$ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj$hMhj$hhubj>)}(hhh]jC)}(h8Find the available child node by name for a given parenth]h8Find the available child node by name for a given parent}(hjW&hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjT&hhubah}(h]h ]h"]h$]h&]uh1j=hj$hhhj$hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajo&jbjo&jcjdjeuh1j hhhhhNhNubjg)}(hXr**Parameters** ``const struct device_node *node`` parent node ``const char *name`` child name to look for. **Description** This function looks for child node for given matching name and checks the device's availability for use. **Return** A node pointer if found, with refcount incremented, use of_node_put() on it when done. Returns NULL if node is not found.h](jC)}(h**Parameters**h]jq)}(hjy&h]h Parameters}(hj{&hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjw&ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjs&ubj)}(hhh](j)}(h/``const struct device_node *node`` parent node h](j)}(h"``const struct device_node *node``h]j)}(hj&h]hconst struct device_node *node}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj&ubj)}(hhh]jC)}(h parent nodeh]h parent node}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hMhj&ubj)}(h-``const char *name`` child name to look for. h](j)}(h``const char *name``h]j)}(hj&h]hconst char *name}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj&ubj)}(hhh]jC)}(hchild name to look for.h]hchild name to look for.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hMhj&ubeh}(h]h ]h"]h$]h&]uh1jhjs&ubjC)}(h**Description**h]jq)}(hj 'h]h Description}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj 'ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjs&ubjC)}(hhThis function looks for child node for given matching name and checks the device's availability for use.h]hjThis function looks for child node for given matching name and checks the device’s availability for use.}(hj"'hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjs&ubjC)}(h **Return**h]jq)}(hj3'h]hReturn}(hj5'hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj1'ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjs&ubjC)}(hyA node pointer if found, with refcount incremented, use of_node_put() on it when done. Returns NULL if node is not found.h]hyA node pointer if found, with refcount incremented, use of_node_put() on it when done. Returns NULL if node is not found.}(hjI'hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjs&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j &of_find_node_opts_by_path (C function)c.of_find_node_opts_by_pathhNtauh1hhhhhhNhNubj)}(hhh](j)}(hTstruct device_node * of_find_node_opts_by_path (const char *path, const char **opts)h]j)}(hRstruct device_node *of_find_node_opts_by_path(const char *path, const char **opts)h](j)}(hj"h]hstruct}(hjx'hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjt'hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hj'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjt'hhhj'hMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj'hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj'ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj'modnameN classnameNjbje)}jh]jk)}j^of_find_node_opts_by_pathsbc.of_find_node_opts_by_pathasbuh1hhjt'hhhj'hMubj1)}(h h]h }(hj'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjt'hhhj'hMubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjt'hhhj'hMubj)}(hof_find_node_opts_by_pathh]jE)}(hj'h]hof_find_node_opts_by_path}(hj'hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj'ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjt'hhhj'hMubj)}(h%(const char *path, const char **opts)h](j)}(hconst char *pathh](j)}(hj\h]hconst}(hj'hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj'ubj1)}(h h]h }(hj'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj'ubj)}(hcharh]hchar}(hj (hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj'ubj1)}(h h]h }(hj(hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj'ubj)}(hjh]h*}(hj)(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubjE)}(hpathh]hpath}(hj6(hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj'ubj)}(hconst char **optsh](j)}(hj\h]hconst}(hjO(hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjK(ubj1)}(h h]h }(hj\(hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjK(ubj)}(hcharh]hchar}(hjj(hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjK(ubj1)}(h h]h }(hjx(hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjK(ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjK(ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjK(ubjE)}(hoptsh]hopts}(hj(hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjK(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj'ubeh}(h]h ]h"]h$]h&]hhuh1jhjt'hhhj'hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjp'hhhj'hMubah}(h]jk'ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj'hMhjm'hhubj>)}(hhh]jC)}(h#Find a node matching a full OF pathh]h#Find a node matching a full OF path}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj(hhubah}(h]h ]h"]h$]h&]uh1j=hjm'hhhj'hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj(jbj(jcjdjeuh1j hhhhhNhNubjg)}(hXg**Parameters** ``const char *path`` Either the full path to match, or if the path does not start with '/', the name of a property of the /aliases node (an alias). In the case of an alias, the node matching the alias' value will be returned. ``const char **opts`` Address of a pointer into which to store the start of an options string appended to the end of the path with a ':' separator. **Description** Valid paths: * /foo/bar Full path * foo Valid alias * foo/bar Valid alias + relative path **Return** A node pointer with refcount incremented, use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hj(h]h Parameters}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj(ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj(ubj)}(hhh](j)}(h``const char *path`` Either the full path to match, or if the path does not start with '/', the name of a property of the /aliases node (an alias). In the case of an alias, the node matching the alias' value will be returned. h](j)}(h``const char *path``h]j)}(hj )h]hconst char *path}(hj )hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj )ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj)ubj)}(hhh]jC)}(hEither the full path to match, or if the path does not start with '/', the name of a property of the /aliases node (an alias). In the case of an alias, the node matching the alias' value will be returned.h]hEither the full path to match, or if the path does not start with ‘/’, the name of a property of the /aliases node (an alias). In the case of an alias, the node matching the alias’ value will be returned.}(hj$)hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj!)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhj )hMhj)ubj)}(h``const char **opts`` Address of a pointer into which to store the start of an options string appended to the end of the path with a ':' separator. h](j)}(h``const char **opts``h]j)}(hjE)h]hconst char **opts}(hjG)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjC)ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj?)ubj)}(hhh]jC)}(h}Address of a pointer into which to store the start of an options string appended to the end of the path with a ':' separator.h]hAddress of a pointer into which to store the start of an options string appended to the end of the path with a ‘:’ separator.}(hj^)hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj[)ubah}(h]h ]h"]h$]h&]uh1jhj?)ubeh}(h]h ]h"]h$]h&]uh1jhjZ)hMhj)ubeh}(h]h ]h"]h$]h&]uh1jhj(ubjC)}(h**Description**h]jq)}(hj)h]h Description}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj)ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj(ubj)}(hhh]j)}(hcValid paths: * /foo/bar Full path * foo Valid alias * foo/bar Valid alias + relative path h](j)}(h Valid paths:h]h Valid paths:}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj)ubj)}(hhh]h bullet_list)}(hhh](h list_item)}(h/foo/bar Full pathh]jC)}(hj)h]h/foo/bar Full path}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj)ubah}(h]h ]h"]h$]h&]uh1j)hj)ubj))}(hfoo Valid aliash]jC)}(hj)h]hfoo Valid alias}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj)ubah}(h]h ]h"]h$]h&]uh1j)hj)ubj))}(h&foo/bar Valid alias + relative path h]jC)}(h%foo/bar Valid alias + relative pathh]h%foo/bar Valid alias + relative path}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj)hMhj)ubah}(h]h ]h"]h$]h&]uh1j)hj)ubeh}(h]h ]h"]h$]h&]bulletjuh1j)hj)hMhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhj)hMhj)ubah}(h]h ]h"]h$]h&]uh1jhj(ubjC)}(h **Return**h]jq)}(hj*h]hReturn}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj*ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj(ubjC)}(hLA node pointer with refcount incremented, use of_node_put() on it when done.h]hLA node pointer with refcount incremented, use of_node_put() on it when done.}(hj0*hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !of_find_node_by_name (C function)c.of_find_node_by_namehNtauh1hhhhhhNhNubj)}(hhh](j)}(hVstruct device_node * of_find_node_by_name (struct device_node *from, const char *name)h]j)}(hTstruct device_node *of_find_node_by_name(struct device_node *from, const char *name)h](j)}(hj"h]hstruct}(hj_*hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj[*hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjm*hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[*hhhjl*hMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj~*hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj{*ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj*modnameN classnameNjbje)}jh]jk)}j^of_find_node_by_namesbc.of_find_node_by_nameasbuh1hhj[*hhhjl*hMubj1)}(h h]h }(hj*hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[*hhhjl*hMubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[*hhhjl*hMubj)}(hof_find_node_by_nameh]jE)}(hj*h]hof_find_node_by_name}(hj*hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj*ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj[*hhhjl*hMubj)}(h,(struct device_node *from, const char *name)h](j)}(hstruct device_node *fromh](j)}(hj"h]hstruct}(hj*hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj*ubj1)}(h h]h }(hj*hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj*ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj*hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj*ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj*modnameN classnameNjbje)}jh]j*c.of_find_node_by_nameasbuh1hhj*ubj1)}(h h]h }(hj+hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj*ubj)}(hjh]h*}(hj#+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubjE)}(hfromh]hfrom}(hj0+hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*ubj)}(hconst char *nameh](j)}(hj\h]hconst}(hjI+hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjE+ubj1)}(h h]h }(hjV+hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjE+ubj)}(hcharh]hchar}(hjd+hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjE+ubj1)}(h h]h }(hjr+hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjE+ubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjE+ubjE)}(hnameh]hname}(hj+hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjE+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*ubeh}(h]h ]h"]h$]h&]hhuh1jhj[*hhhjl*hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjW*hhhjl*hMubah}(h]jR*ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjl*hMhjT*hhubj>)}(hhh]jC)}(h"Find a node by its "name" propertyh]h&Find a node by its “name” property}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj+hhubah}(h]h ]h"]h$]h&]uh1j=hjT*hhhjl*hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj+jbj+jcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``struct device_node *from`` The node to start searching from or NULL; the node you pass will not be searched, only the next one will. Typically, you pass what the previous call returned. of_node_put() will be called on **from**. ``const char *name`` The name string to match against **Return** A node pointer with refcount incremented, use of_node_put() on it when done.@h](jC)}(h**Parameters**h]jq)}(hj+h]h Parameters}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj+ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hj+ubj)}(hhh](j)}(h``struct device_node *from`` The node to start searching from or NULL; the node you pass will not be searched, only the next one will. Typically, you pass what the previous call returned. of_node_put() will be called on **from**. h](j)}(h``struct device_node *from``h]j)}(hj+h]hstruct device_node *from}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hj+ubj)}(hhh]jC)}(hThe node to start searching from or NULL; the node you pass will not be searched, only the next one will. Typically, you pass what the previous call returned. of_node_put() will be called on **from**.h](hThe node to start searching from or NULL; the node you pass will not be searched, only the next one will. Typically, you pass what the previous call returned. of_node_put() will be called on }(hj,hhhNhNubjq)}(h**from**h]hfrom}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj,ubh.}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj,ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhj ,hM hj+ubj)}(h6``const char *name`` The name string to match against h](j)}(h``const char *name``h]j)}(hjD,h]hconst char *name}(hjF,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB,ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hj>,ubj)}(hhh]jC)}(h The name string to match againsth]h The name string to match against}(hj],hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjY,hM hjZ,ubah}(h]h ]h"]h$]h&]uh1jhj>,ubeh}(h]h ]h"]h$]h&]uh1jhjY,hM hj+ubeh}(h]h ]h"]h$]h&]uh1jhj+ubjC)}(h **Return**h]jq)}(hj,h]hReturn}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj},ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj+ubjC)}(hLA node pointer with refcount incremented, use of_node_put() on it when done.h]hLA node pointer with refcount incremented, use of_node_put() on it when done.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !of_find_node_by_type (C function)c.of_find_node_by_typehNtauh1hhhhhhNhNubj)}(hhh](j)}(hVstruct device_node * of_find_node_by_type (struct device_node *from, const char *type)h]j)}(hTstruct device_node *of_find_node_by_type(struct device_node *from, const char *type)h](j)}(hj"h]hstruct}(hj,hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj,hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM"ubj1)}(h h]h }(hj,hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,hhhj,hM"ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj,hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj,ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj,modnameN classnameNjbje)}jh]jk)}j^of_find_node_by_typesbc.of_find_node_by_typeasbuh1hhj,hhhj,hM"ubj1)}(h h]h }(hj-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,hhhj,hM"ubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,hhhj,hM"ubj)}(hof_find_node_by_typeh]jE)}(hj-h]hof_find_node_by_type}(hj#-hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj-ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj,hhhj,hM"ubj)}(h,(struct device_node *from, const char *type)h](j)}(hstruct device_node *fromh](j)}(hj"h]hstruct}(hj>-hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj:-ubj1)}(h h]h }(hjK-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:-ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj\-hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjY-ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj^-modnameN classnameNjbje)}jh]j,c.of_find_node_by_typeasbuh1hhj:-ubj1)}(h h]h }(hjz-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:-ubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:-ubjE)}(hfromh]hfrom}(hj-hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj:-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6-ubj)}(hconst char *typeh](j)}(hj\h]hconst}(hj-hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj-ubj1)}(h h]h }(hj-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-ubj)}(hcharh]hchar}(hj-hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj-ubj1)}(h h]h }(hj-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-ubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubjE)}(htypeh]htype}(hj-hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6-ubeh}(h]h ]h"]h$]h&]hhuh1jhj,hhhj,hM"ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj,hhhj,hM"ubah}(h]j,ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj,hM"hj,hhubj>)}(hhh]jC)}(h)Find a node by its "device_type" propertyh]h-Find a node by its “device_type” property}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM"hj.hhubah}(h]h ]h"]h$]h&]uh1j=hj,hhhj,hM"ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj4.jbj4.jcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``struct device_node *from`` The node to start searching from, or NULL to start searching the entire device tree. The node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on from for you. ``const char *type`` The type string to match against **Return** A node pointer with refcount incremented, use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hj>.h]h Parameters}(hj@.hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj<.ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM&hj8.ubj)}(hhh](j)}(hX``struct device_node *from`` The node to start searching from, or NULL to start searching the entire device tree. The node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on from for you. h](j)}(h``struct device_node *from``h]j)}(hj].h]hstruct device_node *from}(hj_.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[.ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM'hjW.ubj)}(hhh]jC)}(hThe node to start searching from, or NULL to start searching the entire device tree. The node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on from for you.h]hThe node to start searching from, or NULL to start searching the entire device tree. The node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on from for you.}(hjv.hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM#hjs.ubah}(h]h ]h"]h$]h&]uh1jhjW.ubeh}(h]h ]h"]h$]h&]uh1jhjr.hM'hjT.ubj)}(h6``const char *type`` The type string to match against h](j)}(h``const char *type``h]j)}(hj.h]hconst char *type}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM(hj.ubj)}(hhh]jC)}(h The type string to match againsth]h The type string to match against}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj.hM(hj.ubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhj.hM(hjT.ubeh}(h]h ]h"]h$]h&]uh1jhj8.ubjC)}(h **Return**h]jq)}(hj.h]hReturn}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj.ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM*hj8.ubjC)}(hLA node pointer with refcount incremented, use of_node_put() on it when done.h]hLA node pointer with refcount incremented, use of_node_put() on it when done.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM*hj8.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $of_find_compatible_node (C function)c.of_find_compatible_nodehNtauh1hhhhhhNhNubj)}(hhh](j)}(hqstruct device_node * of_find_compatible_node (struct device_node *from, const char *type, const char *compatible)h]j)}(hostruct device_node *of_find_compatible_node(struct device_node *from, const char *type, const char *compatible)h](j)}(hj"h]hstruct}(hj/hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj/hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM>ubj1)}(h h]h }(hj%/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/hhhj$/hM>ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj6/hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj3/ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj8/modnameN classnameNjbje)}jh]jk)}j^of_find_compatible_nodesbc.of_find_compatible_nodeasbuh1hhj/hhhj$/hM>ubj1)}(h h]h }(hjW/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/hhhj$/hM>ubj)}(hjh]h*}(hje/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/hhhj$/hM>ubj)}(hof_find_compatible_nodeh]jE)}(hjT/h]hof_find_compatible_node}(hjv/hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjr/ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj/hhhj$/hM>ubj)}(hD(struct device_node *from, const char *type, const char *compatible)h](j)}(hstruct device_node *fromh](j)}(hj"h]hstruct}(hj/hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj/ubj1)}(h h]h }(hj/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj/hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj/ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj/modnameN classnameNjbje)}jh]jR/c.of_find_compatible_nodeasbuh1hhj/ubj1)}(h h]h }(hj/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/ubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubjE)}(hfromh]hfrom}(hj/hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubj)}(hconst char *typeh](j)}(hj\h]hconst}(hj0hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj/ubj1)}(h h]h }(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/ubj)}(hcharh]hchar}(hj0hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj/ubj1)}(h h]h }(hj*0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/ubj)}(hjh]h*}(hj80hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubjE)}(htypeh]htype}(hjE0hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubj)}(hconst char *compatibleh](j)}(hj\h]hconst}(hj^0hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjZ0ubj1)}(h h]h }(hjk0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZ0ubj)}(hcharh]hchar}(hjy0hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjZ0ubj1)}(h h]h }(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZ0ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZ0ubjE)}(h compatibleh]h compatible}(hj0hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZ0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubeh}(h]h ]h"]h$]h&]hhuh1jhj/hhhj$/hM>ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj/hhhj$/hM>ubah}(h]j /ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj$/hM>hj /hhubj>)}(hhh]jC)}(hLFind a node based on type and one of the tokens in its "compatible" propertyh]hPFind a node based on type and one of the tokens in its “compatible” property}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM>hj0hhubah}(h]h ]h"]h$]h&]uh1j=hj /hhhj$/hM>ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj0jbj0jcjdjeuh1j hhhhhNhNubjg)}(hX **Parameters** ``struct device_node *from`` The node to start searching from or NULL, the node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on it ``const char *type`` The type string to match "device_type" or NULL to ignore ``const char *compatible`` The string to match to one of the tokens in the device "compatible" list. **Return** A node pointer with refcount incremented, use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hj0h]h Parameters}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj0ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMBhj0ubj)}(hhh](j)}(h``struct device_node *from`` The node to start searching from or NULL, the node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on it h](j)}(h``struct device_node *from``h]j)}(hj 1h]hstruct device_node *from}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 1ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMChj1ubj)}(hhh]jC)}(hThe node to start searching from or NULL, the node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on ith]hThe node to start searching from or NULL, the node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on it}(hj&1hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM@hj#1ubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhj"1hMChj1ubj)}(hN``const char *type`` The type string to match "device_type" or NULL to ignore h](j)}(h``const char *type``h]j)}(hjG1h]hconst char *type}(hjI1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE1ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMDhjA1ubj)}(hhh]jC)}(h8The type string to match "device_type" or NULL to ignoreh]h2h]hof_find_node_with_property}(hj`2hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj\2ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj1hhhj2hM]ubj)}(h1(struct device_node *from, const char *prop_name)h](j)}(hstruct device_node *fromh](j)}(hj"h]hstruct}(hj{2hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjw2ubj1)}(h h]h }(hj2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjw2ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj2hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj2ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj2modnameN classnameNjbje)}jh]j<2c.of_find_node_with_propertyasbuh1hhjw2ubj1)}(h h]h }(hj2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjw2ubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw2ubjE)}(hfromh]hfrom}(hj2hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjw2ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjs2ubj)}(hconst char *prop_nameh](j)}(hj\h]hconst}(hj2hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj2ubj1)}(h h]h }(hj2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2ubj)}(hcharh]hchar}(hj3hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj2ubj1)}(h h]h }(hj3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2ubj)}(hjh]h*}(hj"3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubjE)}(h prop_nameh]h prop_name}(hj/3hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjs2ubeh}(h]h ]h"]h$]h&]hhuh1jhj1hhhj2hM]ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj1hhhj2hM]ubah}(h]j1ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj2hM]hj1hhubj>)}(hhh]jC)}(h5Find a node which has a property with the given name.h]h5Find a node which has a property with the given name.}(hjY3hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM]hjV3hhubah}(h]h ]h"]h$]h&]uh1j=hj1hhhj2hM]ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajq3jbjq3jcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``struct device_node *from`` The node to start searching from or NULL, the node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on it ``const char *prop_name`` The name of the property to look for. **Return** A node pointer with refcount incremented, use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hj{3h]h Parameters}(hj}3hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjy3ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMahju3ubj)}(hhh](j)}(h``struct device_node *from`` The node to start searching from or NULL, the node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on it h](j)}(h``struct device_node *from``h]j)}(hj3h]hstruct device_node *from}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMbhj3ubj)}(hhh]jC)}(hThe node to start searching from or NULL, the node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on ith]hThe node to start searching from or NULL, the node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on it}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM_hj3ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jhj3hMbhj3ubj)}(h@``const char *prop_name`` The name of the property to look for. h](j)}(h``const char *prop_name``h]j)}(hj3h]hconst char *prop_name}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMchj3ubj)}(hhh]jC)}(h%The name of the property to look for.h]h%The name of the property to look for.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj3hMchj3ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jhj3hMchj3ubeh}(h]h ]h"]h$]h&]uh1jhju3ubjC)}(h **Return**h]jq)}(hj4h]hReturn}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj 4ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMehju3ubjC)}(hLA node pointer with refcount incremented, use of_node_put() on it when done.h]hLA node pointer with refcount incremented, use of_node_put() on it when done.}(hj%4hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMehju3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_match_node (C function)c.of_match_nodehNtauh1hhhhhhNhNubj)}(hhh](j)}(hnconst struct of_device_id * of_match_node (const struct of_device_id *matches, const struct device_node *node)h]j)}(hlconst struct of_device_id *of_match_node(const struct of_device_id *matches, const struct device_node *node)h](j)}(hj\h]hconst}(hjT4hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjP4hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjb4hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjP4hhhja4hMubj)}(hj"h]hstruct}(hjp4hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjP4hhhja4hMubj1)}(h h]h }(hj}4hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjP4hhhja4hMubh)}(hhh]jE)}(h of_device_idh]h of_device_id}(hj4hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj4modnameN classnameNjbje)}jh]jk)}j^ of_match_nodesbc.of_match_nodeasbuh1hhjP4hhhja4hMubj1)}(h h]h }(hj4hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjP4hhhja4hMubj)}(hjh]h*}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjP4hhhja4hMubj)}(h of_match_nodeh]jE)}(hj4h]h of_match_node}(hj4hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjP4hhhja4hMubj)}(hD(const struct of_device_id *matches, const struct device_node *node)h](j)}(h"const struct of_device_id *matchesh](j)}(hj\h]hconst}(hj4hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj4ubj1)}(h h]h }(hj4hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4ubj)}(hj"h]hstruct}(hj5hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj4ubj1)}(h h]h }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4ubh)}(hhh]jE)}(h of_device_idh]h of_device_id}(hj"5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj5ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj$5modnameN classnameNjbje)}jh]j4c.of_match_nodeasbuh1hhj4ubj1)}(h h]h }(hj@5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4ubj)}(hjh]h*}(hjN5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubjE)}(hmatchesh]hmatches}(hj[5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj4ubj)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hjt5hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjp5ubj1)}(h h]h }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjp5ubj)}(hj"h]hstruct}(hj5hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjp5ubj1)}(h h]h }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjp5ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj5ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj5modnameN classnameNjbje)}jh]j4c.of_match_nodeasbuh1hhjp5ubj1)}(h h]h }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjp5ubj)}(hjh]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp5ubjE)}(hnodeh]hnode}(hj5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjp5ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj4ubeh}(h]h ]h"]h$]h&]hhuh1jhjP4hhhja4hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjL4hhhja4hMubah}(h]jG4ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhja4hMhjI4hhubj>)}(hhh]jC)}(h7Tell if a device_node has a matching of_match structureh]h7Tell if a device_node has a matching of_match structure}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj 6hhubah}(h]h ]h"]h$]h&]uh1j=hjI4hhhja4hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj(6jbj(6jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const struct of_device_id *matches`` array of of device match structures to search in ``const struct device_node *node`` the of device structure to match against **Description** Low level utility function used by device matching.h](jC)}(h**Parameters**h]jq)}(hj26h]h Parameters}(hj46hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj06ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj,6ubj)}(hhh](j)}(hX``const struct of_device_id *matches`` array of of device match structures to search in h](j)}(h&``const struct of_device_id *matches``h]j)}(hjQ6h]h"const struct of_device_id *matches}(hjS6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjO6ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjK6ubj)}(hhh]jC)}(h0array of of device match structures to search inh]h0array of of device match structures to search in}(hjj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjf6hMhjg6ubah}(h]h ]h"]h$]h&]uh1jhjK6ubeh}(h]h ]h"]h$]h&]uh1jhjf6hMhjH6ubj)}(hL``const struct device_node *node`` the of device structure to match against h](j)}(h"``const struct device_node *node``h]j)}(hj6h]hconst struct device_node *node}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj6ubj)}(hhh]jC)}(h(the of device structure to match againsth]h(the of device structure to match against}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhj6hMhjH6ubeh}(h]h ]h"]h$]h&]uh1jhj,6ubjC)}(h**Description**h]jq)}(hj6h]h Description}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj6ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj,6ubjC)}(h3Low level utility function used by device matching.h]h3Low level utility function used by device matching.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj,6ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ,of_find_matching_node_and_match (C function)!c.of_find_matching_node_and_matchhNtauh1hhhhhhNhNubj)}(hhh](j)}(hstruct device_node * of_find_matching_node_and_match (struct device_node *from, const struct of_device_id *matches, const struct of_device_id **match)h]j)}(hstruct device_node *of_find_matching_node_and_match(struct device_node *from, const struct of_device_id *matches, const struct of_device_id **match)h](j)}(hj"h]hstruct}(hj 7hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj7hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hj7hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7hhhj7hMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj)7hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj&7ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj+7modnameN classnameNjbje)}jh]jk)}j^of_find_matching_node_and_matchsb!c.of_find_matching_node_and_matchasbuh1hhj7hhhj7hMubj1)}(h h]h }(hjJ7hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7hhhj7hMubj)}(hjh]h*}(hjX7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7hhhj7hMubj)}(hof_find_matching_node_and_matchh]jE)}(hjG7h]hof_find_matching_node_and_match}(hji7hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhje7ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj7hhhj7hMubj)}(ha(struct device_node *from, const struct of_device_id *matches, const struct of_device_id **match)h](j)}(hstruct device_node *fromh](j)}(hj"h]hstruct}(hj7hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj7ubj1)}(h h]h }(hj7hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj7hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj7ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj7modnameN classnameNjbje)}jh]jE7!c.of_find_matching_node_and_matchasbuh1hhj7ubj1)}(h h]h }(hj7hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjE)}(hfromh]hfrom}(hj7hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|7ubj)}(h"const struct of_device_id *matchesh](j)}(hj\h]hconst}(hj7hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj7ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubj)}(hj"h]hstruct}(hj8hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj7ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubh)}(hhh]jE)}(h of_device_idh]h of_device_id}(hj-8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj*8ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj/8modnameN classnameNjbje)}jh]jE7!c.of_find_matching_node_and_matchasbuh1hhj7ubj1)}(h h]h }(hjK8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubj)}(hjh]h*}(hjY8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjE)}(hmatchesh]hmatches}(hjf8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|7ubj)}(h!const struct of_device_id **matchh](j)}(hj\h]hconst}(hj8hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj{8ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj{8ubj)}(hj"h]hstruct}(hj8hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj{8ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj{8ubh)}(hhh]jE)}(h of_device_idh]h of_device_id}(hj8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj8ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj8modnameN classnameNjbje)}jh]jE7!c.of_find_matching_node_and_matchasbuh1hhj{8ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj{8ubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{8ubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{8ubjE)}(hmatchh]hmatch}(hj8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj{8ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|7ubeh}(h]h ]h"]h$]h&]hhuh1jhj7hhhj7hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj7hhhj7hMubah}(h]j6ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj7hMhj6hhubj>)}(hhh]jC)}(h1Find a node based on an of_device_id match table.h]h1Find a node based on an of_device_id match table.}(hj(9hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj%9hhubah}(h]h ]h"]h$]h&]uh1j=hj6hhhj7hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj@9jbj@9jcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``struct device_node *from`` The node to start searching from or NULL, the node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on it ``const struct of_device_id *matches`` array of of device match structures to search in ``const struct of_device_id **match`` Updated to point at the matches entry which matched **Return** A node pointer with refcount incremented, use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hjJ9h]h Parameters}(hjL9hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjH9ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjD9ubj)}(hhh](j)}(h``struct device_node *from`` The node to start searching from or NULL, the node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on it h](j)}(h``struct device_node *from``h]j)}(hji9h]hstruct device_node *from}(hjk9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjg9ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjc9ubj)}(hhh]jC)}(hThe node to start searching from or NULL, the node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on ith]hThe node to start searching from or NULL, the node you pass will not be searched, only the next one will; typically, you pass what the previous call returned. of_node_put() will be called on it}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj9ubah}(h]h ]h"]h$]h&]uh1jhjc9ubeh}(h]h ]h"]h$]h&]uh1jhj~9hMhj`9ubj)}(hX``const struct of_device_id *matches`` array of of device match structures to search in h](j)}(h&``const struct of_device_id *matches``h]j)}(hj9h]h"const struct of_device_id *matches}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj9ubj)}(hhh]jC)}(h0array of of device match structures to search inh]h0array of of device match structures to search in}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhj9hMhj`9ubj)}(hZ``const struct of_device_id **match`` Updated to point at the matches entry which matched h](j)}(h%``const struct of_device_id **match``h]j)}(hj9h]h!const struct of_device_id **match}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj9ubj)}(hhh]jC)}(h3Updated to point at the matches entry which matchedh]h3Updated to point at the matches entry which matched}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj9hMhj9ubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhj9hMhj`9ubeh}(h]h ]h"]h$]h&]uh1jhjD9ubjC)}(h **Return**h]jq)}(hj:h]hReturn}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj:ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjD9ubjC)}(hLA node pointer with refcount incremented, use of_node_put() on it when done.h]hLA node pointer with refcount incremented, use of_node_put() on it when done.}(hj-:hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjD9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j %of_alias_from_compatible (C function)c.of_alias_from_compatiblehNtauh1hhhhhhNhNubj)}(hhh](j)}(hSint of_alias_from_compatible (const struct device_node *node, char *alias, int len)h]j)}(hRint of_alias_from_compatible(const struct device_node *node, char *alias, int len)h](j)}(hinth]hint}(hj\:hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjX:hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjk:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjX:hhhjj:hMubj)}(hof_alias_from_compatibleh]jE)}(hof_alias_from_compatibleh]hof_alias_from_compatible}(hj}:hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjy:ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjX:hhhjj:hMubj)}(h6(const struct device_node *node, char *alias, int len)h](j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hj:hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj:ubj1)}(h h]h }(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:ubj)}(hj"h]hstruct}(hj:hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj:ubj1)}(h h]h }(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj:hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj:ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj:modnameN classnameNjbje)}jh]jk)}j^j:sbc.of_alias_from_compatibleasbuh1hhj:ubj1)}(h h]h }(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:ubj)}(hjh]h*}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubjE)}(hnodeh]hnode}(hj ;hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj:ubj)}(h char *aliash](j)}(hcharh]hchar}(hj&;hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj";ubj1)}(h h]h }(hj4;hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj";ubj)}(hjh]h*}(hjB;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj";ubjE)}(haliash]halias}(hjO;hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj";ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj:ubj)}(hint lenh](j)}(hinth]hint}(hjh;hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjd;ubj1)}(h h]h }(hjv;hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjd;ubjE)}(hlenh]hlen}(hj;hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjd;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj:ubeh}(h]h ]h"]h$]h&]hhuh1jhjX:hhhjj:hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjT:hhhjj:hMubah}(h]jO:ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjj:hMhjQ:hhubj>)}(hhh]jC)}(hBLookup appropriate alias for a device node depending on compatibleh]hBLookup appropriate alias for a device node depending on compatible}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj;hhubah}(h]h ]h"]h$]h&]uh1j=hjQ:hhhjj:hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj;jbj;jcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *node`` pointer to a device tree node ``char *alias`` Pointer to buffer that alias value will be copied into ``int len`` Length of alias value **Description** Based on the value of the compatible property, this routine will attempt to choose an appropriate alias value for a particular device tree node. It does this by stripping the manufacturer prefix (as delimited by a ',') from the first entry in the compatible list property. **Note** The matching on just the "product" side of the compatible is a relic from I2C and SPI. Please do not add any new user. **Return** This routine returns 0 on success, <0 on failure.h](jC)}(h**Parameters**h]jq)}(hj;h]h Parameters}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj;ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj;ubj)}(hhh](j)}(hA``const struct device_node *node`` pointer to a device tree node h](j)}(h"``const struct device_node *node``h]j)}(hj;h]hconst struct device_node *node}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj;ubj)}(hhh]jC)}(hpointer to a device tree nodeh]hpointer to a device tree node}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj<hMhj<ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhj<hMhj;ubj)}(hG``char *alias`` Pointer to buffer that alias value will be copied into h](j)}(h``char *alias``h]j)}(hj(<h]h char *alias}(hj*<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&<ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj"<ubj)}(hhh]jC)}(h6Pointer to buffer that alias value will be copied intoh]h6Pointer to buffer that alias value will be copied into}(hjA<hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj=<hMhj><ubah}(h]h ]h"]h$]h&]uh1jhj"<ubeh}(h]h ]h"]h$]h&]uh1jhj=<hMhj;ubj)}(h"``int len`` Length of alias value h](j)}(h ``int len``h]j)}(hja<h]hint len}(hjc<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_<ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj[<ubj)}(hhh]jC)}(hLength of alias valueh]hLength of alias value}(hjz<hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjv<hMhjw<ubah}(h]h ]h"]h$]h&]uh1jhj[<ubeh}(h]h ]h"]h$]h&]uh1jhjv<hMhj;ubeh}(h]h ]h"]h$]h&]uh1jhj;ubjC)}(h**Description**h]jq)}(hj<h]h Description}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj<ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj;ubjC)}(hXBased on the value of the compatible property, this routine will attempt to choose an appropriate alias value for a particular device tree node. It does this by stripping the manufacturer prefix (as delimited by a ',') from the first entry in the compatible list property.h]hXBased on the value of the compatible property, this routine will attempt to choose an appropriate alias value for a particular device tree node. It does this by stripping the manufacturer prefix (as delimited by a ‘,’) from the first entry in the compatible list property.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj;ubjC)}(h**Note**h]jq)}(hj<h]hNote}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj<ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj;ubjC)}(hvThe matching on just the "product" side of the compatible is a relic from I2C and SPI. Please do not add any new user.h]hzThe matching on just the “product” side of the compatible is a relic from I2C and SPI. Please do not add any new user.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj;ubjC)}(h **Return**h]jq)}(hj<h]hReturn}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj<ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj;ubjC)}(h1This routine returns 0 on success, <0 on failure.h]h1This routine returns 0 on success, <0 on failure.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $of_find_node_by_phandle (C function)c.of_find_node_by_phandlehNtauh1hhhhhhNhNubj)}(hhh](j)}(h=struct device_node * of_find_node_by_phandle (phandle handle)h]j)}(h;struct device_node *of_find_node_by_phandle(phandle handle)h](j)}(hj"h]hstruct}(hj/=hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj+=hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hj==hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj+=hhhj<=hMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjN=hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjK=ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjP=modnameN classnameNjbje)}jh]jk)}j^of_find_node_by_phandlesbc.of_find_node_by_phandleasbuh1hhj+=hhhj<=hMubj1)}(h h]h }(hjo=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj+=hhhj<=hMubj)}(hjh]h*}(hj}=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+=hhhj<=hMubj)}(hof_find_node_by_phandleh]jE)}(hjl=h]hof_find_node_by_phandle}(hj=hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj=ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj+=hhhj<=hMubj)}(h(phandle handle)h]j)}(hphandle handleh](h)}(hhh]jE)}(hphandleh]hphandle}(hj=hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj=ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj=modnameN classnameNjbje)}jh]jj=c.of_find_node_by_phandleasbuh1hhj=ubj1)}(h h]h }(hj=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj=ubjE)}(hhandleh]hhandle}(hj=hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj=ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj=ubah}(h]h ]h"]h$]h&]hhuh1jhj+=hhhj<=hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj'=hhhj<=hMubah}(h]j"=ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj<=hMhj$=hhubj>)}(hhh]jC)}(hFind a node given a phandleh]hFind a node given a phandle}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj=hhubah}(h]h ]h"]h$]h&]uh1j=hj$=hhhj<=hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj>jbj>jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``phandle handle`` phandle of the node to find **Return** A node pointer with refcount incremented, use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hj$>h]h Parameters}(hj&>hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj">ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj>ubj)}(hhh]j)}(h/``phandle handle`` phandle of the node to find h](j)}(h``phandle handle``h]j)}(hjC>h]hphandle handle}(hjE>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjA>ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj=>ubj)}(hhh]jC)}(hphandle of the node to findh]hphandle of the node to find}(hj\>hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjX>hMhjY>ubah}(h]h ]h"]h$]h&]uh1jhj=>ubeh}(h]h ]h"]h$]h&]uh1jhjX>hMhj:>ubah}(h]h ]h"]h$]h&]uh1jhj>ubjC)}(h **Return**h]jq)}(hj~>h]hReturn}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj|>ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj>ubjC)}(hLA node pointer with refcount incremented, use of_node_put() on it when done.h]hLA node pointer with refcount incremented, use of_node_put() on it when done.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j +of_parse_phandle_with_args_map (C function) c.of_parse_phandle_with_args_maphNtauh1hhhhhhNhNubj)}(hhh](j)}(hint of_parse_phandle_with_args_map (const struct device_node *np, const char *list_name, const char *stem_name, int index, struct of_phandle_args *out_args)h]j)}(hint of_parse_phandle_with_args_map(const struct device_node *np, const char *list_name, const char *stem_name, int index, struct of_phandle_args *out_args)h](j)}(hinth]hint}(hj>hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj>hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hj>hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>hhhj>hMubj)}(hof_parse_phandle_with_args_maph]jE)}(hof_parse_phandle_with_args_maph]hof_parse_phandle_with_args_map}(hj>hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj>ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj>hhhj>hMubj)}(hy(const struct device_node *np, const char *list_name, const char *stem_name, int index, struct of_phandle_args *out_args)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hj?hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj>ubj1)}(h h]h }(hj ?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>ubj)}(hj"h]hstruct}(hj?hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj>ubj1)}(h h]h }(hj(?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj9?hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj6?ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj;?modnameN classnameNjbje)}jh]jk)}j^j>sb c.of_parse_phandle_with_args_mapasbuh1hhj>ubj1)}(h h]h }(hjY?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>ubj)}(hjh]h*}(hjg?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubjE)}(hnph]hnp}(hjt?hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj>ubj)}(hconst char *list_nameh](j)}(hj\h]hconst}(hj?hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj?ubj1)}(h h]h }(hj?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj?ubj)}(hcharh]hchar}(hj?hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj?ubj1)}(h h]h }(hj?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj?ubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubjE)}(h list_nameh]h list_name}(hj?hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj>ubj)}(hconst char *stem_nameh](j)}(hj\h]hconst}(hj?hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj?ubj1)}(h h]h }(hj?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj?ubj)}(hcharh]hchar}(hj@hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj?ubj1)}(h h]h }(hj@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj?ubj)}(hjh]h*}(hj!@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubjE)}(h stem_nameh]h stem_name}(hj.@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj>ubj)}(h int indexh](j)}(hinth]hint}(hjG@hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjC@ubj1)}(h h]h }(hjU@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjC@ubjE)}(hindexh]hindex}(hjc@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjC@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj>ubj)}(h struct of_phandle_args *out_argsh](j)}(hj"h]hstruct}(hj|@hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjx@ubj1)}(h h]h }(hj@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjx@ubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hj@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj@ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj@modnameN classnameNjbje)}jh]jU? c.of_parse_phandle_with_args_mapasbuh1hhjx@ubj1)}(h h]h }(hj@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjx@ubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjx@ubjE)}(hout_argsh]hout_args}(hj@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjx@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj>ubeh}(h]h ]h"]h$]h&]hhuh1jhj>hhhj>hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj>hhhj>hMubah}(h]j>ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj>hMhj>hhubj>)}(hhh]jC)}(h5Find a node pointed by phandle in a list and remap ith]h5Find a node pointed by phandle in a list and remap it}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj@hhubah}(h]h ]h"]h$]h&]uh1j=hj>hhhj>hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajAjbjAjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` pointer to a device tree node containing a list ``const char *list_name`` property name that contains a list ``const char *stem_name`` stem of property names that specify phandles' arguments count ``int index`` index of a phandle to parse out ``struct of_phandle_args *out_args`` optional pointer to output arguments structure (will be filled) **Description** This function is useful to parse lists of phandles and their arguments. Returns 0 on success and fills out_args, on error returns appropriate errno value. The difference between this function and of_parse_phandle_with_args() is that this API remaps a phandle if the node the phandle points to has a <**stem_name**>-map property. Caller is responsible to call of_node_put() on the returned out_args->np pointer. Example:: phandle1: node1 { #list-cells = <2>; }; phandle2: node2 { #list-cells = <1>; }; phandle3: node3 { #list-cells = <1>; list-map = <0 &phandle2 3>, <1 &phandle2 2>, <2 &phandle1 5 1>; list-map-mask = <0x3>; }; node4 { list = <&phandle1 1 2 &phandle3 0>; }; To get a device_node of the ``node2`` node you may call this: of_parse_phandle_with_args(node4, "list", "list", 1, :c:type:`args`);5h](jC)}(h**Parameters**h]jq)}(hjAh]h Parameters}(hj!AhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjAubj)}(hhh](j)}(hQ``const struct device_node *np`` pointer to a device tree node containing a list h](j)}(h ``const struct device_node *np``h]j)}(hj>Ah]hconst struct device_node *np}(hj@AhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-map property.h](hX,This function is useful to parse lists of phandles and their arguments. Returns 0 on success and fills out_args, on error returns appropriate errno value. The difference between this function and of_parse_phandle_with_args() is that this API remaps a phandle if the node the phandle points to has a <}(hjsBhhhNhNubjq)}(h **stem_name**h]h stem_name}(hj{BhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjsBubh>-map property.}(hjsBhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjAubjC)}(hQCaller is responsible to call of_node_put() on the returned out_args->np pointer.h]hQCaller is responsible to call of_node_put() on the returned out_args->np pointer.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjAubjC)}(h Example::h]hExample:}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjAubh literal_block)}(hX6phandle1: node1 { #list-cells = <2>; }; phandle2: node2 { #list-cells = <1>; }; phandle3: node3 { #list-cells = <1>; list-map = <0 &phandle2 3>, <1 &phandle2 2>, <2 &phandle1 5 1>; list-map-mask = <0x3>; }; node4 { list = <&phandle1 1 2 &phandle3 0>; };h]hX6phandle1: node1 { #list-cells = <2>; }; phandle2: node2 { #list-cells = <1>; }; phandle3: node3 { #list-cells = <1>; list-map = <0 &phandle2 3>, <1 &phandle2 2>, <2 &phandle1 5 1>; list-map-mask = <0x3>; }; node4 { list = <&phandle1 1 2 &phandle3 0>; };}hjBsbah}(h]h ]h"]h$]h&]hhuh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjAubjC)}(hTo get a device_node of the ``node2`` node you may call this: of_parse_phandle_with_args(node4, "list", "list", 1, :c:type:`args`);h](hTo get a device_node of the }(hjBhhhNhNubj)}(h ``node2``h]hnode2}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubhV node you may call this: of_parse_phandle_with_args(node4, “list”, “list”, 1, }(hjBhhhNhNubh)}(h:c:type:`args`h]j)}(hjBh]hargs}(hjBhhhNhNubah}(h]h ](xrefj\c-typeeh"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]refdocdevicetree/kernel-api refdomainj\reftypetype refexplicitrefwarnjbje)}jh]sb reftargetargsuh1hhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjBubh);}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhjChMhjAubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'of_count_phandle_with_args (C function)c.of_count_phandle_with_argshNtauh1hhhhhhNhNubj)}(hhh](j)}(hlint of_count_phandle_with_args (const struct device_node *np, const char *list_name, const char *cells_name)h]j)}(hkint of_count_phandle_with_args(const struct device_node *np, const char *list_name, const char *cells_name)h](j)}(hinth]hint}(hj-ChhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj)ChhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hj)}(hhh]jC)}(h4Find the number of phandles references in a propertyh]h4Find the number of phandles references in a property}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjDhhubah}(h]h ]h"]h$]h&]uh1j=hj"Chhhj;ChMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajDjbjDjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` pointer to a device tree node containing a list ``const char *list_name`` property name that contains a list ``const char *cells_name`` property name that specifies phandles' arguments count **Return** The number of phandle + argument tuples within a property. It is a typical pattern to encode a list of phandle and variable arguments into a single property. The number of arguments is encoded by a property in the phandle-target node. For example, a gpios property would contain a list of GPIO specifies consisting of a phandle and 1 or more arguments. The number of arguments are determined by the #gpio-cells property in the node pointed to by the phandle.h](jC)}(h**Parameters**h]jq)}(hjDh]h Parameters}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjDubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjDubj)}(hhh](j)}(hQ``const struct device_node *np`` pointer to a device tree node containing a list h](j)}(h ``const struct device_node *np``h]j)}(hjEh]hconst struct device_node *np}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjDubj)}(hhh]jC)}(h/pointer to a device tree node containing a listh]h/pointer to a device tree node containing a list}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjEhMhjEubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhjEhMhjDubj)}(h=``const char *list_name`` property name that contains a list h](j)}(h``const char *list_name``h]j)}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:Eubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj6Eubj)}(hhh]jC)}(h"property name that contains a listh]h"property name that contains a list}(hjUEhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjQEhMhjREubah}(h]h ]h"]h$]h&]uh1jhj6Eubeh}(h]h ]h"]h$]h&]uh1jhjQEhMhjDubj)}(hR``const char *cells_name`` property name that specifies phandles' arguments count h](j)}(h``const char *cells_name``h]j)}(hjuEh]hconst char *cells_name}(hjwEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsEubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjoEubj)}(hhh]jC)}(h6property name that specifies phandles' arguments counth]h8property name that specifies phandles’ arguments count}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjEhMhjEubah}(h]h ]h"]h$]h&]uh1jhjoEubeh}(h]h ]h"]h$]h&]uh1jhjEhMhjDubeh}(h]h ]h"]h$]h&]uh1jhjDubjC)}(h **Return**h]jq)}(hjEh]hReturn}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjEubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjDubjC)}(hXThe number of phandle + argument tuples within a property. It is a typical pattern to encode a list of phandle and variable arguments into a single property. The number of arguments is encoded by a property in the phandle-target node. For example, a gpios property would contain a list of GPIO specifies consisting of a phandle and 1 or more arguments. The number of arguments are determined by the #gpio-cells property in the node pointed to by the phandle.h]hXThe number of phandle + argument tuples within a property. It is a typical pattern to encode a list of phandle and variable arguments into a single property. The number of arguments is encoded by a property in the phandle-target node. For example, a gpios property would contain a list of GPIO specifies consisting of a phandle and 1 or more arguments. The number of arguments are determined by the #gpio-cells property in the node pointed to by the phandle.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_add_property (C function)c.of_add_propertyhNtauh1hhhhhhNhNubj)}(hhh](j)}(hCint of_add_property (struct device_node *np, struct property *prop)h]j)}(hBint of_add_property(struct device_node *np, struct property *prop)h](j)}(hinth]hint}(hjEhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjEhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjFhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjEhhhjFhMubj)}(hof_add_propertyh]jE)}(hof_add_propertyh]hof_add_property}(hjFhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjFubah}(h]h ](jjeh"]h$]h&]hhuh1jhjEhhhjFhMubj)}(h/(struct device_node *np, struct property *prop)h](j)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hj2FhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj.Fubj1)}(h h]h }(hj?FhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.Fubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjPFhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjMFubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjRFmodnameN classnameNjbje)}jh]jk)}j^jFsbc.of_add_propertyasbuh1hhj.Fubj1)}(h h]h }(hjpFhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.Fubj)}(hjh]h*}(hj~FhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.FubjE)}(hnph]hnp}(hjFhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj.Fubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*Fubj)}(hstruct property *proph](j)}(hj"h]hstruct}(hjFhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjFubj1)}(h h]h }(hjFhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjFubh)}(hhh]jE)}(hpropertyh]hproperty}(hjFhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjFubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjFmodnameN classnameNjbje)}jh]jlFc.of_add_propertyasbuh1hhjFubj1)}(h h]h }(hjFhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjFubj)}(hjh]h*}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubjE)}(hproph]hprop}(hjFhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjFubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*Fubeh}(h]h ]h"]h$]h&]hhuh1jhjEhhhjFhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjEhhhjFhMubah}(h]jEah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjFhMhjEhhubj>)}(hhh]jC)}(hAdd a property to a nodeh]hAdd a property to a node}(hj%GhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj"Ghhubah}(h]h ]h"]h$]h&]uh1j=hjEhhhjFhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj=Gjbj=Gjcjdjeuh1j hhhhhNhNubjg)}(hn**Parameters** ``struct device_node *np`` Caller's Device Node ``struct property *prop`` Property to addh](jC)}(h**Parameters**h]jq)}(hjGGh]h Parameters}(hjIGhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjEGubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjAGubj)}(hhh](j)}(h0``struct device_node *np`` Caller's Device Node h](j)}(h``struct device_node *np``h]j)}(hjfGh]hstruct device_node *np}(hjhGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdGubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj`Gubj)}(hhh]jC)}(hCaller's Device Nodeh]hCaller’s Device Node}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj{GhMhj|Gubah}(h]h ]h"]h$]h&]uh1jhj`Gubeh}(h]h ]h"]h$]h&]uh1jhj{GhMhj]Gubj)}(h)``struct property *prop`` Property to addh](j)}(h``struct property *prop``h]j)}(hjGh]hstruct property *prop}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjGubj)}(hhh]jC)}(hProperty to addh]hProperty to add}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjGubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1jhjGhMhj]Gubeh}(h]h ]h"]h$]h&]uh1jhjAGubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_remove_property (C function)c.of_remove_propertyhNtauh1hhhhhhNhNubj)}(hhh](j)}(hFint of_remove_property (struct device_node *np, struct property *prop)h]j)}(hEint of_remove_property(struct device_node *np, struct property *prop)h](j)}(hinth]hint}(hjGhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjGhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGhhhjHhMubj)}(hof_remove_propertyh]jE)}(hof_remove_propertyh]hof_remove_property}(hjHhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjHubah}(h]h ](jjeh"]h$]h&]hhuh1jhjGhhhjHhMubj)}(h/(struct device_node *np, struct property *prop)h](j)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hj6HhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj2Hubj1)}(h h]h }(hjCHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2Hubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjTHhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQHubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjVHmodnameN classnameNjbje)}jh]jk)}j^jHsbc.of_remove_propertyasbuh1hhj2Hubj1)}(h h]h }(hjtHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2Hubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2HubjE)}(hnph]hnp}(hjHhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj2Hubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.Hubj)}(hstruct property *proph](j)}(hj"h]hstruct}(hjHhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjHubj1)}(h h]h }(hjHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjHubh)}(hhh]jE)}(hpropertyh]hproperty}(hjHhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjHubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjHmodnameN classnameNjbje)}jh]jpHc.of_remove_propertyasbuh1hhjHubj1)}(h h]h }(hjHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjHubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubjE)}(hproph]hprop}(hjHhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjHubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.Hubeh}(h]h ]h"]h$]h&]hhuh1jhjGhhhjHhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjGhhhjHhMubah}(h]jGah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjHhMhjGhhubj>)}(hhh]jC)}(hRemove a property from a node.h]hRemove a property from a node.}(hj)IhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj&Ihhubah}(h]h ]h"]h$]h&]uh1j=hjGhhhjHhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajAIjbjAIjcjdjeuh1j hhhhhNhNubjg)}(hX^**Parameters** ``struct device_node *np`` Caller's Device Node ``struct property *prop`` Property to remove **Description** Note that we don't actually remove it, since we have given out who-knows-how-many pointers to the data using get-property. Instead we just move the property to the "dead properties" list, so it won't be found any more.h](jC)}(h**Parameters**h]jq)}(hjKIh]h Parameters}(hjMIhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjIIubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjEIubj)}(hhh](j)}(h0``struct device_node *np`` Caller's Device Node h](j)}(h``struct device_node *np``h]j)}(hjjIh]hstruct device_node *np}(hjlIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhIubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjdIubj)}(hhh]jC)}(hCaller's Device Nodeh]hCaller’s Device Node}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjIhMhjIubah}(h]h ]h"]h$]h&]uh1jhjdIubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjaIubj)}(h-``struct property *prop`` Property to remove h](j)}(h``struct property *prop``h]j)}(hjIh]hstruct property *prop}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjIubj)}(hhh]jC)}(hProperty to removeh]hProperty to remove}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjIhMhjIubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjaIubeh}(h]h ]h"]h$]h&]uh1jhjEIubjC)}(h**Description**h]jq)}(hjIh]h Description}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjIubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjEIubjC)}(hNote that we don't actually remove it, since we have given out who-knows-how-many pointers to the data using get-property. Instead we just move the property to the "dead properties" list, so it won't be found any more.h]hNote that we don’t actually remove it, since we have given out who-knows-how-many pointers to the data using get-property. Instead we just move the property to the “dead properties” list, so it won’t be found any more.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjEIubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_alias_get_id (C function)c.of_alias_get_idhNtauh1hhhhhhNhNubj)}(hhh](j)}(hDint of_alias_get_id (const struct device_node *np, const char *stem)h]j)}(hCint of_alias_get_id(const struct device_node *np, const char *stem)h](j)}(hinth]hint}(hj#JhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjJhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hj2JhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJhhhj1JhMubj)}(hof_alias_get_idh]jE)}(hof_alias_get_idh]hof_alias_get_id}(hjDJhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj@Jubah}(h]h ](jjeh"]h$]h&]hhuh1jhjJhhhj1JhMubj)}(h0(const struct device_node *np, const char *stem)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hj`JhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj\Jubj1)}(h h]h }(hjmJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\Jubj)}(hj"h]hstruct}(hj{JhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj\Jubj1)}(h h]h }(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\Jubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjJhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjJubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjJmodnameN classnameNjbje)}jh]jk)}j^jFJsbc.of_alias_get_idasbuh1hhj\Jubj1)}(h h]h }(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\Jubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\JubjE)}(hnph]hnp}(hjJhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj\Jubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXJubj)}(hconst char *stemh](j)}(hj\h]hconst}(hjJhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjJubj1)}(h h]h }(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJubj)}(hcharh]hchar}(hjKhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjJubj1)}(h h]h }(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJubj)}(hjh]h*}(hj$KhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubjE)}(hstemh]hstem}(hj1KhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjJubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXJubeh}(h]h ]h"]h$]h&]hhuh1jhjJhhhj1JhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjJhhhj1JhMubah}(h]jJah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj1JhMhjJhhubj>)}(hhh]jC)}(h&Get alias id for the given device_nodeh]h&Get alias id for the given device_node}(hj[KhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjXKhhubah}(h]h ]h"]h$]h&]uh1j=hjJhhhj1JhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajsKjbjsKjcjdjeuh1j hhhhhNhNubjg)}(hX)**Parameters** ``const struct device_node *np`` Pointer to the given device_node ``const char *stem`` Alias stem of the given device_node **Description** The function travels the lookup table to get the alias id for the given device_node and alias stem. **Return** The alias id if found.h](jC)}(h**Parameters**h]jq)}(hj}Kh]h Parameters}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj{Kubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjwKubj)}(hhh](j)}(hB``const struct device_node *np`` Pointer to the given device_node h](j)}(h ``const struct device_node *np``h]j)}(hjKh]hconst struct device_node *np}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjKubj)}(hhh]jC)}(h Pointer to the given device_nodeh]h Pointer to the given device_node}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjKhMhjKubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhjKhMhjKubj)}(h9``const char *stem`` Alias stem of the given device_node h](j)}(h``const char *stem``h]j)}(hjKh]hconst char *stem}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjKubj)}(hhh]jC)}(h#Alias stem of the given device_nodeh]h#Alias stem of the given device_node}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjKhMhjKubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhjKhMhjKubeh}(h]h ]h"]h$]h&]uh1jhjwKubjC)}(h**Description**h]jq)}(hjLh]h Description}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjLubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjwKubjC)}(hcThe function travels the lookup table to get the alias id for the given device_node and alias stem.h]hcThe function travels the lookup table to get the alias id for the given device_node and alias stem.}(hj&LhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjwKubjC)}(h **Return**h]jq)}(hj7Lh]hReturn}(hj9LhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj5Lubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjwKubjC)}(hThe alias id if found.h]hThe alias id if found.}(hjMLhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjwKubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $of_alias_get_highest_id (C function)c.of_alias_get_highest_idhNtauh1hhhhhhNhNubj)}(hhh](j)}(h.int of_alias_get_highest_id (const char *stem)h]j)}(h-int of_alias_get_highest_id(const char *stem)h](j)}(hinth]hint}(hj|LhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjxLhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjLhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjxLhhhjLhMubj)}(hof_alias_get_highest_idh]jE)}(hof_alias_get_highest_idh]hof_alias_get_highest_id}(hjLhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjLubah}(h]h ](jjeh"]h$]h&]hhuh1jhjxLhhhjLhMubj)}(h(const char *stem)h]j)}(hconst char *stemh](j)}(hj\h]hconst}(hjLhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjLubj1)}(h h]h }(hjLhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjLubj)}(hcharh]hchar}(hjLhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjLubj1)}(h h]h }(hjLhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjLubj)}(hjh]h*}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubjE)}(hstemh]hstem}(hjLhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjLubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjLubah}(h]h ]h"]h$]h&]hhuh1jhjxLhhhjLhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjtLhhhjLhMubah}(h]joLah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjLhMhjqLhhubj>)}(hhh]jC)}(h'Get highest alias id for the given stemh]h'Get highest alias id for the given stem}(hj'MhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj$Mhhubah}(h]h ]h"]h$]h&]uh1j=hjqLhhhjLhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj?Mjbj?Mjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const char *stem`` Alias stem to be examined **Description** The function travels the lookup table to get the highest alias id for the given alias stem. It returns the alias id if found.h](jC)}(h**Parameters**h]jq)}(hjIMh]h Parameters}(hjKMhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjGMubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjCMubj)}(hhh]j)}(h/``const char *stem`` Alias stem to be examined h](j)}(h``const char *stem``h]j)}(hjhMh]hconst char *stem}(hjjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfMubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjbMubj)}(hhh]jC)}(hAlias stem to be examinedh]hAlias stem to be examined}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj}MhMhj~Mubah}(h]h ]h"]h$]h&]uh1jhjbMubeh}(h]h ]h"]h$]h&]uh1jhj}MhMhj_Mubah}(h]h ]h"]h$]h&]uh1jhjCMubjC)}(h**Description**h]jq)}(hjMh]h Description}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjMubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjCMubjC)}(h~The function travels the lookup table to get the highest alias id for the given alias stem. It returns the alias id if found.h]h~The function travels the lookup table to get the highest alias id for the given alias stem. It returns the alias id if found.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjCMubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_console_check (C function)c.of_console_checkhNtauh1hhhhhhNhNubj)}(hhh](j)}(hKbool of_console_check (const struct device_node *dn, char *name, int index)h]j)}(hJbool of_console_check(const struct device_node *dn, char *name, int index)h](j)}(hjh]hbool}(hjMhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjMhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjMhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjMhhhjMhMubj)}(hof_console_checkh]jE)}(hof_console_checkh]hof_console_check}(hjNhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjMhhhjMhMubj)}(h5(const struct device_node *dn, char *name, int index)h](j)}(hconst struct device_node *dnh](j)}(hj\h]hconst}(hj$NhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj Nubj1)}(h h]h }(hj1NhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj Nubj)}(hj"h]hstruct}(hj?NhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj Nubj1)}(h h]h }(hjLNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj Nubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj]NhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZNubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj_NmodnameN classnameNjbje)}jh]jk)}j^j Nsbc.of_console_checkasbuh1hhj Nubj1)}(h h]h }(hj}NhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj Nubj)}(hjh]h*}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj NubjE)}(hdnh]hdn}(hjNhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj Nubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubj)}(h char *nameh](j)}(hcharh]hchar}(hjNhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjNubj1)}(h h]h }(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubj)}(hjh]h*}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubjE)}(hnameh]hname}(hjNhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubj)}(h int indexh](j)}(hinth]hint}(hjNhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjNubj1)}(h h]h }(hjOhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubjE)}(hindexh]hindex}(hjOhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubeh}(h]h ]h"]h$]h&]hhuh1jhjMhhhjMhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjMhhhjMhMubah}(h]jMah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjMhMhjMhhubj>)}(hhh]jC)}(h#Test and setup console for DT setuph]h#Test and setup console for DT setup}(hj9OhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj6Ohhubah}(h]h ]h"]h$]h&]uh1j=hjMhhhjMhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajQOjbjQOjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *dn`` Pointer to device node ``char *name`` Name to use for preferred console without index. ex. "ttyS" ``int index`` Index to use for preferred console. **Description** Check if the given device node matches the stdout-path property in the /chosen node. If it does then register it as the preferred console. **Return** TRUE if console successfully setup. Otherwise return FALSE.h](jC)}(h**Parameters**h]jq)}(hj[Oh]h Parameters}(hj]OhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjYOubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjUOubj)}(hhh](j)}(h8``const struct device_node *dn`` Pointer to device node h](j)}(h ``const struct device_node *dn``h]j)}(hjzOh]hconst struct device_node *dn}(hj|OhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxOubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjtOubj)}(hhh]jC)}(hPointer to device nodeh]hPointer to device node}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjOhMhjOubah}(h]h ]h"]h$]h&]uh1jhjtOubeh}(h]h ]h"]h$]h&]uh1jhjOhMhjqOubj)}(hK``char *name`` Name to use for preferred console without index. ex. "ttyS" h](j)}(h``char *name``h]j)}(hjOh]h char *name}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjOubj)}(hhh]jC)}(h;Name to use for preferred console without index. ex. "ttyS"h]h?Name to use for preferred console without index. ex. “ttyS”}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjOhMhjOubah}(h]h ]h"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]uh1jhjOhMhjqOubj)}(h2``int index`` Index to use for preferred console. h](j)}(h ``int index``h]j)}(hjOh]h int index}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjOubj)}(hhh]jC)}(h#Index to use for preferred console.h]h#Index to use for preferred console.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjPhMhjPubah}(h]h ]h"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]uh1jhjPhMhjqOubeh}(h]h ]h"]h$]h&]uh1jhjUOubjC)}(h**Description**h]jq)}(hj'Ph]h Description}(hj)PhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj%Pubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjUOubjC)}(hCheck if the given device node matches the stdout-path property in the /chosen node. If it does then register it as the preferred console.h]hCheck if the given device node matches the stdout-path property in the /chosen node. If it does then register it as the preferred console.}(hj=PhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjUOubjC)}(h **Return**h]jq)}(hjNPh]hReturn}(hjPPhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjLPubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjUOubjC)}(h;TRUE if console successfully setup. Otherwise return FALSE.h]h;TRUE if console successfully setup. Otherwise return FALSE.}(hjdPhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjUOubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_map_id (C function) c.of_map_idhNtauh1hhhhhhNhNubj)}(hhh](j)}(hint of_map_id (const struct device_node *np, u32 id, const char *map_name, const char *cells_name, const char *map_mask_name, struct device_node * const *filter_np, struct of_phandle_args *arg)h]j)}(hint of_map_id(const struct device_node *np, u32 id, const char *map_name, const char *cells_name, const char *map_mask_name, struct device_node *const *filter_np, struct of_phandle_args *arg)h](j)}(hinth]hint}(hjPhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjPhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMkubj1)}(h h]h }(hjPhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPhhhjPhMkubj)}(h of_map_idh]jE)}(h of_map_idh]h of_map_id}(hjPhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPubah}(h]h ](jjeh"]h$]h&]hhuh1jhjPhhhjPhMkubj)}(h(const struct device_node *np, u32 id, const char *map_name, const char *cells_name, const char *map_mask_name, struct device_node *const *filter_np, struct of_phandle_args *arg)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjPhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjPubj1)}(h h]h }(hjPhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubj)}(hj"h]hstruct}(hjPhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjPubj1)}(h h]h }(hjPhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj QhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj QmodnameN classnameNjbje)}jh]jk)}j^jPsb c.of_map_idasbuh1hhjPubj1)}(h h]h }(hj)QhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubj)}(hjh]h*}(hj7QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubjE)}(hnph]hnp}(hjDQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hu32 idh](h)}(hhh]jE)}(hu32h]hu32}(hj`QhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj]Qubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjbQmodnameN classnameNjbje)}jh]j%Q c.of_map_idasbuh1hhjYQubj1)}(h h]h }(hj~QhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjYQubjE)}(hidh]hid}(hjQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjYQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hconst char *map_nameh](j)}(hj\h]hconst}(hjQhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjQubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubj)}(hcharh]hchar}(hjQhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjQubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubj)}(hjh]h*}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubjE)}(hmap_nameh]hmap_name}(hjQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hconst char *cells_nameh](j)}(hj\h]hconst}(hjRhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjQubj1)}(h h]h }(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubj)}(hcharh]hchar}(hjRhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjQubj1)}(h h]h }(hj+RhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubj)}(hjh]h*}(hj9RhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubjE)}(h cells_nameh]h cells_name}(hjFRhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hconst char *map_mask_nameh](j)}(hj\h]hconst}(hj_RhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj[Rubj1)}(h h]h }(hjlRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[Rubj)}(hcharh]hchar}(hjzRhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj[Rubj1)}(h h]h }(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[Rubj)}(hjh]h*}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[RubjE)}(h map_mask_nameh]h map_mask_name}(hjRhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj[Rubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(h$struct device_node *const *filter_nph](j)}(hj"h]hstruct}(hjRhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjRubj1)}(h h]h }(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjRhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjRubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjRmodnameN classnameNjbje)}jh]j%Q c.of_map_idasbuh1hhjRubj1)}(h h]h }(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubj)}(hjh]h*}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubj)}(hj\h]hconst}(hjShhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjRubj1)}(h h]h }(hj ShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubj)}(hjh]h*}(hj.ShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubjE)}(h filter_nph]h filter_np}(hj;ShhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjRubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hstruct of_phandle_args *argh](j)}(hj"h]hstruct}(hjTShhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjPSubj1)}(h h]h }(hjaShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPSubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hjrShhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjoSubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjtSmodnameN classnameNjbje)}jh]j%Q c.of_map_idasbuh1hhjPSubj1)}(h h]h }(hjShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPSubj)}(hjh]h*}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPSubjE)}(hargh]harg}(hjShhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPSubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubeh}(h]h ]h"]h$]h&]hhuh1jhjPhhhjPhMkubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjPhhhjPhMkubah}(h]jPah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjPhMkhjPhhubj>)}(hhh]jC)}(h-Translate an ID through a downstream mapping.h]h-Translate an ID through a downstream mapping.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMkhjShhubah}(h]h ]h"]h$]h&]uh1j=hjPhhhjPhMkubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajSjbjSjcjdjeuh1j hhhhhNhNubjg)}(hX-**Parameters** ``const struct device_node *np`` root complex device node. ``u32 id`` device ID to map. ``const char *map_name`` property name of the map to use. ``const char *cells_name`` property name of target specifier cells. ``const char *map_mask_name`` optional property name of the mask to use. ``struct device_node * const *filter_np`` pointer to an optional filter node, or NULL to allow bypass. If non-NULL, the map property must exist (-ENODEV if absent). If ``*filter_np`` is also non-NULL, only entries targeting that node match. ``struct of_phandle_args *arg`` pointer to a :c:type:`struct of_phandle_args ` for the result. On success, **arg->args_count** will be set to the number of output specifier cells as defined by **cells_name** in the target node, and **arg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np** will be set to the target node with a reference held that the caller must release with of_node_put(). **Description** Given a device ID, look up the appropriate implementation-defined platform ID and/or the target device which receives transactions on that ID, as per the "iommu-map" and "msi-map" bindings. **Return** 0 on success or a standard error code on failure.h](jC)}(h**Parameters**h]jq)}(hjSh]h Parameters}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jphjSubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMohjSubj)}(hhh](j)}(h;``const struct device_node *np`` root complex device node. h](j)}(h ``const struct device_node *np``h]j)}(hjTh]hconst struct device_node *np}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMlhjTubj)}(hhh]jC)}(hroot complex device node.h]hroot complex device node.}(hj/ThhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj+ThMlhj,Tubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhj+ThMlhj Tubj)}(h``u32 id`` device ID to map. h](j)}(h ``u32 id``h]j)}(hjOTh]hu32 id}(hjQThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMTubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMmhjITubj)}(hhh]jC)}(hdevice ID to map.h]hdevice ID to map.}(hjhThhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjdThMmhjeTubah}(h]h ]h"]h$]h&]uh1jhjITubeh}(h]h ]h"]h$]h&]uh1jhjdThMmhj Tubj)}(h:``const char *map_name`` property name of the map to use. h](j)}(h``const char *map_name``h]j)}(hjTh]hconst char *map_name}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMnhjTubj)}(hhh]jC)}(h property name of the map to use.h]h property name of the map to use.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjThMnhjTubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjThMnhj Tubj)}(hD``const char *cells_name`` property name of target specifier cells. h](j)}(h``const char *cells_name``h]j)}(hjTh]hconst char *cells_name}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMohjTubj)}(hhh]jC)}(h(property name of target specifier cells.h]h(property name of target specifier cells.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjThMohjTubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjThMohj Tubj)}(hI``const char *map_mask_name`` optional property name of the mask to use. h](j)}(h``const char *map_mask_name``h]j)}(hjTh]hconst char *map_mask_name}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMphjTubj)}(hhh]jC)}(h*optional property name of the mask to use.h]h*optional property name of the mask to use.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjUhMphjUubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjUhMphj Tubj)}(h``struct device_node * const *filter_np`` pointer to an optional filter node, or NULL to allow bypass. If non-NULL, the map property must exist (-ENODEV if absent). If ``*filter_np`` is also non-NULL, only entries targeting that node match. h](j)}(h)``struct device_node * const *filter_np``h]j)}(hj3Uh]h%struct device_node * const *filter_np}(hj5UhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1Uubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMshj-Uubj)}(hhh]jC)}(hpointer to an optional filter node, or NULL to allow bypass. If non-NULL, the map property must exist (-ENODEV if absent). If ``*filter_np`` is also non-NULL, only entries targeting that node match.h](h~pointer to an optional filter node, or NULL to allow bypass. If non-NULL, the map property must exist (-ENODEV if absent). If }(hjLUhhhNhNubj)}(h``*filter_np``h]h *filter_np}(hjTUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLUubh: is also non-NULL, only entries targeting that node match.}(hjLUhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMqhjIUubah}(h]h ]h"]h$]h&]uh1jhj-Uubeh}(h]h ]h"]h$]h&]uh1jhjHUhMshj Tubj)}(hX``struct of_phandle_args *arg`` pointer to a :c:type:`struct of_phandle_args ` for the result. On success, **arg->args_count** will be set to the number of output specifier cells as defined by **cells_name** in the target node, and **arg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np** will be set to the target node with a reference held that the caller must release with of_node_put(). h](j)}(h``struct of_phandle_args *arg``h]j)}(hjUh]hstruct of_phandle_args *arg}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}Uubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMzhjyUubj)}(hhh]jC)}(hXpointer to a :c:type:`struct of_phandle_args ` for the result. On success, **arg->args_count** will be set to the number of output specifier cells as defined by **cells_name** in the target node, and **arg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np** will be set to the target node with a reference held that the caller must release with of_node_put().h](h pointer to a }(hjUhhhNhNubh)}(h2:c:type:`struct of_phandle_args `h]j)}(hjUh]hstruct of_phandle_args}(hjUhhhNhNubah}(h]h ](jBj\c-typeeh"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]refdocjB refdomainj\reftypetype refexplicitrefwarnjbjBjCof_phandle_argsuh1hhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMthjUubh for the result. On success, }(hjUhhhNhNubjq)}(h**arg->args_count**h]harg->args_count}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjUubhC will be set to the number of output specifier cells as defined by }(hjUhhhNhNubjq)}(h**cells_name**h]h cells_name}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjUubh in the target node, and }(hjUhhhNhNubjq)}(h{**arg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np**h]hwarg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjUubhf will be set to the target node with a reference held that the caller must release with of_node_put().}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhjUhMthjUubah}(h]h ]h"]h$]h&]uh1jhjyUubeh}(h]h ]h"]h$]h&]uh1jhjUhMzhj Tubeh}(h]h ]h"]h$]h&]uh1jhjSubjC)}(h**Description**h]jq)}(hjVh]h Description}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjVubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM|hjSubjC)}(hGiven a device ID, look up the appropriate implementation-defined platform ID and/or the target device which receives transactions on that ID, as per the "iommu-map" and "msi-map" bindings.h]hGiven a device ID, look up the appropriate implementation-defined platform ID and/or the target device which receives transactions on that ID, as per the “iommu-map” and “msi-map” bindings.}(hj*VhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM{hjSubjC)}(h **Return**h]jq)}(hj;Vh]hReturn}(hj=VhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj9Vubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjSubjC)}(h10 on success or a standard error code on failure.h]h10 on success or a standard error code on failure.}(hjQVhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjSubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_map_iommu_id (C function)c.of_map_iommu_idhNtauh1hhhhhhNhNubj)}(hhh](j)}(hWint of_map_iommu_id (const struct device_node *np, u32 id, struct of_phandle_args *arg)h]j)}(hVint of_map_iommu_id(const struct device_node *np, u32 id, struct of_phandle_args *arg)h](j)}(hinth]hint}(hjVhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj|VhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM ubj1)}(h h]h }(hjVhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj|VhhhjVhM ubj)}(hof_map_iommu_idh]jE)}(hof_map_iommu_idh]hof_map_iommu_id}(hjVhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjVubah}(h]h ](jjeh"]h$]h&]hhuh1jhj|VhhhjVhM ubj)}(hC(const struct device_node *np, u32 id, struct of_phandle_args *arg)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjVhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjVubj1)}(h h]h }(hjVhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubj)}(hj"h]hstruct}(hjVhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjVubj1)}(h h]h }(hjVhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjVhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjVubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjVmodnameN classnameNjbje)}jh]jk)}j^jVsbc.of_map_iommu_idasbuh1hhjVubj1)}(h h]h }(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubj)}(hjh]h*}(hj$WhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubjE)}(hnph]hnp}(hj1WhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjVubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubj)}(hu32 idh](h)}(hhh]jE)}(hu32h]hu32}(hjMWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjJWubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjOWmodnameN classnameNjbje)}jh]jWc.of_map_iommu_idasbuh1hhjFWubj1)}(h h]h }(hjkWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjFWubjE)}(hidh]hid}(hjyWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjFWubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubj)}(hstruct of_phandle_args *argh](j)}(hj"h]hstruct}(hjWhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjWubj1)}(h h]h }(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hjWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjWubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjWmodnameN classnameNjbje)}jh]jWc.of_map_iommu_idasbuh1hhjWubj1)}(h h]h }(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWubj)}(hjh]h*}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubjE)}(hargh]harg}(hjWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjWubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubeh}(h]h ]h"]h$]h&]hhuh1jhj|VhhhjVhM ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjxVhhhjVhM ubah}(h]jsVah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjVhM hjuVhhubj>)}(hhh]jC)}(h+Translate an ID using "iommu-map" bindings.h]h/Translate an ID using “iommu-map” bindings.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjXhhubah}(h]h ]h"]h$]h&]uh1j=hjuVhhhjVhM ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj+Xjbj+Xjcjdjeuh1j hhhhhNhNubjg)}(hX0**Parameters** ``const struct device_node *np`` root complex device node. ``u32 id`` Requester ID of the device (e.g. PCI RID/BDF or a platform stream/device ID) used as the lookup key in the iommu-map table. ``struct of_phandle_args *arg`` pointer to a :c:type:`struct of_phandle_args ` for the result. On success, **arg->args_count** will be set to the number of output specifier cells and **arg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np** holds a reference to the target node that the caller must release with of_node_put(). **Description** Convenience wrapper around of_map_id() using "iommu-map", "#iommu-cells", and "iommu-map-mask". **Return** 0 on success or a standard error code on failure.h](jC)}(h**Parameters**h]jq)}(hj5Xh]h Parameters}(hj7XhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj3Xubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hj/Xubj)}(hhh](j)}(h;``const struct device_node *np`` root complex device node. h](j)}(h ``const struct device_node *np``h]j)}(hjTXh]hconst struct device_node *np}(hjVXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRXubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjNXubj)}(hhh]jC)}(hroot complex device node.h]hroot complex device node.}(hjmXhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjiXhM hjjXubah}(h]h ]h"]h$]h&]uh1jhjNXubeh}(h]h ]h"]h$]h&]uh1jhjiXhM hjKXubj)}(h``u32 id`` Requester ID of the device (e.g. PCI RID/BDF or a platform stream/device ID) used as the lookup key in the iommu-map table. h](j)}(h ``u32 id``h]j)}(hjXh]hu32 id}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjXubj)}(hhh]jC)}(h{Requester ID of the device (e.g. PCI RID/BDF or a platform stream/device ID) used as the lookup key in the iommu-map table.h]h{Requester ID of the device (e.g. PCI RID/BDF or a platform stream/device ID) used as the lookup key in the iommu-map table.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjXubah}(h]h ]h"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]uh1jhjXhM hjKXubj)}(hX``struct of_phandle_args *arg`` pointer to a :c:type:`struct of_phandle_args ` for the result. On success, **arg->args_count** will be set to the number of output specifier cells and **arg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np** holds a reference to the target node that the caller must release with of_node_put(). h](j)}(h``struct of_phandle_args *arg``h]j)}(hjXh]hstruct of_phandle_args *arg}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjXubj)}(hhh]jC)}(hXypointer to a :c:type:`struct of_phandle_args ` for the result. On success, **arg->args_count** will be set to the number of output specifier cells and **arg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np** holds a reference to the target node that the caller must release with of_node_put().h](h pointer to a }(hjXhhhNhNubh)}(h2:c:type:`struct of_phandle_args `h]j)}(hjXh]hstruct of_phandle_args}(hjXhhhNhNubah}(h]h ](jBj\c-typeeh"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]refdocjB refdomainj\reftypetype refexplicitrefwarnjbjBjCof_phandle_argsuh1hhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjXubh for the result. On success, }(hjXhhhNhNubjq)}(h**arg->args_count**h]harg->args_count}(hj YhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjXubh9 will be set to the number of output specifier cells and }(hjXhhhNhNubjq)}(h{**arg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np**h]hwarg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjXubhV holds a reference to the target node that the caller must release with of_node_put().}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhjYhM hjXubah}(h]h ]h"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]uh1jhjXhM hjKXubeh}(h]h ]h"]h$]h&]uh1jhj/XubjC)}(h**Description**h]jq)}(hjJYh]h Description}(hjLYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjHYubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hj/XubjC)}(h_Convenience wrapper around of_map_id() using "iommu-map", "#iommu-cells", and "iommu-map-mask".h]hkConvenience wrapper around of_map_id() using “iommu-map”, “#iommu-cells”, and “iommu-map-mask”.}(hj`YhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hj/XubjC)}(h **Return**h]jq)}(hjqYh]hReturn}(hjsYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjoYubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hj/XubjC)}(h10 on success or a standard error code on failure.h]h10 on success or a standard error code on failure.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM! hj/Xubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_map_msi_id (C function)c.of_map_msi_idhNtauh1hhhhhhNhNubj)}(hhh](j)}(h|int of_map_msi_id (const struct device_node *np, u32 id, struct device_node * const *filter_np, struct of_phandle_args *arg)h]j)}(hzint of_map_msi_id(const struct device_node *np, u32 id, struct device_node *const *filter_np, struct of_phandle_args *arg)h](j)}(hinth]hint}(hjYhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjYhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM+ ubj1)}(h h]h }(hjYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjYhhhjYhM+ ubj)}(h of_map_msi_idh]jE)}(h of_map_msi_idh]h of_map_msi_id}(hjYhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjYubah}(h]h ](jjeh"]h$]h&]hhuh1jhjYhhhjYhM+ ubj)}(hi(const struct device_node *np, u32 id, struct device_node *const *filter_np, struct of_phandle_args *arg)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjYhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjYubj1)}(h h]h }(hjZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjYubj)}(hj"h]hstruct}(hjZhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjYubj1)}(h h]h }(hjZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjYubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj,ZhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj)Zubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj.ZmodnameN classnameNjbje)}jh]jk)}j^jYsbc.of_map_msi_idasbuh1hhjYubj1)}(h h]h }(hjLZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjYubj)}(hjh]h*}(hjZZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubjE)}(hnph]hnp}(hjgZhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjYubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYubj)}(hu32 idh](h)}(hhh]jE)}(hu32h]hu32}(hjZhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjZmodnameN classnameNjbje)}jh]jHZc.of_map_msi_idasbuh1hhj|Zubj1)}(h h]h }(hjZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj|ZubjE)}(hidh]hid}(hjZhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj|Zubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYubj)}(h$struct device_node *const *filter_nph](j)}(hj"h]hstruct}(hjZhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjZubj1)}(h h]h }(hjZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjZhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjZmodnameN classnameNjbje)}jh]jHZc.of_map_msi_idasbuh1hhjZubj1)}(h h]h }(hj[hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubj)}(hjh]h*}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubj)}(hj\h]hconst}(hj[hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjZubj1)}(h h]h }(hj,[hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubj)}(hjh]h*}(hj:[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubjE)}(h filter_nph]h filter_np}(hjG[hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYubj)}(hstruct of_phandle_args *argh](j)}(hj"h]hstruct}(hj`[hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj\[ubj1)}(h h]h }(hjm[hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\[ubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hj~[hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj{[ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj[modnameN classnameNjbje)}jh]jHZc.of_map_msi_idasbuh1hhj\[ubj1)}(h h]h }(hj[hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\[ubj)}(hjh]h*}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\[ubjE)}(hargh]harg}(hj[hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj\[ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYubeh}(h]h ]h"]h$]h&]hhuh1jhjYhhhjYhM+ ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjYhhhjYhM+ ubah}(h]jYah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjYhM+ hjYhhubj>)}(hhh]jC)}(h)Translate an ID using "msi-map" bindings.h]h-Translate an ID using “msi-map” bindings.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM+ hj[hhubah}(h]h ]h"]h$]h&]uh1j=hjYhhhjYhM+ ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj[jbj[jcjdjeuh1j hhhhhNhNubjg)}(hX **Parameters** ``const struct device_node *np`` root complex device node. ``u32 id`` Requester ID of the device (e.g. PCI RID/BDF or a platform stream/device ID) used as the lookup key in the msi-map table. ``struct device_node * const *filter_np`` pointer to an optional filter node, or NULL to allow bypass. If non-NULL, the map property must exist (-ENODEV if absent). If ``*filter_np`` is also non-NULL, only entries targeting that node match. ``struct of_phandle_args *arg`` pointer to a :c:type:`struct of_phandle_args ` for the result. On success, **arg->args_count** will be set to the number of output specifier cells and **arg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np** holds a reference to the target node that the caller must release with of_node_put(). **Description** Convenience wrapper around of_map_id() using "msi-map", "#msi-cells", and "msi-map-mask". **Return** 0 on success or a standard error code on failure.h](jC)}(h**Parameters**h]jq)}(hj\h]h Parameters}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj\ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM/ hj[ubj)}(hhh](j)}(h;``const struct device_node *np`` root complex device node. h](j)}(h ``const struct device_node *np``h]j)}(hj"\h]hconst struct device_node *np}(hj$\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj \ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM, hj\ubj)}(hhh]jC)}(hroot complex device node.h]hroot complex device node.}(hj;\hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj7\hM, hj8\ubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jhj7\hM, hj\ubj)}(h``u32 id`` Requester ID of the device (e.g. PCI RID/BDF or a platform stream/device ID) used as the lookup key in the msi-map table. h](j)}(h ``u32 id``h]j)}(hj[\h]hu32 id}(hj]\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjY\ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM. hjU\ubj)}(hhh]jC)}(hyRequester ID of the device (e.g. PCI RID/BDF or a platform stream/device ID) used as the lookup key in the msi-map table.h]hyRequester ID of the device (e.g. PCI RID/BDF or a platform stream/device ID) used as the lookup key in the msi-map table.}(hjt\hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM- hjq\ubah}(h]h ]h"]h$]h&]uh1jhjU\ubeh}(h]h ]h"]h$]h&]uh1jhjp\hM. hj\ubj)}(h``struct device_node * const *filter_np`` pointer to an optional filter node, or NULL to allow bypass. If non-NULL, the map property must exist (-ENODEV if absent). If ``*filter_np`` is also non-NULL, only entries targeting that node match. h](j)}(h)``struct device_node * const *filter_np``h]j)}(hj\h]h%struct device_node * const *filter_np}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM1 hj\ubj)}(hhh]jC)}(hpointer to an optional filter node, or NULL to allow bypass. If non-NULL, the map property must exist (-ENODEV if absent). If ``*filter_np`` is also non-NULL, only entries targeting that node match.h](h~pointer to an optional filter node, or NULL to allow bypass. If non-NULL, the map property must exist (-ENODEV if absent). If }(hj\hhhNhNubj)}(h``*filter_np``h]h *filter_np}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubh: is also non-NULL, only entries targeting that node match.}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM/ hj\ubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jhj\hM1 hj\ubj)}(hX``struct of_phandle_args *arg`` pointer to a :c:type:`struct of_phandle_args ` for the result. On success, **arg->args_count** will be set to the number of output specifier cells and **arg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np** holds a reference to the target node that the caller must release with of_node_put(). h](j)}(h``struct of_phandle_args *arg``h]j)}(hj\h]hstruct of_phandle_args *arg}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM7 hj\ubj)}(hhh]jC)}(hXypointer to a :c:type:`struct of_phandle_args ` for the result. On success, **arg->args_count** will be set to the number of output specifier cells and **arg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np** holds a reference to the target node that the caller must release with of_node_put().h](h pointer to a }(hj\hhhNhNubh)}(h2:c:type:`struct of_phandle_args `h]j)}(hj]h]hstruct of_phandle_args}(hj]hhhNhNubah}(h]h ](jBj\c-typeeh"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]refdocjB refdomainj\reftypetype refexplicitrefwarnjbjBjCof_phandle_argsuh1hhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM2 hj\ubh for the result. On success, }(hj\hhhNhNubjq)}(h**arg->args_count**h]harg->args_count}(hj&]hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj\ubh9 will be set to the number of output specifier cells and }(hj\hhhNhNubjq)}(h{**arg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np**h]hwarg->args**[0..args_count-1] will contain the translated output specifier values. If a map entry was matched, **arg->np}(hj8]hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj\ubhV holds a reference to the target node that the caller must release with of_node_put().}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhj!]hM2 hj\ubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jhj\hM7 hj\ubeh}(h]h ]h"]h$]h&]uh1jhj[ubjC)}(h**Description**h]jq)}(hjd]h]h Description}(hjf]hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjb]ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM9 hj[ubjC)}(hYConvenience wrapper around of_map_id() using "msi-map", "#msi-cells", and "msi-map-mask".h]heConvenience wrapper around of_map_id() using “msi-map”, “#msi-cells”, and “msi-map-mask”.}(hjz]hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM8 hj[ubjC)}(h **Return**h]jq)}(hj]h]hReturn}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj]ubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM; hj[ubjC)}(h10 on success or a standard error code on failure.h]h10 on success or a standard error code on failure.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM< hj[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_node_init (C function)c.of_node_inithNtauh1hhhhhhNhNubj)}(hhh](j)}(h,void of_node_init (struct device_node *node)h]j)}(h+void of_node_init(struct device_node *node)h](j)}(hvoidh]hvoid}(hj]hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj]hhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKhubj1)}(h h]h }(hj]hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj]hhhj]hKhubj)}(h of_node_inith]jE)}(h of_node_inith]h of_node_init}(hj]hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj]ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj]hhhj]hKhubj)}(h(struct device_node *node)h]j)}(hstruct device_node *nodeh](j)}(hj"h]hstruct}(hj ^hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ^ubj1)}(h h]h }(hj^hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ^ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj+^hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj(^ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj-^modnameN classnameNjbje)}jh]jk)}j^j]sbc.of_node_initasbuh1hhj ^ubj1)}(h h]h }(hjK^hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ^ubj)}(hjh]h*}(hjY^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ^ubjE)}(hnodeh]hnode}(hjf^hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ^ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj^ubah}(h]h ]h"]h$]h&]hhuh1jhj]hhhj]hKhubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj]hhhj]hKhubah}(h]j]ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj]hKhhj]hhubj>)}(hhh]jC)}(hinitialize a devicetree nodeh]hinitialize a devicetree node}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKhhj^hhubah}(h]h ]h"]h$]h&]uh1j=hj]hhhj]hKhubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj^jbj^jcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``struct device_node *node`` Pointer to device node that has been created by kzalloc() **Description** On return the device_node refcount is set to one. Use of_node_put() on **node** when done to free the memory allocated for it. If the node is NOT a dynamic node the memory will not be freed. The decision of whether to free the memory will be done by node->release(), which is of_node_release().h](jC)}(h**Parameters**h]jq)}(hj^h]h Parameters}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj^ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKlhj^ubj)}(hhh]j)}(hW``struct device_node *node`` Pointer to device node that has been created by kzalloc() h](j)}(h``struct device_node *node``h]j)}(hj^h]hstruct device_node *node}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKihj^ubj)}(hhh]jC)}(h9Pointer to device node that has been created by kzalloc()h]h9Pointer to device node that has been created by kzalloc()}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj^hKihj^ubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jhj^hKihj^ubah}(h]h ]h"]h$]h&]uh1jhj^ubjC)}(h**Description**h]jq)}(hj _h]h Description}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj _ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKkhj^ubjC)}(hX(On return the device_node refcount is set to one. Use of_node_put() on **node** when done to free the memory allocated for it. If the node is NOT a dynamic node the memory will not be freed. The decision of whether to free the memory will be done by node->release(), which is of_node_release().h](hHOn return the device_node refcount is set to one. Use of_node_put() on }(hj"_hhhNhNubjq)}(h**node**h]hnode}(hj*_hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj"_ubh when done to free the memory allocated for it. If the node is NOT a dynamic node the memory will not be freed. The decision of whether to free the memory will be done by node->release(), which is of_node_release().}(hj"_hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKjhj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j %of_machine_is_compatible (C function)c.of_machine_is_compatiblehNtauh1hhhhhhNhNubj)}(hhh](j)}(h2bool of_machine_is_compatible (const char *compat)h]j)}(h1bool of_machine_is_compatible(const char *compat)h](j)}(hjh]hbool}(hjc_hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj__hhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjq_hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj__hhhjp_hMubj)}(hof_machine_is_compatibleh]jE)}(hof_machine_is_compatibleh]hof_machine_is_compatible}(hj_hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj_ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj__hhhjp_hMubj)}(h(const char *compat)h]j)}(hconst char *compath](j)}(hj\h]hconst}(hj_hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj_ubj1)}(h h]h }(hj_hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj_ubj)}(hcharh]hchar}(hj_hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj_ubj1)}(h h]h }(hj_hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj_ubj)}(hjh]h*}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubjE)}(hcompath]hcompat}(hj_hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj_ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubah}(h]h ]h"]h$]h&]hhuh1jhj__hhhjp_hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj[_hhhjp_hMubah}(h]jV_ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjp_hMhjX_hhubj>)}(hhh]jC)}(h5Test root of device tree for a given compatible valueh]h5Test root of device tree for a given compatible value}(hj `hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj `hhubah}(h]h ]h"]h$]h&]uh1j=hjX_hhhjp_hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj%`jbj%`jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const char *compat`` compatible string to look for in root node's compatible property. **Return** true if the root node has the given value in its compatible property.h](jC)}(h**Parameters**h]jq)}(hj/`h]h Parameters}(hj1`hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj-`ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj)`ubj)}(hhh]j)}(hY``const char *compat`` compatible string to look for in root node's compatible property. h](j)}(h``const char *compat``h]j)}(hjN`h]hconst char *compat}(hjP`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL`ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjH`ubj)}(hhh]jC)}(hAcompatible string to look for in root node's compatible property.h]hCcompatible string to look for in root node’s compatible property.}(hjg`hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjc`hMhjd`ubah}(h]h ]h"]h$]h&]uh1jhjH`ubeh}(h]h ]h"]h$]h&]uh1jhjc`hMhjE`ubah}(h]h ]h"]h$]h&]uh1jhj)`ubjC)}(h **Return**h]jq)}(hj`h]hReturn}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj`ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj)`ubjC)}(hEtrue if the root node has the given value in its compatible property.h]hEtrue if the root node has the given value in its compatible property.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj)`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_parse_phandle (C function)c.of_parse_phandlehNtauh1hhhhhhNhNubj)}(hhh](j)}(histruct device_node * of_parse_phandle (const struct device_node *np, const char *phandle_name, int index)h]j)}(hgstruct device_node *of_parse_phandle(const struct device_node *np, const char *phandle_name, int index)h](j)}(hj"h]hstruct}(hj`hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj`hhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hj`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`hhhj`hMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj`hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj`ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj`modnameN classnameNjbje)}jh]jk)}j^of_parse_phandlesbc.of_parse_phandleasbuh1hhj`hhhj`hMubj1)}(h h]h }(hjahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`hhhj`hMubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`hhhj`hMubj)}(hof_parse_phandleh]jE)}(hj ah]hof_parse_phandle}(hj-ahhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj)aubah}(h]h ](jjeh"]h$]h&]hhuh1jhj`hhhj`hMubj)}(hC(const struct device_node *np, const char *phandle_name, int index)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjHahhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjDaubj1)}(h h]h }(hjUahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDaubj)}(hj"h]hstruct}(hjcahhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjDaubj1)}(h h]h }(hjpahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDaubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjahhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj~aubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjamodnameN classnameNjbje)}jh]j ac.of_parse_phandleasbuh1hhjDaubj1)}(h h]h }(hjahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDaubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDaubjE)}(hnph]hnp}(hjahhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjDaubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@aubj)}(hconst char *phandle_nameh](j)}(hj\h]hconst}(hjahhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjaubj1)}(h h]h }(hjahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjaubj)}(hcharh]hchar}(hjahhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjaubj1)}(h h]h }(hjahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjaubj)}(hjh]h*}(hj bhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubjE)}(h phandle_nameh]h phandle_name}(hjbhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjaubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@aubj)}(h int indexh](j)}(hinth]hint}(hj0bhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj,bubj1)}(h h]h }(hj>bhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,bubjE)}(hindexh]hindex}(hjLbhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj,bubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@aubeh}(h]h ]h"]h$]h&]hhuh1jhj`hhhj`hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj`hhhj`hMubah}(h]j`ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj`hMhj`hhubj>)}(hhh]jC)}(h3Resolve a phandle property to a device_node pointerh]h3Resolve a phandle property to a device_node pointer}(hjvbhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjsbhhubah}(h]h ]h"]h$]h&]uh1j=hj`hhhj`hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajbjbjbjcjdjeuh1j hhhhhNhNubjg)}(hXo**Parameters** ``const struct device_node *np`` Pointer to device node holding phandle property ``const char *phandle_name`` Name of property holding a phandle value ``int index`` For properties holding a table of phandles, this is the index into the table **Return** The device_node pointer with refcount incremented. Use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hjbh]h Parameters}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjbubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjbubj)}(hhh](j)}(hQ``const struct device_node *np`` Pointer to device node holding phandle property h](j)}(h ``const struct device_node *np``h]j)}(hjbh]hconst struct device_node *np}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjbubj)}(hhh]jC)}(h/Pointer to device node holding phandle propertyh]h/Pointer to device node holding phandle property}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjbhMhjbubah}(h]h ]h"]h$]h&]uh1jhjbubeh}(h]h ]h"]h$]h&]uh1jhjbhMhjbubj)}(hF``const char *phandle_name`` Name of property holding a phandle value h](j)}(h``const char *phandle_name``h]j)}(hjbh]hconst char *phandle_name}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjbubj)}(hhh]jC)}(h(Name of property holding a phandle valueh]h(Name of property holding a phandle value}(hj chhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjchMhjcubah}(h]h ]h"]h$]h&]uh1jhjbubeh}(h]h ]h"]h$]h&]uh1jhjchMhjbubj)}(h[``int index`` For properties holding a table of phandles, this is the index into the table h](j)}(h ``int index``h]j)}(hj)ch]h int index}(hj+chhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'cubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj#cubj)}(hhh]jC)}(hLFor properties holding a table of phandles, this is the index into the tableh]hLFor properties holding a table of phandles, this is the index into the table}(hjBchhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj?cubah}(h]h ]h"]h$]h&]uh1jhj#cubeh}(h]h ]h"]h$]h&]uh1jhj>chMhjbubeh}(h]h ]h"]h$]h&]uh1jhjbubjC)}(h **Return**h]jq)}(hjech]hReturn}(hjgchhhNhNubah}(h]h ]h"]h$]h&]uh1jphjccubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjbubjC)}(hVThe device_node pointer with refcount incremented. Use of_node_put() on it when done.h]hVThe device_node pointer with refcount incremented. Use of_node_put() on it when done.}(hj{chhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjbubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'of_parse_phandle_with_args (C function)c.of_parse_phandle_with_argshNtauh1hhhhhhNhNubj)}(hhh](j)}(hint of_parse_phandle_with_args (const struct device_node *np, const char *list_name, const char *cells_name, int index, struct of_phandle_args *out_args)h]j)}(hint of_parse_phandle_with_args(const struct device_node *np, const char *list_name, const char *cells_name, int index, struct of_phandle_args *out_args)h](j)}(hinth]hint}(hjchhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjchhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM)ubj1)}(h h]h }(hjchhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjchhhjchM)ubj)}(hof_parse_phandle_with_argsh]jE)}(hof_parse_phandle_with_argsh]hof_parse_phandle_with_args}(hjchhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjcubah}(h]h ](jjeh"]h$]h&]hhuh1jhjchhhjchM)ubj)}(hz(const struct device_node *np, const char *list_name, const char *cells_name, int index, struct of_phandle_args *out_args)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjchhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjcubj1)}(h h]h }(hjchhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubj)}(hj"h]hstruct}(hjdhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjcubj1)}(h h]h }(hjdhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj dhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjdubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj"dmodnameN classnameNjbje)}jh]jk)}j^jcsbc.of_parse_phandle_with_argsasbuh1hhjcubj1)}(h h]h }(hj@dhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubj)}(hjh]h*}(hjNdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubjE)}(hnph]hnp}(hj[dhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjcubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjcubj)}(hconst char *list_nameh](j)}(hj\h]hconst}(hjtdhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjpdubj1)}(h h]h }(hjdhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjpdubj)}(hcharh]hchar}(hjdhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjpdubj1)}(h h]h }(hjdhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjpdubj)}(hjh]h*}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpdubjE)}(h list_nameh]h list_name}(hjdhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjpdubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjcubj)}(hconst char *cells_nameh](j)}(hj\h]hconst}(hjdhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjdubj1)}(h h]h }(hjdhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubj)}(hcharh]hchar}(hjdhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjdubj1)}(h h]h }(hjdhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubjE)}(h cells_nameh]h cells_name}(hjehhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjdubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjcubj)}(h int indexh](j)}(hinth]hint}(hj.ehhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj*eubj1)}(h h]h }(hj)}(hhh]jC)}(h(Find a node pointed by phandle in a listh]h(Find a node pointed by phandle in a list}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM)hjehhubah}(h]h ]h"]h$]h&]uh1j=hjchhhjchM)ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajejbjejcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` pointer to a device tree node containing a list ``const char *list_name`` property name that contains a list ``const char *cells_name`` property name that specifies phandles' arguments count ``int index`` index of a phandle to parse out ``struct of_phandle_args *out_args`` optional pointer to output arguments structure (will be filled) **Description** This function is useful to parse lists of phandles and their arguments. Returns 0 on success and fills out_args, on error returns appropriate errno value. Caller is responsible to call of_node_put() on the returned out_args->np pointer. Example:: phandle1: node1 { #list-cells = <2>; }; phandle2: node2 { #list-cells = <1>; }; node3 { list = <&phandle1 1 2 &phandle2 3>; }; To get a device_node of the ``node2`` node you may call this: of_parse_phandle_with_args(node3, "list", "#list-cells", 1, :c:type:`args`);h](jC)}(h**Parameters**h]jq)}(hjfh]h Parameters}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjfubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM-hjfubj)}(hhh](j)}(hQ``const struct device_node *np`` pointer to a device tree node containing a list h](j)}(h ``const struct device_node *np``h]j)}(hj%fh]hconst struct device_node *np}(hj'fhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#fubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM*hjfubj)}(hhh]jC)}(h/pointer to a device tree node containing a listh]h/pointer to a device tree node containing a list}(hj>fhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj:fhM*hj;fubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhj:fhM*hjfubj)}(h=``const char *list_name`` property name that contains a list h](j)}(h``const char *list_name``h]j)}(hj^fh]hconst char *list_name}(hj`fhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\fubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM+hjXfubj)}(hhh]jC)}(h"property name that contains a listh]h"property name that contains a list}(hjwfhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjsfhM+hjtfubah}(h]h ]h"]h$]h&]uh1jhjXfubeh}(h]h ]h"]h$]h&]uh1jhjsfhM+hjfubj)}(hR``const char *cells_name`` property name that specifies phandles' arguments count h](j)}(h``const char *cells_name``h]j)}(hjfh]hconst char *cells_name}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM,hjfubj)}(hhh]jC)}(h6property name that specifies phandles' arguments counth]h8property name that specifies phandles’ arguments count}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjfhM,hjfubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhjfhM,hjfubj)}(h.``int index`` index of a phandle to parse out h](j)}(h ``int index``h]j)}(hjfh]h int index}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM-hjfubj)}(hhh]jC)}(hindex of a phandle to parse outh]hindex of a phandle to parse out}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjfhM-hjfubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhjfhM-hjfubj)}(he``struct of_phandle_args *out_args`` optional pointer to output arguments structure (will be filled) h](j)}(h$``struct of_phandle_args *out_args``h]j)}(hj gh]h struct of_phandle_args *out_args}(hj ghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM.hjgubj)}(hhh]jC)}(h?optional pointer to output arguments structure (will be filled)h]h?optional pointer to output arguments structure (will be filled)}(hj"ghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjghM.hjgubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjghM.hjfubeh}(h]h ]h"]h$]h&]uh1jhjfubjC)}(h**Description**h]jq)}(hjDgh]h Description}(hjFghhhNhNubah}(h]h ]h"]h$]h&]uh1jphjBgubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM0hjfubjC)}(hThis function is useful to parse lists of phandles and their arguments. Returns 0 on success and fills out_args, on error returns appropriate errno value.h]hThis function is useful to parse lists of phandles and their arguments. Returns 0 on success and fills out_args, on error returns appropriate errno value.}(hjZghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM/hjfubjC)}(hQCaller is responsible to call of_node_put() on the returned out_args->np pointer.h]hQCaller is responsible to call of_node_put() on the returned out_args->np pointer.}(hjighhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM3hjfubjC)}(h Example::h]hExample:}(hjxghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM6hjfubjB)}(hphandle1: node1 { #list-cells = <2>; }; phandle2: node2 { #list-cells = <1>; }; node3 { list = <&phandle1 1 2 &phandle2 3>; };h]hphandle1: node1 { #list-cells = <2>; }; phandle2: node2 { #list-cells = <1>; }; node3 { list = <&phandle1 1 2 &phandle2 3>; };}hjgsbah}(h]h ]h"]h$]h&]hhuh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM8hjfubjC)}(hTo get a device_node of the ``node2`` node you may call this: of_parse_phandle_with_args(node3, "list", "#list-cells", 1, :c:type:`args`);h](hTo get a device_node of the }(hjghhhNhNubj)}(h ``node2``h]hnode2}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubh] node you may call this: of_parse_phandle_with_args(node3, “list”, “#list-cells”, 1, }(hjghhhNhNubh)}(h:c:type:`args`h]j)}(hjgh]hargs}(hjghhhNhNubah}(h]h ](jBj\c-typeeh"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]refdocjB refdomainj\reftypetype refexplicitrefwarnjbjBjCargsuh1hhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMDhjgubh);}(hjghhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhjghMDhjfubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j -of_parse_phandle_with_fixed_args (C function)"c.of_parse_phandle_with_fixed_argshNtauh1hhhhhhNhNubj)}(hhh](j)}(hint of_parse_phandle_with_fixed_args (const struct device_node *np, const char *list_name, int cell_count, int index, struct of_phandle_args *out_args)h]j)}(hint of_parse_phandle_with_fixed_args(const struct device_node *np, const char *list_name, int cell_count, int index, struct of_phandle_args *out_args)h](j)}(hinth]hint}(hjghhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjghhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMYubj1)}(h h]h }(hj hhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjghhhjhhMYubj)}(h of_parse_phandle_with_fixed_argsh]jE)}(h of_parse_phandle_with_fixed_argsh]h of_parse_phandle_with_fixed_args}(hjhhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjhubah}(h]h ](jjeh"]h$]h&]hhuh1jhjghhhjhhMYubj)}(hr(const struct device_node *np, const char *list_name, int cell_count, int index, struct of_phandle_args *out_args)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hj7hhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj3hubj1)}(h h]h }(hjDhhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3hubj)}(hj"h]hstruct}(hjRhhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj3hubj1)}(h h]h }(hj_hhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3hubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjphhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjmhubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjrhmodnameN classnameNjbje)}jh]jk)}j^jhsb"c.of_parse_phandle_with_fixed_argsasbuh1hhj3hubj1)}(h h]h }(hjhhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3hubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3hubjE)}(hnph]hnp}(hjhhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj3hubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/hubj)}(hconst char *list_nameh](j)}(hj\h]hconst}(hjhhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhubj1)}(h h]h }(hjhhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhubj)}(hcharh]hchar}(hjhhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhubj1)}(h h]h }(hjhhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubjE)}(h list_nameh]h list_name}(hjihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/hubj)}(hint cell_counth](j)}(hinth]hint}(hj!ihhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjiubj1)}(h h]h }(hj/ihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjiubjE)}(h cell_counth]h cell_count}(hj=ihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/hubj)}(h int indexh](j)}(hinth]hint}(hjVihhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjRiubj1)}(h h]h }(hjdihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRiubjE)}(hindexh]hindex}(hjrihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjRiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/hubj)}(h struct of_phandle_args *out_argsh](j)}(hj"h]hstruct}(hjihhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjiubj1)}(h h]h }(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjiubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hjihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjimodnameN classnameNjbje)}jh]jh"c.of_parse_phandle_with_fixed_argsasbuh1hhjiubj1)}(h h]h }(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjiubj)}(hjh]h*}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubjE)}(hout_argsh]hout_args}(hjihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/hubeh}(h]h ]h"]h$]h&]hhuh1jhjghhhjhhMYubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjghhhjhhMYubah}(h]jgah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhhMYhjghhubj>)}(hhh]jC)}(h(Find a node pointed by phandle in a listh]h(Find a node pointed by phandle in a list}(hj jhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMYhj jhhubah}(h]h ]h"]h$]h&]uh1j=hjghhhjhhMYubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj$jjbj$jjcjdjeuh1j hhhhhNhNubjg)}(hXz**Parameters** ``const struct device_node *np`` pointer to a device tree node containing a list ``const char *list_name`` property name that contains a list ``int cell_count`` number of argument cells following the phandle ``int index`` index of a phandle to parse out ``struct of_phandle_args *out_args`` optional pointer to output arguments structure (will be filled) **Description** This function is useful to parse lists of phandles and their arguments. Returns 0 on success and fills out_args, on error returns appropriate errno value. Caller is responsible to call of_node_put() on the returned out_args->np pointer. Example:: phandle1: node1 { }; phandle2: node2 { }; node3 { list = <&phandle1 0 2 &phandle2 2 3>; }; To get a device_node of the ``node2`` node you may call this: of_parse_phandle_with_fixed_args(node3, "list", 2, 1, :c:type:`args`);h](jC)}(h**Parameters**h]jq)}(hj.jh]h Parameters}(hj0jhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj,jubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM]hj(jubj)}(hhh](j)}(hQ``const struct device_node *np`` pointer to a device tree node containing a list h](j)}(h ``const struct device_node *np``h]j)}(hjMjh]hconst struct device_node *np}(hjOjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMZhjGjubj)}(hhh]jC)}(h/pointer to a device tree node containing a listh]h/pointer to a device tree node containing a list}(hjfjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjbjhMZhjcjubah}(h]h ]h"]h$]h&]uh1jhjGjubeh}(h]h ]h"]h$]h&]uh1jhjbjhMZhjDjubj)}(h=``const char *list_name`` property name that contains a list h](j)}(h``const char *list_name``h]j)}(hjjh]hconst char *list_name}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM[hjjubj)}(hhh]jC)}(h"property name that contains a listh]h"property name that contains a list}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjjhM[hjjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjjhM[hjDjubj)}(hB``int cell_count`` number of argument cells following the phandle h](j)}(h``int cell_count``h]j)}(hjjh]hint cell_count}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM\hjjubj)}(hhh]jC)}(h.number of argument cells following the phandleh]h.number of argument cells following the phandle}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjjhM\hjjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjjhM\hjDjubj)}(h.``int index`` index of a phandle to parse out h](j)}(h ``int index``h]j)}(hjjh]h int index}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM]hjjubj)}(hhh]jC)}(hindex of a phandle to parse outh]hindex of a phandle to parse out}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj khM]hjkubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhj khM]hjDjubj)}(he``struct of_phandle_args *out_args`` optional pointer to output arguments structure (will be filled) h](j)}(h$``struct of_phandle_args *out_args``h]j)}(hj1kh]h struct of_phandle_args *out_args}(hj3khhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/kubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM^hj+kubj)}(hhh]jC)}(h?optional pointer to output arguments structure (will be filled)h]h?optional pointer to output arguments structure (will be filled)}(hjJkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjFkhM^hjGkubah}(h]h ]h"]h$]h&]uh1jhj+kubeh}(h]h ]h"]h$]h&]uh1jhjFkhM^hjDjubeh}(h]h ]h"]h$]h&]uh1jhj(jubjC)}(h**Description**h]jq)}(hjlkh]h Description}(hjnkhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjjkubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM`hj(jubjC)}(hThis function is useful to parse lists of phandles and their arguments. Returns 0 on success and fills out_args, on error returns appropriate errno value.h]hThis function is useful to parse lists of phandles and their arguments. Returns 0 on success and fills out_args, on error returns appropriate errno value.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM_hj(jubjC)}(hQCaller is responsible to call of_node_put() on the returned out_args->np pointer.h]hQCaller is responsible to call of_node_put() on the returned out_args->np pointer.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMchj(jubjC)}(h Example::h]hExample:}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMfhj(jubjB)}(h`phandle1: node1 { }; phandle2: node2 { }; node3 { list = <&phandle1 0 2 &phandle2 2 3>; };h]h`phandle1: node1 { }; phandle2: node2 { }; node3 { list = <&phandle1 0 2 &phandle2 2 3>; };}hjksbah}(h]h ]h"]h$]h&]hhuh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhhj(jubjC)}(hTo get a device_node of the ``node2`` node you may call this: of_parse_phandle_with_fixed_args(node3, "list", 2, 1, :c:type:`args`);h](hTo get a device_node of the }(hjkhhhNhNubj)}(h ``node2``h]hnode2}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubhS node you may call this: of_parse_phandle_with_fixed_args(node3, “list”, 2, 1, }(hjkhhhNhNubh)}(h:c:type:`args`h]j)}(hjkh]hargs}(hjkhhhNhNubah}(h]h ](jBj\c-typeeh"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]refdocjB refdomainj\reftypetype refexplicitrefwarnjbjBjCargsuh1hhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMrhjkubh);}(hjkhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhjkhMrhj(jubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 0of_parse_phandle_with_optional_args (C function)%c.of_parse_phandle_with_optional_argshNtauh1hhhhhhNhNubj)}(hhh](j)}(hint of_parse_phandle_with_optional_args (const struct device_node *np, const char *list_name, const char *cells_name, int index, struct of_phandle_args *out_args)h]j)}(hint of_parse_phandle_with_optional_args(const struct device_node *np, const char *list_name, const char *cells_name, int index, struct of_phandle_args *out_args)h](j)}(hinth]hint}(hj"lhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjlhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hj1lhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlhhhj0lhMubj)}(h#of_parse_phandle_with_optional_argsh]jE)}(h#of_parse_phandle_with_optional_argsh]h#of_parse_phandle_with_optional_args}(hjClhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj?lubah}(h]h ](jjeh"]h$]h&]hhuh1jhjlhhhj0lhMubj)}(hz(const struct device_node *np, const char *list_name, const char *cells_name, int index, struct of_phandle_args *out_args)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hj_lhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj[lubj1)}(h h]h }(hjllhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[lubj)}(hj"h]hstruct}(hjzlhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj[lubj1)}(h h]h }(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[lubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjlhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjlubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjlmodnameN classnameNjbje)}jh]jk)}j^jElsb%c.of_parse_phandle_with_optional_argsasbuh1hhj[lubj1)}(h h]h }(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[lubj)}(hjh]h*}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[lubjE)}(hnph]hnp}(hjlhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj[lubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWlubj)}(hconst char *list_nameh](j)}(hj\h]hconst}(hjlhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjlubj1)}(h h]h }(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlubj)}(hcharh]hchar}(hjmhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjlubj1)}(h h]h }(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlubj)}(hjh]h*}(hj#mhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubjE)}(h list_nameh]h list_name}(hj0mhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWlubj)}(hconst char *cells_nameh](j)}(hj\h]hconst}(hjImhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjEmubj1)}(h h]h }(hjVmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjEmubj)}(hcharh]hchar}(hjdmhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjEmubj1)}(h h]h }(hjrmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjEmubj)}(hjh]h*}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEmubjE)}(h cells_nameh]h cells_name}(hjmhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjEmubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWlubj)}(h int indexh](j)}(hinth]hint}(hjmhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjmubj1)}(h h]h }(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubjE)}(hindexh]hindex}(hjmhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjmubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWlubj)}(h struct of_phandle_args *out_argsh](j)}(hj"h]hstruct}(hjmhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjmubj1)}(h h]h }(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hjmhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjmubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmmodnameN classnameNjbje)}jh]jl%c.of_parse_phandle_with_optional_argsasbuh1hhjmubj1)}(h h]h }(hjnhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubj)}(hjh]h*}(hj%nhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubjE)}(hout_argsh]hout_args}(hj2nhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjmubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWlubeh}(h]h ]h"]h$]h&]hhuh1jhjlhhhj0lhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjlhhhj0lhMubah}(h]jlah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj0lhMhjlhhubj>)}(hhh]jC)}(h(Find a node pointed by phandle in a listh]h(Find a node pointed by phandle in a list}(hj\nhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjYnhhubah}(h]h ]h"]h$]h&]uh1j=hjlhhhj0lhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajtnjbjtnjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` pointer to a device tree node containing a list ``const char *list_name`` property name that contains a list ``const char *cells_name`` property name that specifies phandles' arguments count ``int index`` index of a phandle to parse out ``struct of_phandle_args *out_args`` optional pointer to output arguments structure (will be filled) **Description** Same as of_parse_phandle_with_args() except that if the cells_name property is not found, cell_count of 0 is assumed. This is used to useful, if you have a phandle which didn't have arguments before and thus doesn't have a '#*-cells' property but is now migrated to having arguments while retaining backwards compatibility.h](jC)}(h**Parameters**h]jq)}(hj~nh]h Parameters}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj|nubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjxnubj)}(hhh](j)}(hQ``const struct device_node *np`` pointer to a device tree node containing a list h](j)}(h ``const struct device_node *np``h]j)}(hjnh]hconst struct device_node *np}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjnubj)}(hhh]jC)}(h/pointer to a device tree node containing a listh]h/pointer to a device tree node containing a list}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjnhMhjnubj)}(h=``const char *list_name`` property name that contains a list h](j)}(h``const char *list_name``h]j)}(hjnh]hconst char *list_name}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjnubj)}(hhh]jC)}(h"property name that contains a listh]h"property name that contains a list}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjnhMhjnubj)}(hR``const char *cells_name`` property name that specifies phandles' arguments count h](j)}(h``const char *cells_name``h]j)}(hjoh]hconst char *cells_name}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhj oubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj oubj)}(hhh]jC)}(h6property name that specifies phandles' arguments counth]h8property name that specifies phandles’ arguments count}(hj(ohhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj$ohMhj%oubah}(h]h ]h"]h$]h&]uh1jhj oubeh}(h]h ]h"]h$]h&]uh1jhj$ohMhjnubj)}(h.``int index`` index of a phandle to parse out h](j)}(h ``int index``h]j)}(hjHoh]h int index}(hjJohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFoubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjBoubj)}(hhh]jC)}(hindex of a phandle to parse outh]hindex of a phandle to parse out}(hjaohhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj]ohMhj^oubah}(h]h ]h"]h$]h&]uh1jhjBoubeh}(h]h ]h"]h$]h&]uh1jhj]ohMhjnubj)}(he``struct of_phandle_args *out_args`` optional pointer to output arguments structure (will be filled) h](j)}(h$``struct of_phandle_args *out_args``h]j)}(hjoh]h struct of_phandle_args *out_args}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj{oubj)}(hhh]jC)}(h?optional pointer to output arguments structure (will be filled)h]h?optional pointer to output arguments structure (will be filled)}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjohMhjoubah}(h]h ]h"]h$]h&]uh1jhj{oubeh}(h]h ]h"]h$]h&]uh1jhjohMhjnubeh}(h]h ]h"]h$]h&]uh1jhjxnubjC)}(h**Description**h]jq)}(hjoh]h Description}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jphjoubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjxnubjC)}(huSame as of_parse_phandle_with_args() except that if the cells_name property is not found, cell_count of 0 is assumed.h]huSame as of_parse_phandle_with_args() except that if the cells_name property is not found, cell_count of 0 is assumed.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjxnubjC)}(hThis is used to useful, if you have a phandle which didn't have arguments before and thus doesn't have a '#*-cells' property but is now migrated to having arguments while retaining backwards compatibility.h]hThis is used to useful, if you have a phandle which didn’t have arguments before and thus doesn’t have a ‘#*-cells’ property but is now migrated to having arguments while retaining backwards compatibility.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjxnubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j "of_phandle_args_equal (C function)c.of_phandle_args_equalhNtauh1hhhhhhNhNubj)}(hhh](j)}(h_bool of_phandle_args_equal (const struct of_phandle_args *a1, const struct of_phandle_args *a2)h]j)}(h^bool of_phandle_args_equal(const struct of_phandle_args *a1, const struct of_phandle_args *a2)h](j)}(hjh]hbool}(hjphhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj phhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj phhhjphMubj)}(hof_phandle_args_equalh]jE)}(hof_phandle_args_equalh]hof_phandle_args_equal}(hj0phhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj,pubah}(h]h ](jjeh"]h$]h&]hhuh1jhj phhhjphMubj)}(hD(const struct of_phandle_args *a1, const struct of_phandle_args *a2)h](j)}(h const struct of_phandle_args *a1h](j)}(hj\h]hconst}(hjLphhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjHpubj1)}(h h]h }(hjYphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjHpubj)}(hj"h]hstruct}(hjgphhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjHpubj1)}(h h]h }(hjtphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjHpubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hjphhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjpubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjpmodnameN classnameNjbje)}jh]jk)}j^j2psbc.of_phandle_args_equalasbuh1hhjHpubj1)}(h h]h }(hjphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjHpubj)}(hjh]h*}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHpubjE)}(ha1h]ha1}(hjphhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjHpubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjDpubj)}(h const struct of_phandle_args *a2h](j)}(hj\h]hconst}(hjphhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjpubj1)}(h h]h }(hjphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjpubj)}(hj"h]hstruct}(hjphhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjpubj1)}(h h]h }(hjqhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjpubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hjqhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjqubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjqmodnameN classnameNjbje)}jh]jpc.of_phandle_args_equalasbuh1hhjpubj1)}(h h]h }(hj0qhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjpubj)}(hjh]h*}(hj>qhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubjE)}(ha2h]ha2}(hjKqhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjpubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjDpubeh}(h]h ]h"]h$]h&]hhuh1jhj phhhjphMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjphhhjphMubah}(h]jpah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjphMhjphhubj>)}(hhh]jC)}(hCompare two of_phandle_argsh]hCompare two of_phandle_args}(hjuqhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjrqhhubah}(h]h ]h"]h$]h&]uh1j=hjphhhjphMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajqjbjqjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct of_phandle_args *a1`` First of_phandle_args to compare ``const struct of_phandle_args *a2`` Second of_phandle_args to compare **Return** True if a1 and a2 are the same (same node pointer, same phandle args), false otherwise.h](jC)}(h**Parameters**h]jq)}(hjqh]h Parameters}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjqubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjqubj)}(hhh](j)}(hF``const struct of_phandle_args *a1`` First of_phandle_args to compare h](j)}(h$``const struct of_phandle_args *a1``h]j)}(hjqh]h const struct of_phandle_args *a1}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjqubj)}(hhh]jC)}(h First of_phandle_args to compareh]h First of_phandle_args to compare}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjqhMhjqubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1jhjqhMhjqubj)}(hG``const struct of_phandle_args *a2`` Second of_phandle_args to compare h](j)}(h$``const struct of_phandle_args *a2``h]j)}(hjqh]h const struct of_phandle_args *a2}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjqubj)}(hhh]jC)}(h!Second of_phandle_args to compareh]h!Second of_phandle_args to compare}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjrhMhjrubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1jhjrhMhjqubeh}(h]h ]h"]h$]h&]uh1jhjqubjC)}(h **Return**h]jq)}(hj*rh]hReturn}(hj,rhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj(rubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjqubjC)}(hWTrue if a1 and a2 are the same (same node pointer, same phandle args), false otherwise.h]hWTrue if a1 and a2 are the same (same node pointer, same phandle args), false otherwise.}(hj@rhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjqubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'of_property_count_u8_elems (C function)c.of_property_count_u8_elemshNtauh1hhhhhhNhNubj)}(hhh](j)}(hSint of_property_count_u8_elems (const struct device_node *np, const char *propname)h]j)}(hRint of_property_count_u8_elems(const struct device_node *np, const char *propname)h](j)}(hinth]hint}(hjorhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjkrhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hj~rhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkrhhhj}rhMubj)}(hof_property_count_u8_elemsh]jE)}(hof_property_count_u8_elemsh]hof_property_count_u8_elems}(hjrhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjrubah}(h]h ](jjeh"]h$]h&]hhuh1jhjkrhhhj}rhMubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjrhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjrubj1)}(h h]h }(hjrhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjrubj)}(hj"h]hstruct}(hjrhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjrubj1)}(h h]h }(hjrhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjrubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjrhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjrubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjrmodnameN classnameNjbje)}jh]jk)}j^jrsbc.of_property_count_u8_elemsasbuh1hhjrubj1)}(h h]h }(hjshhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjrubj)}(hjh]h*}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubjE)}(hnph]hnp}(hj shhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjrubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjrubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hj9shhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj5subj1)}(h h]h }(hjFshhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5subj)}(hcharh]hchar}(hjTshhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj5subj1)}(h h]h }(hjbshhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5subj)}(hjh]h*}(hjpshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5subjE)}(hpropnameh]hpropname}(hj}shhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj5subeh}(h]h ]h"]h$]h&]noemphhhuh1jhjrubeh}(h]h ]h"]h$]h&]hhuh1jhjkrhhhj}rhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjgrhhhj}rhMubah}(h]jbrah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj}rhMhjdrhhubj>)}(hhh]jC)}(h-Count the number of u8 elements in a propertyh]h-Count the number of u8 elements in a property}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjshhubah}(h]h ]h"]h$]h&]uh1j=hjdrhhhj}rhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajsjbjsjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. **Description** Search for a property in a device node and count the number of u8 elements in it. **Return** The number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of u8 and -ENODATA if the property does not have a value.h](jC)}(h**Parameters**h]jq)}(hjsh]h Parameters}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jphjsubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjsubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjsh]hconst struct device_node *np}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjsubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjshMhjsubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1jhjshMhjsubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hj!th]hconst char *propname}(hj#thhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjtubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hj:thhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj6thMhj7tubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhj6thMhjsubeh}(h]h ]h"]h$]h&]uh1jhjsubjC)}(h**Description**h]jq)}(hj\th]h Description}(hj^thhhNhNubah}(h]h ]h"]h$]h&]uh1jphjZtubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjsubjC)}(hQSearch for a property in a device node and count the number of u8 elements in it.h]hQSearch for a property in a device node and count the number of u8 elements in it.}(hjrthhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjsubjC)}(h **Return**h]jq)}(hjth]hReturn}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jphjtubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjsubjC)}(hThe number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of u8 and -ENODATA if the property does not have a value.h]hThe number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of u8 and -ENODATA if the property does not have a value.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjsubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j (of_property_count_u16_elems (C function)c.of_property_count_u16_elemshNtauh1hhhhhhNhNubj)}(hhh](j)}(hTint of_property_count_u16_elems (const struct device_node *np, const char *propname)h]j)}(hSint of_property_count_u16_elems(const struct device_node *np, const char *propname)h](j)}(hinth]hint}(hjthhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjthhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjthhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjthhhjthMubj)}(hof_property_count_u16_elemsh]jE)}(hof_property_count_u16_elemsh]hof_property_count_u16_elems}(hjthhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjtubah}(h]h ](jjeh"]h$]h&]hhuh1jhjthhhjthMubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjuhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjuubj1)}(h h]h }(hjuhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjuubj)}(hj"h]hstruct}(hj uhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjuubj1)}(h h]h }(hj-uhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjuubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj>uhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj;uubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj@umodnameN classnameNjbje)}jh]jk)}j^jtsbc.of_property_count_u16_elemsasbuh1hhjuubj1)}(h h]h }(hj^uhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjuubj)}(hjh]h*}(hjluhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubjE)}(hnph]hnp}(hjyuhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjuubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjtubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjuhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjuubj1)}(h h]h }(hjuhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjuubj)}(hcharh]hchar}(hjuhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjuubj1)}(h h]h }(hjuhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjuubj)}(hjh]h*}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubjE)}(hpropnameh]hpropname}(hjuhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjuubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjtubeh}(h]h ]h"]h$]h&]hhuh1jhjthhhjthMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjthhhjthMubah}(h]jtah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjthMhjthhubj>)}(hhh]jC)}(h.Count the number of u16 elements in a propertyh]h.Count the number of u16 elements in a property}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjuhhubah}(h]h ]h"]h$]h&]uh1j=hjthhhjthMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajvjbjvjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. **Description** Search for a property in a device node and count the number of u16 elements in it. **Return** The number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of u16 and -ENODATA if the property does not have a value.h](jC)}(h**Parameters**h]jq)}(hj"vh]h Parameters}(hj$vhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj vubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjvubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjAvh]hconst struct device_node *np}(hjCvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?vubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj;vubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjZvhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjVvhMhjWvubah}(h]h ]h"]h$]h&]uh1jhj;vubeh}(h]h ]h"]h$]h&]uh1jhjVvhMhj8vubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjzvh]hconst char *propname}(hj|vhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxvubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjtvubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjvhMhjvubah}(h]h ]h"]h$]h&]uh1jhjtvubeh}(h]h ]h"]h$]h&]uh1jhjvhMhj8vubeh}(h]h ]h"]h$]h&]uh1jhjvubjC)}(h**Description**h]jq)}(hjvh]h Description}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjvubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjvubjC)}(hRSearch for a property in a device node and count the number of u16 elements in it.h]hRSearch for a property in a device node and count the number of u16 elements in it.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjvubjC)}(h **Return**h]jq)}(hjvh]hReturn}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjvubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjvubjC)}(hThe number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of u16 and -ENODATA if the property does not have a value.h]hThe number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of u16 and -ENODATA if the property does not have a value.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjvubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j (of_property_count_u32_elems (C function)c.of_property_count_u32_elemshNtauh1hhhhhhNhNubj)}(hhh](j)}(hTint of_property_count_u32_elems (const struct device_node *np, const char *propname)h]j)}(hSint of_property_count_u32_elems(const struct device_node *np, const char *propname)h](j)}(hinth]hint}(hj!whhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjwhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hj0whhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjwhhhj/whMubj)}(hof_property_count_u32_elemsh]jE)}(hof_property_count_u32_elemsh]hof_property_count_u32_elems}(hjBwhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj>wubah}(h]h ](jjeh"]h$]h&]hhuh1jhjwhhhj/whMubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hj^whhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjZwubj1)}(h h]h }(hjkwhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZwubj)}(hj"h]hstruct}(hjywhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjZwubj1)}(h h]h }(hjwhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZwubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjwhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjwubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjwmodnameN classnameNjbje)}jh]jk)}j^jDwsbc.of_property_count_u32_elemsasbuh1hhjZwubj1)}(h h]h }(hjwhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZwubj)}(hjh]h*}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZwubjE)}(hnph]hnp}(hjwhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZwubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVwubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjwhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjwubj1)}(h h]h }(hjwhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjwubj)}(hcharh]hchar}(hjxhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjwubj1)}(h h]h }(hjxhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjwubj)}(hjh]h*}(hj"xhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubjE)}(hpropnameh]hpropname}(hj/xhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjwubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVwubeh}(h]h ]h"]h$]h&]hhuh1jhjwhhhj/whMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjwhhhj/whMubah}(h]jwah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj/whMhjwhhubj>)}(hhh]jC)}(h.Count the number of u32 elements in a propertyh]h.Count the number of u32 elements in a property}(hjYxhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjVxhhubah}(h]h ]h"]h$]h&]uh1j=hjwhhhj/whMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajqxjbjqxjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. **Description** Search for a property in a device node and count the number of u32 elements in it. **Return** The number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of u32 and -ENODATA if the property does not have a value.h](jC)}(h**Parameters**h]jq)}(hj{xh]h Parameters}(hj}xhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjyxubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjuxubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjxh]hconst struct device_node *np}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjxubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjxhMhjxubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1jhjxhMhjxubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjxh]hconst char *propname}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjxubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjxhMhjxubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1jhjxhMhjxubeh}(h]h ]h"]h$]h&]uh1jhjuxubjC)}(h**Description**h]jq)}(hjyh]h Description}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj yubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjuxubjC)}(hRSearch for a property in a device node and count the number of u32 elements in it.h]hRSearch for a property in a device node and count the number of u32 elements in it.}(hj$yhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjuxubjC)}(h **Return**h]jq)}(hj5yh]hReturn}(hj7yhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj3yubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjuxubjC)}(hThe number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of u32 and -ENODATA if the property does not have a value.h]hThe number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of u32 and -ENODATA if the property does not have a value.}(hjKyhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjuxubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j (of_property_count_u64_elems (C function)c.of_property_count_u64_elemshNtauh1hhhhhhNhNubj)}(hhh](j)}(hTint of_property_count_u64_elems (const struct device_node *np, const char *propname)h]j)}(hSint of_property_count_u64_elems(const struct device_node *np, const char *propname)h](j)}(hinth]hint}(hjzyhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjvyhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjvyhhhjyhMubj)}(hof_property_count_u64_elemsh]jE)}(hof_property_count_u64_elemsh]hof_property_count_u64_elems}(hjyhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjyubah}(h]h ](jjeh"]h$]h&]hhuh1jhjvyhhhjyhMubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjyhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjyubj1)}(h h]h }(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubj)}(hj"h]hstruct}(hjyhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjyubj1)}(h h]h }(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjyhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjyubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjymodnameN classnameNjbje)}jh]jk)}j^jysbc.of_property_count_u64_elemsasbuh1hhjyubj1)}(h h]h }(hjzhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubjE)}(hnph]hnp}(hj+zhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjDzhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj@zubj1)}(h h]h }(hjQzhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj@zubj)}(hcharh]hchar}(hj_zhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj@zubj1)}(h h]h }(hjmzhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj@zubj)}(hjh]h*}(hj{zhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@zubjE)}(hpropnameh]hpropname}(hjzhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj@zubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubeh}(h]h ]h"]h$]h&]hhuh1jhjvyhhhjyhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjryhhhjyhMubah}(h]jmyah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjyhMhjoyhhubj>)}(hhh]jC)}(h.Count the number of u64 elements in a propertyh]h.Count the number of u64 elements in a property}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjzhhubah}(h]h ]h"]h$]h&]uh1j=hjoyhhhjyhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajzjbjzjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. **Description** Search for a property in a device node and count the number of u64 elements in it. **Return** The number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of u64 and -ENODATA if the property does not have a value.h](jC)}(h**Parameters**h]jq)}(hjzh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjzubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjzubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjzh]hconst struct device_node *np}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjzubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hj {hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj{hMhj {ubah}(h]h ]h"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]uh1jhj{hMhjzubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hj,{h]hconst char *propname}(hj.{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*{ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj&{ubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjE{hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjA{hMhjB{ubah}(h]h ]h"]h$]h&]uh1jhj&{ubeh}(h]h ]h"]h$]h&]uh1jhjA{hMhjzubeh}(h]h ]h"]h$]h&]uh1jhjzubjC)}(h**Description**h]jq)}(hjg{h]h Description}(hji{hhhNhNubah}(h]h ]h"]h$]h&]uh1jphje{ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjzubjC)}(hRSearch for a property in a device node and count the number of u64 elements in it.h]hRSearch for a property in a device node and count the number of u64 elements in it.}(hj}{hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjzubjC)}(h **Return**h]jq)}(hj{h]hReturn}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj{ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjzubjC)}(hThe number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of u64 and -ENODATA if the property does not have a value.h]hThe number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of u64 and -ENODATA if the property does not have a value.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjzubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j *of_property_read_string_array (C function)c.of_property_read_string_arrayhNtauh1hhhhhhNhNubj)}(hhh](j)}(hxint of_property_read_string_array (const struct device_node *np, const char *propname, const char **out_strs, size_t sz)h]j)}(hwint of_property_read_string_array(const struct device_node *np, const char *propname, const char **out_strs, size_t sz)h](j)}(hinth]hint}(hj{hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj{hhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hj{hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj{hhhj{hMubj)}(hof_property_read_string_arrayh]jE)}(hof_property_read_string_arrayh]hof_property_read_string_array}(hj{hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj{ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj{hhhj{hMubj)}(hV(const struct device_node *np, const char *propname, const char **out_strs, size_t sz)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hj|hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj |ubj1)}(h h]h }(hj|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj |ubj)}(hj"h]hstruct}(hj+|hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj |ubj1)}(h h]h }(hj8|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj |ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjI|hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjF|ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjK|modnameN classnameNjbje)}jh]jk)}j^j{sbc.of_property_read_string_arrayasbuh1hhj |ubj1)}(h h]h }(hji|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj |ubj)}(hjh]h*}(hjw|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj |ubjE)}(hnph]hnp}(hj|hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj |ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hj|hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj|ubj1)}(h h]h }(hj|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj|ubj)}(hcharh]hchar}(hj|hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj|ubj1)}(h h]h }(hj|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj|ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubjE)}(hpropnameh]hpropname}(hj|hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubj)}(hconst char **out_strsh](j)}(hj\h]hconst}(hj|hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj|ubj1)}(h h]h }(hj}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj|ubj)}(hcharh]hchar}(hj}hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj|ubj1)}(h h]h }(hj#}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj|ubj)}(hjh]h*}(hj1}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj)}(hjh]h*}(hj>}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubjE)}(hout_strsh]hout_strs}(hjK}hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubj)}(h size_t szh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjg}hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjd}ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetji}modnameN classnameNjbje)}jh]je|c.of_property_read_string_arrayasbuh1hhj`}ubj1)}(h h]h }(hj}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`}ubjE)}(hszh]hsz}(hj}hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj`}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubeh}(h]h ]h"]h$]h&]hhuh1jhj{hhhj{hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj{hhhj{hMubah}(h]j{ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj{hMhj{hhubj>)}(hhh]jC)}(h:Read an array of strings from a multiple strings property.h]h:Read an array of strings from a multiple strings property.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj}hhubah}(h]h ]h"]h$]h&]uh1j=hj{hhhj{hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj}jbj}jcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``const char **out_strs`` output array of string pointers. ``size_t sz`` number of array elements to read. **Description** Search for a property in a device tree node and retrieve a list of terminated string values (pointer to data, not a copy) in that property. **Return** If **out_strs** is NULL, the number of strings in the property is returned.h](jC)}(h**Parameters**h]jq)}(hj}h]h Parameters}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj}ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj}ubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hj}h]hconst struct device_node *np}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj}ubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj~hMhj~ubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jhj~hMhj}ubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hj7~h]hconst char *propname}(hj9~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5~ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj1~ubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjP~hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjL~hMhjM~ubah}(h]h ]h"]h$]h&]uh1jhj1~ubeh}(h]h ]h"]h$]h&]uh1jhjL~hMhj}ubj)}(h;``const char **out_strs`` output array of string pointers. h](j)}(h``const char **out_strs``h]j)}(hjp~h]hconst char **out_strs}(hjr~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjn~ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjj~ubj)}(hhh]jC)}(h output array of string pointers.h]h output array of string pointers.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj~hMhj~ubah}(h]h ]h"]h$]h&]uh1jhjj~ubeh}(h]h ]h"]h$]h&]uh1jhj~hMhj}ubj)}(h0``size_t sz`` number of array elements to read. h](j)}(h ``size_t sz``h]j)}(hj~h]h size_t sz}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj~ubj)}(hhh]jC)}(h!number of array elements to read.h]h!number of array elements to read.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj~hMhj~ubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1jhj~hMhj}ubeh}(h]h ]h"]h$]h&]uh1jhj}ubjC)}(h**Description**h]jq)}(hj~h]h Description}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj~ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj}ubjC)}(hSearch for a property in a device tree node and retrieve a list of terminated string values (pointer to data, not a copy) in that property.h]hSearch for a property in a device tree node and retrieve a list of terminated string values (pointer to data, not a copy) in that property.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj}ubjC)}(h **Return**h]jq)}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj}ubjC)}(hKIf **out_strs** is NULL, the number of strings in the property is returned.h](hIf }(hj!hhhNhNubjq)}(h **out_strs**h]hout_strs}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj!ubh< is NULL, the number of strings in the property is returned.}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj}ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j &of_property_count_strings (C function)c.of_property_count_stringshNtauh1hhhhhhNhNubj)}(hhh](j)}(hRint of_property_count_strings (const struct device_node *np, const char *propname)h]j)}(hQint of_property_count_strings(const struct device_node *np, const char *propname)h](j)}(hinth]hint}(hjbhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj^hhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM ubj1)}(h h]h }(hjqhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj^hhhjphM ubj)}(hof_property_count_stringsh]jE)}(hof_property_count_stringsh]hof_property_count_strings}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhj^hhhjphM ubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_property_count_stringsasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hj,hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj(ubj1)}(h h]h }(hj9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj(ubj)}(hcharh]hchar}(hjGhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj(ubj1)}(h h]h }(hjUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj(ubj)}(hjh]h*}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubjE)}(hpropnameh]hpropname}(hjphhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj^hhhjphM ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjZhhhjphM ubah}(h]jUah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjphM hjWhhubj>)}(hhh]jC)}(hGFind and return the number of strings from a multiple strings property.h]hGFind and return the number of strings from a multiple strings property.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM hjhhubah}(h]h ]h"]h$]h&]uh1j=hjWhhhjphM ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. **Description** Search for a property in a device tree node and retrieve the number of null terminated string contain in it. **Return** The number of strings on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjۀh]hconst struct device_node *np}(hj݀hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjـubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM hjՀubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjՀubeh}(h]h ]h"]h$]h&]uh1jhjhM hjҀubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM hjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj)hM hj*ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj)hM hjҀubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjOh]h Description}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjMubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubjC)}(hlSearch for a property in a device tree node and retrieve the number of null terminated string contain in it.h]hlSearch for a property in a device tree node and retrieve the number of null terminated string contain in it.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubjC)}(h **Return**h]jq)}(hjvh]hReturn}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjtubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubjC)}(hThe number of strings on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.h]hThe number of strings on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j *of_property_read_string_index (C function)c.of_property_read_string_indexhNtauh1hhhhhhNhNubj)}(hhh](j)}(hvint of_property_read_string_index (const struct device_node *np, const char *propname, int index, const char **output)h]j)}(huint of_property_read_string_index(const struct device_node *np, const char *propname, int index, const char **output)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjʁhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjɁhMubj)}(hof_property_read_string_indexh]jE)}(hof_property_read_string_indexh]hof_property_read_string_index}(hj܁hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj؁ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjɁhMubj)}(hT(const struct device_node *np, const char *propname, int index, const char **output)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj1hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj.ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj3modnameN classnameNjbje)}jh]jk)}j^jށsbc.of_property_read_string_indexasbuh1hhjubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjlhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hjɂhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int indexh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjނubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjނubjE)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjނubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char **outputh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj$hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hj2hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(houtputh]houtput}(hjhhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjɁhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjɁhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjɁhMhjhhubj>)}(hhh]jC)}(h8Find and read a string from a multiple strings property.h]h8Find and read a string from a multiple strings property.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjɁhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX"**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``int index`` index of the string in the list of strings ``const char **output`` pointer to null terminated return string, modified only if return value is 0. **Description** Search for a property in a device tree node and retrieve a null terminated string value (pointer to data, not a copy) in the list of strings contained in that property. The out_string pointer is modified only if a valid string can be decoded. **Return** 0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM!hjubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjӃh]hconst struct device_node *np}(hjՃhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjуubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj̓ubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhj̓ubeh}(h]h ]h"]h$]h&]uh1jhjhMhjʃubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hj h]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM hjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj!hM hj"ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj!hM hjʃubj)}(h9``int index`` index of the string in the list of strings h](j)}(h ``int index``h]j)}(hjEh]h int index}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM!hj?ubj)}(hhh]jC)}(h*index of the string in the list of stringsh]h*index of the string in the list of strings}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjZhM!hj[ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jhjZhM!hjʃubj)}(hf``const char **output`` pointer to null terminated return string, modified only if return value is 0. h](j)}(h``const char **output``h]j)}(hj~h]hconst char **output}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM#hjxubj)}(hhh]jC)}(hMpointer to null terminated return string, modified only if return value is 0.h]hMpointer to null terminated return string, modified only if return value is 0.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM"hjubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1jhjhM#hjʃubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM%hjubjC)}(hSearch for a property in a device tree node and retrieve a null terminated string value (pointer to data, not a copy) in the list of strings contained in that property.h]hSearch for a property in a device tree node and retrieve a null terminated string value (pointer to data, not a copy) in the list of strings contained in that property.}(hjЄhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM$hjubjC)}(hIThe out_string pointer is modified only if a valid string can be decoded.h]hIThe out_string pointer is modified only if a valid string can be decoded.}(hj߄hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM)hjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM+hjubjC)}(h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.h]h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM)hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j  of_property_present (C function)c.of_property_presenthNtauh1hhhhhhNhNubj)}(hhh](j)}(hMbool of_property_present (const struct device_node *np, const char *propname)h]j)}(hLbool of_property_present(const struct device_node *np, const char *propname)h](j)}(hjh]hbool}(hj5hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj1hhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM8ubj1)}(h h]h }(hjChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1hhhjBhM8ubj)}(hof_property_presenth]jE)}(hof_property_presenth]hof_property_present}(hjUhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubah}(h]h ](jjeh"]h$]h&]hhuh1jhj1hhhjBhM8ubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjqhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjmubj1)}(h h]h }(hj~hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjmubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jWsbc.of_property_presentasbuh1hhjmubj1)}(h h]h }(hjʅhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubj)}(hjh]h*}(hj؅hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjmubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjiubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hjBhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjiubeh}(h]h ]h"]h$]h&]hhuh1jhj1hhhjBhM8ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj-hhhjBhM8ubah}(h]j(ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjBhM8hj*hhubj>)}(hhh]jC)}(h'Test if a property is present in a nodeh]h'Test if a property is present in a node}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM8hjihhubah}(h]h ]h"]h$]h&]uh1j=hj*hhhjBhM8ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node to search for the property. ``const char *propname`` name of the property to be searched. **Description** Test for a property present in a device node. **Return** true if the property exists false otherwise.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM<hjubj)}(hhh](j)}(hI``const struct device_node *np`` device node to search for the property. h](j)}(h ``const struct device_node *np``h]j)}(hjh]hconst struct device_node *np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM9hjubj)}(hhh]jC)}(h'device node to search for the property.h]h'device node to search for the property.}(hjƆhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj†hM9hjÆubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj†hM9hjubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM:hjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM:hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM:hjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hj!h]h Description}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM<hjubjC)}(h-Test for a property present in a device node.h]h-Test for a property present in a device node.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM;hjubjC)}(h **Return**h]jq)}(hjHh]hReturn}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjFubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM=hjubjC)}(h,true if the property exists false otherwise.h]h,true if the property exists false otherwise.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM>hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j &of_property_read_u8_array (C function)c.of_property_read_u8_arrayhNtauh1hhhhhhNhNubj)}(hhh](j)}(hmint of_property_read_u8_array (const struct device_node *np, const char *propname, u8 *out_values, size_t sz)h]j)}(hlint of_property_read_u8_array(const struct device_node *np, const char *propname, u8 *out_values, size_t sz)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMHubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMHubj)}(hof_property_read_u8_arrayh]jE)}(hof_property_read_u8_arrayh]hof_property_read_u8_array}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMHubj)}(hO(const struct device_node *np, const char *propname, u8 *out_values, size_t sz)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjʇhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjƇubj1)}(h h]h }(hjׇhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjƇubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjƇubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjƇubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_property_read_u8_arrayasbuh1hhjƇubj1)}(h h]h }(hj#hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjƇubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjƇubjE)}(hnph]hnp}(hj>hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjƇubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj‡ubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjWhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjSubj1)}(h h]h }(hjdhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjSubj)}(hcharh]hchar}(hjrhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjSubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjSubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubjE)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjSubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj‡ubj)}(hu8 *out_valuesh](h)}(hhh]jE)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_property_read_u8_arrayasbuh1hhjubj1)}(h h]h }(hjՈhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(h out_valuesh]h out_values}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj‡ubj)}(h size_t szh](h)}(hhh]jE)}(hsize_th]hsize_t}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_property_read_u8_arrayasbuh1hhjubj1)}(h h]h }(hj*hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hszh]hsz}(hj8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj‡ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMHubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMHubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMHhjhhubj>)}(hhh]jC)}(h-Find and read an array of u8 from a property.h]h-Find and read an array of u8 from a property.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMHhj_hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMHubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajzjbjzjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u8 *out_values`` pointer to return value, modified only if return value is 0. ``size_t sz`` number of array elements to read **Description** Search for a property in a device node and read 8-bit value(s) from it. dts entry of array should be like: ``property = /bits/ 8 <0x50 0x60 0x70>;`` The out_values is modified only if a valid u8 value can be decoded. **Return** 0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMLhj~ubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjh]hconst struct device_node *np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMJhjubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMJhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMJhjubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hj܉h]hconst char *propname}(hjމhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjډubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMKhj։ubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMKhjubah}(h]h ]h"]h$]h&]uh1jhj։ubeh}(h]h ]h"]h$]h&]uh1jhjhMKhjubj)}(hP``u8 *out_values`` pointer to return value, modified only if return value is 0. h](j)}(h``u8 *out_values``h]j)}(hjh]hu8 *out_values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMLhjubj)}(hhh]jC)}(h;`` h](j)}(h"dts entry of array should be like:h]h"dts entry of array should be like:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMShjubj)}(hhh]jC)}(h)``property = /bits/ 8 <0x50 0x60 0x70>;``h]j)}(hjɊh]h%property = /bits/ 8 <0x50 0x60 0x70>;}(hjˊhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNJubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMRhjĊubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjÊhMShjubah}(h]h ]h"]h$]h&]uh1jhj~ubjC)}(hCThe out_values is modified only if a valid u8 value can be decoded.h]hCThe out_values is modified only if a valid u8 value can be decoded.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMUhj~ubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMWhj~ubjC)}(h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h]h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn’t large enough.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMUhj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'of_property_read_u16_array (C function)c.of_property_read_u16_arrayhNtauh1hhhhhhNhNubj)}(hhh](j)}(hoint of_property_read_u16_array (const struct device_node *np, const char *propname, u16 *out_values, size_t sz)h]j)}(hnint of_property_read_u16_array(const struct device_node *np, const char *propname, u16 *out_values, size_t sz)h](j)}(hinth]hint}(hjGhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjChhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhubj1)}(h h]h }(hjVhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjChhhjUhMhubj)}(hof_property_read_u16_arrayh]jE)}(hof_property_read_u16_arrayh]hof_property_read_u16_array}(hjhhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjdubah}(h]h ](jjeh"]h$]h&]hhuh1jhjChhhjUhMhubj)}(hP(const struct device_node *np, const char *propname, u16 *out_values, size_t sz)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jjsbc.of_property_read_u16_arrayasbuh1hhjubj1)}(h h]h }(hj݋hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hcharh]hchar}(hj,hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(hpropnameh]hpropname}(hjUhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubj)}(hu16 *out_valuesh](h)}(hhh]jE)}(hu16h]hu16}(hjqhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjnubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjsmodnameN classnameNjbje)}jh]jًc.of_property_read_u16_arrayasbuh1hhjjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubjE)}(h out_valuesh]h out_values}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubj)}(h size_t szh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjƌhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjÌubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjȌmodnameN classnameNjbje)}jh]jًc.of_property_read_u16_arrayasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hszh]hsz}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubeh}(h]h ]h"]h$]h&]hhuh1jhjChhhjUhMhubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj?hhhjUhMhubah}(h]j:ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjUhMhhj<hhubj>)}(hhh]jC)}(h.Find and read an array of u16 from a property.h]h.Find and read an array of u16 from a property.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhhjhhubah}(h]h ]h"]h$]h&]uh1j=hj<hhhjUhMhubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj4jbj4jcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u16 *out_values`` pointer to return value, modified only if return value is 0. ``size_t sz`` number of array elements to read **Description** Search for a property in a device node and read 16-bit value(s) from it. dts entry of array should be like: ``property = /bits/ 16 <0x5000 0x6000 0x7000>;`` The out_values is modified only if a valid u16 value can be decoded. **Return** 0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h](jC)}(h**Parameters**h]jq)}(hj>h]h Parameters}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj<ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMlhj8ubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hj]h]hconst struct device_node *np}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMjhjWubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjrhMjhjsubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjrhMjhjTubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMkhjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMkhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMkhjTubj)}(hQ``u16 *out_values`` pointer to return value, modified only if return value is 0. h](j)}(h``u16 *out_values``h]j)}(hjύh]hu16 *out_values}(hjэhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj͍ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMlhjɍubj)}(hhh]jC)}(h;`` h](j)}(h"dts entry of array should be like:h]h"dts entry of array should be like:}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMshjkubj)}(hhh]jC)}(h0``property = /bits/ 16 <0x5000 0x6000 0x7000>;``h]j)}(hjh]h,property = /bits/ 16 <0x5000 0x6000 0x7000>;}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMrhj~ubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jhj}hMshjhubah}(h]h ]h"]h$]h&]uh1jhj8ubjC)}(hDThe out_values is modified only if a valid u16 value can be decoded.h]hDThe out_values is modified only if a valid u16 value can be decoded.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMuhj8ubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMwhj8ubjC)}(h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h]h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn’t large enough.}(hjҎhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMuhj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'of_property_read_u32_array (C function)c.of_property_read_u32_arrayhNtauh1hhhhhhNhNubj)}(hhh](j)}(hoint of_property_read_u32_array (const struct device_node *np, const char *propname, u32 *out_values, size_t sz)h]j)}(hnint of_property_read_u32_array(const struct device_node *np, const char *propname, u32 *out_values, size_t sz)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hof_property_read_u32_arrayh]jE)}(hof_property_read_u32_arrayh]hof_property_read_u32_array}(hj"hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(hP(const struct device_node *np, const char *propname, u32 *out_values, size_t sz)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hj>hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj:ubj1)}(h h]h }(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:ubj)}(hj"h]hstruct}(hjYhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj:ubj1)}(h h]h }(hjfhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjwhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjtubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjymodnameN classnameNjbje)}jh]jk)}j^j$sbc.of_property_read_u32_arrayasbuh1hhj:ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjˏhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjǏubj1)}(h h]h }(hj؏hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjǏubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjǏubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjǏubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjǏubjE)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjǏubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(hu32 *out_valuesh](h)}(hhh]jE)}(hu32h]hu32}(hj+hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj(ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj-modnameN classnameNjbje)}jh]jc.of_property_read_u32_arrayasbuh1hhj$ubj1)}(h h]h }(hjIhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj$ubj)}(hjh]h*}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubjE)}(h out_valuesh]h out_values}(hjdhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(h size_t szh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj}ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_property_read_u32_arrayasbuh1hhjyubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubjE)}(hszh]hsz}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h:Find and read an array of 32 bit integers from a property.h]h:Find and read an array of 32 bit integers from a property.}(hj֐hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjӐhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX{**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u32 *out_values`` pointer to return value, modified only if return value is 0. ``size_t sz`` number of array elements to read **Description** Search for a property in a device node and read 32-bit value(s) from it. The out_values is modified only if a valid u32 value can be decoded. **Return** 0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjh]hconst struct device_node *np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj,hMhj-ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj,hMhjubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjPh]hconst char *propname}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjJubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjehMhjfubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jhjehMhjubj)}(hQ``u32 *out_values`` pointer to return value, modified only if return value is 0. h](j)}(h``u32 *out_values``h]j)}(hjh]hu32 *out_values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubj)}(hhh]jC)}(hubj1)}(h h]h }(hjOhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>ubj)}(hcharh]hchar}(hj]hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj>ubj1)}(h h]h }(hjkhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>ubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubjE)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu64 *out_valuesh](h)}(hhh]jE)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j c.of_property_read_u64_arrayasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjΓhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(h out_valuesh]h out_values}(hjۓhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t szh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j c.of_property_read_u64_arrayasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hszh]hsz}(hj#hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjthhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjphhhjhMubah}(h]jkah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjmhhubj>)}(hhh]jC)}(h:Find and read an array of 64 bit integers from a property.h]h:Find and read an array of 64 bit integers from a property.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjJhhubah}(h]h ]h"]h$]h&]uh1j=hjmhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajejbjejcjdjeuh1j hhhhhNhNubjg)}(hX{**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u64 *out_values`` pointer to return value, modified only if return value is 0. ``size_t sz`` number of array elements to read **Description** Search for a property in a device node and read 64-bit value(s) from it. The out_values is modified only if a valid u64 value can be decoded. **Return** 0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h](jC)}(h**Parameters**h]jq)}(hjoh]h Parameters}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjmubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjiubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h: ``const struct device_node *np``h]j)}(hjh]hconst struct device_node *np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjǔh]hconst char *propname}(hjɔhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjŔubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjܔhMhjݔubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjܔhMhjubj)}(hQ``u64 *out_values`` pointer to return value, modified only if return value is 0. h](j)}(h``u64 *out_values``h]j)}(hjh]hu64 *out_values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubj)}(hhh]jC)}(h)}(hhh]jC)}(hHolds a changeset entryh]hHolds a changeset entry}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMihj.hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\structeh"]h$]h&]j`j\jajIjbjIjcjdjeuh1j hhhhhNhNubjg)}(hX**Definition**:: struct of_changeset_entry { struct list_head node; unsigned long action; struct device_node *np; struct property *prop; struct property *old_prop; }; **Members** ``node`` list_head for the log list ``action`` notifier action ``np`` pointer to the device node affected ``prop`` pointer to the property affected ``old_prop`` hold a pointer to the original propertyh](jC)}(h**Definition**::h](jq)}(h**Definition**h]h Definition}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjQubh:}(hjQhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMmhjMubjB)}(hstruct of_changeset_entry { struct list_head node; unsigned long action; struct device_node *np; struct property *prop; struct property *old_prop; };h]hstruct of_changeset_entry { struct list_head node; unsigned long action; struct device_node *np; struct property *prop; struct property *old_prop; };}hjnsbah}(h]h ]h"]h$]h&]hhuh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMohjMubjC)}(h **Members**h]jq)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj}ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMwhjMubj)}(hhh](j)}(h$``node`` list_head for the log list h](j)}(h``node``h]j)}(hjh]hnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMlhjubj)}(hhh]jC)}(hlist_head for the log listh]hlist_head for the log list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMlhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMlhjubj)}(h``action`` notifier action h](j)}(h ``action``h]j)}(hjזh]haction}(hjٖhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjՖubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMmhjіubj)}(hhh]jC)}(hnotifier actionh]hnotifier action}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMmhjubah}(h]h ]h"]h$]h&]uh1jhjіubeh}(h]h ]h"]h$]h&]uh1jhjhMmhjubj)}(h+``np`` pointer to the device node affected h](j)}(h``np``h]j)}(hjh]hnp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMnhj ubj)}(hhh]jC)}(h#pointer to the device node affectedh]h#pointer to the device node affected}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj%hMnhj&ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj%hMnhjubj)}(h*``prop`` pointer to the property affected h](j)}(h``prop``h]j)}(hjIh]hprop}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMohjCubj)}(hhh]jC)}(h pointer to the property affectedh]h pointer to the property affected}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj^hMohj_ubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhj^hMohjubj)}(h4``old_prop`` hold a pointer to the original propertyh](j)}(h ``old_prop``h]j)}(hjh]hold_prop}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMohj|ubj)}(hhh]jC)}(h'hold a pointer to the original propertyh]h'hold a pointer to the original property}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMphjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhjhMohjubeh}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubjC)}(h**Description**h]jq)}(hjŗh]h Description}(hjǗhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj×ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMshhhhubjC)}(hEvery modification of the device tree during a changeset is held in a list of of_changeset_entry structures. That way we can recover from a partial application, or we can revert the changeseth]hEvery modification of the device tree during a changeset is held in a list of of_changeset_entry structures. That way we can recover from a partial application, or we can revert the changeset}(hjۗhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMphhhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_changeset (C struct)c.of_changesethNtauh1hhhhhhNhNubj)}(hhh](j)}(h of_changeseth]j)}(hstruct of_changeseth](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMxubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMxubj)}(h of_changeseth]jE)}(hjh]h of_changeset}(hj#hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMxubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMxubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMxhjhhubj>)}(hhh]jC)}(hchangeset tracker structureh]hchangeset tracker structure}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjBhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMxubeh}(h]h ](j\structeh"]h$]h&]j`j\jaj]jbj]jcjdjeuh1j hhhhhNhNubjg)}(h**Definition**:: struct of_changeset { struct list_head entries; }; **Members** ``entries`` list_head for the changeset entriesh](jC)}(h**Definition**::h](jq)}(h**Definition**h]h Definition}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jphjeubh:}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjaubjB)}(h6struct of_changeset { struct list_head entries; };h]h6struct of_changeset { struct list_head entries; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjaubjC)}(h **Members**h]jq)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjaubj)}(hhh]j)}(h/``entries`` list_head for the changeset entriesh](j)}(h ``entries``h]j)}(hjh]hentries}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubj)}(hhh]jC)}(h#list_head for the changeset entriesh]h#list_head for the changeset entries}(hj˘hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjȘubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjǘhMhjubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhhhhubjC)}(hchangesets are a convenient way to apply bulk changes to the live tree. In case of an error, changes are rolled-back. changesets live on after initial application, and if not destroyed after use, they can be reverted in one single call.h]hchangesets are a convenient way to apply bulk changes to the live tree. In case of an error, changes are rolled-back. changesets live on after initial application, and if not destroyed after use, they can be reverted in one single call.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhhhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 1of_device_is_system_power_controller (C function)&c.of_device_is_system_power_controllerhNtauh1hhhhhhNhNubj)}(hhh](j)}(hHbool of_device_is_system_power_controller (const struct device_node *np)h]j)}(hGbool of_device_is_system_power_controller(const struct device_node *np)h](j)}(hjh]hbool}(hj3hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj/hhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjAhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/hhhj@hMubj)}(h$of_device_is_system_power_controllerh]jE)}(h$of_device_is_system_power_controllerh]h$of_device_is_system_power_controller}(hjShhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjOubah}(h]h ](jjeh"]h$]h&]hhuh1jhj/hhhj@hMubj)}(h(const struct device_node *np)h]j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjohhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjkubj1)}(h h]h }(hj|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjkubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jUsb&c.of_device_is_system_power_controllerasbuh1hhjkubj1)}(h h]h }(hjșhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkubj)}(hjh]h*}(hj֙hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubah}(h]h ]h"]h$]h&]hhuh1jhj/hhhj@hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj+hhhj@hMubah}(h]j&ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj@hMhj(hhubj>)}(hhh]jC)}(h9Tells if system-power-controller is found for device_nodeh]h9Tells if system-power-controller is found for device_node}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj hhubah}(h]h ]h"]h$]h&]uh1j=hj(hhhj@hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj%jbj%jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const struct device_node *np`` Pointer to the given device_node **Return** true if present false otherwiseh](jC)}(h**Parameters**h]jq)}(hj/h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj-ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj)ubj)}(hhh]j)}(hB``const struct device_node *np`` Pointer to the given device_node h](j)}(h ``const struct device_node *np``h]j)}(hjNh]hconst struct device_node *np}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjHubj)}(hhh]jC)}(h Pointer to the given device_nodeh]h Pointer to the given device_node}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjchMhjdubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhjchMhjEubah}(h]h ]h"]h$]h&]uh1jhj)ubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj)ubjC)}(htrue if present false otherwiseh]htrue if present false otherwise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !of_have_populated_dt (C function)c.of_have_populated_dthNtauh1hhhhhhNhNubj)}(hhh](j)}(h bool of_have_populated_dt (void)h]j)}(hbool of_have_populated_dt(void)h](j)}(hjh]hbool}(hjΚhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjʚhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjܚhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjʚhhhjۚhMubj)}(hof_have_populated_dth]jE)}(hof_have_populated_dth]hof_have_populated_dt}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjʚhhhjۚhMubj)}(h(void)h]j)}(hvoidh]j)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjʚhhhjۚhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjƚhhhjۚhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjۚhMhjÚhhubj>)}(hhh]jC)}(h#Has DT been populated by bootloaderh]h#Has DT been populated by bootloader}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj1hhubah}(h]h ]h"]h$]h&]uh1j=hjÚhhhjۚhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajLjbjLjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``void`` no arguments **Return** True if a DTB has been populated by the bootloader and it isn't the empty builtin one. False otherwise.h](jC)}(h**Parameters**h]jq)}(hjVh]h Parameters}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjTubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjPubj)}(hhh]j)}(h``void`` no arguments h](j)}(h``void``h]j)}(hjuh]hvoid}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKhjoubj)}(hhh]jC)}(h no argumentsh]h no arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjhKhjlubah}(h]h ]h"]h$]h&]uh1jhjPubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKhjPubjC)}(hgTrue if a DTB has been populated by the bootloader and it isn't the empty builtin one. False otherwise.h]hiTrue if a DTB has been populated by the bootloader and it isn’t the empty builtin one. False otherwise.}(hjƛhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjPubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j "of_property_read_bool (C function)c.of_property_read_boolhNtauh1hhhhhhNhNubj)}(hhh](j)}(hObool of_property_read_bool (const struct device_node *np, const char *propname)h]j)}(hNbool of_property_read_bool(const struct device_node *np, const char *propname)h](j)}(hjh]hbool}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK$ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhK$ubj)}(hof_property_read_boolh]jE)}(hof_property_read_boolh]hof_property_read_bool}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhK$ubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hj1hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj-ubj1)}(h h]h }(hj>hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-ubj)}(hj"h]hstruct}(hjLhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj-ubj1)}(h h]h }(hjYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjgubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjlmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_property_read_boolasbuh1hhj-ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj˜hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hjٜhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK$ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhK$ubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhK$hjhhubj>)}(hhh]jC)}(hFind a propertyh]hFind a property}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK$hj)hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhK$ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajDjbjDjcjdjeuh1j hhhhhNhNubjg)}(hX[**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. **Description** Search for a boolean property in a device node. Usage on non-boolean property types is deprecated. **Return** true if the property exists false otherwise.h](jC)}(h**Parameters**h]jq)}(hjNh]h Parameters}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjLubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK(hjHubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjmh]hconst struct device_node *np}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK%hjgubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK%hjubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjhK%hjdubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK&hjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK&hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK&hjdubeh}(h]h ]h"]h$]h&]uh1jhjHubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjߝubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK(hjHubjC)}(hbSearch for a boolean property in a device node. Usage on non-boolean property types is deprecated.h]hbSearch for a boolean property in a device node. Usage on non-boolean property types is deprecated.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK'hjHubjC)}(h **Return**h]jq)}(hjh]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK*hjHubjC)}(h,true if the property exists false otherwise.h]h,true if the property exists false otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK+hjHubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j  of_graph_is_present (C function)c.of_graph_is_presenthNtauh1hhhhhhNhNubj)}(hhh](j)}(h9bool of_graph_is_present (const struct device_node *node)h]j)}(h8bool of_graph_is_present(const struct device_node *node)h](j)}(hjh]hbool}(hjMhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjIhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK>ubj1)}(h h]h }(hj[hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjIhhhjZhK>ubj)}(hof_graph_is_presenth]jE)}(hof_graph_is_presenth]hof_graph_is_present}(hjmhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubah}(h]h ](jjeh"]h$]h&]hhuh1jhjIhhhjZhK>ubj)}(h (const struct device_node *node)h]j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjžhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjĞmodnameN classnameNjbje)}jh]jk)}j^josbc.of_graph_is_presentasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjIhhhjZhK>ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjEhhhjZhK>ubah}(h]j@ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjZhK>hjBhhubj>)}(hhh]jC)}(hcheck graph's presenceh]hcheck graph’s presence}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK>hj$hhubah}(h]h ]h"]h$]h&]uh1j=hjBhhhjZhK>ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj?jbj?jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const struct device_node *node`` pointer to device_node containing graph port **Return** True if **node** has a port or ports (with a port) sub-node, false otherwise.h](jC)}(h**Parameters**h]jq)}(hjIh]h Parameters}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjGubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKBhjCubj)}(hhh]j)}(hP``const struct device_node *node`` pointer to device_node containing graph port h](j)}(h"``const struct device_node *node``h]j)}(hjhh]hconst struct device_node *node}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK?hjbubj)}(hhh]jC)}(h,pointer to device_node containing graph porth]h,pointer to device_node containing graph port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj}hK?hj~ubah}(h]h ]h"]h$]h&]uh1jhjbubeh}(h]h ]h"]h$]h&]uh1jhj}hK?hj_ubah}(h]h ]h"]h$]h&]uh1jhjCubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKAhjCubjC)}(hMTrue if **node** has a port or ports (with a port) sub-node, false otherwise.h](hTrue if }(hjhhhNhNubjq)}(h**node**h]hnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh= has a port or ports (with a port) sub-node, false otherwise.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKAhjCubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ,of_property_count_elems_of_size (C function)!c.of_property_count_elems_of_sizehNtauh1hhhhhhNhNubj)}(hhh](j)}(hgint of_property_count_elems_of_size (const struct device_node *np, const char *propname, int elem_size)h]j)}(hfint of_property_count_elems_of_size(const struct device_node *np, const char *propname, int elem_size)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKRubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhKRubj)}(hof_property_count_elems_of_sizeh]jE)}(hof_property_count_elems_of_sizeh]hof_property_count_elems_of_size}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKRubj)}(hC(const struct device_node *np, const char *propname, int elem_size)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hj7hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj3ubj1)}(h h]h }(hjDhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3ubj)}(hj"h]hstruct}(hjRhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj3ubj1)}(h h]h }(hj_hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjphhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjmubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjrmodnameN classnameNjbje)}jh]jk)}j^jsb!c.of_property_count_elems_of_sizeasbuh1hhj3ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjĠhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjѠhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hjߠhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubj)}(h int elem_sizeh](j)}(hinth]hint}(hj!hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(h elem_sizeh]h elem_size}(hj=hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKRubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhKRubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhKRhjhhubj>)}(hhh]jC)}(h*Count the number of elements in a propertyh]h*Count the number of elements in a property}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKRhjdhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhKRubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``int elem_size`` size of the individual element **Description** Search for a property in a device node and count the number of elements of size elem_size in it. **Return** The number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of elem_size and -ENODATA if the property does not have a value.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKVhjubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjh]hconst struct device_node *np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKThjubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKThjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKThjubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjߡubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKUhjۡubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKUhjubah}(h]h ]h"]h$]h&]uh1jhjۡubeh}(h]h ]h"]h$]h&]uh1jhjhKUhjubj)}(h1``int elem_size`` size of the individual element h](j)}(h``int elem_size``h]j)}(hjh]h int elem_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKVhjubj)}(hhh]jC)}(hsize of the individual elementh]hsize of the individual element}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj/hKVhj0ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj/hKVhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjUh]h Description}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjSubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKXhjubjC)}(h`Search for a property in a device node and count the number of elements of size elem_size in it.h]h`Search for a property in a device node and count the number of elements of size elem_size in it.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKWhjubjC)}(h **Return**h]jq)}(hj|h]hReturn}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjzubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKZhjubjC)}(hThe number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of elem_size and -ENODATA if the property does not have a value.h]hThe number of elements on success, -EINVAL if the property does not exist or its length does not match a multiple of elem_size and -ENODATA if the property does not have a value.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK[hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j &of_property_read_u8_index (C function)c.of_property_read_u8_indexhNtauh1hhhhhhNhNubj)}(hhh](j)}(hlint of_property_read_u8_index (const struct device_node *np, const char *propname, u32 index, u8 *out_value)h]j)}(hkint of_property_read_u8_index(const struct device_node *np, const char *propname, u32 index, u8 *out_value)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKubj1)}(h h]h }(hjТhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjϢhKubj)}(hof_property_read_u8_indexh]jE)}(hof_property_read_u8_indexh]hof_property_read_u8_index}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjޢubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjϢhKubj)}(hN(const struct device_node *np, const char *propname, u32 index, u8 *out_value)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj&hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj7hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj9modnameN classnameNjbje)}jh]jk)}j^jsbc.of_property_read_u8_indexasbuh1hhjubj1)}(h h]h }(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjrhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj£hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hjϣhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 indexh](h)}(hhh]jE)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jSc.of_property_read_u8_indexasbuh1hhjubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u8 *out_valueh](h)}(hhh]jE)}(hu8h]hu8}(hj3hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj0ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj5modnameN classnameNjbje)}jh]jSc.of_property_read_u8_indexasbuh1hhj,ubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,ubj)}(hjh]h*}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubjE)}(h out_valueh]h out_value}(hjlhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjϢhKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjϢhKubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjϢhKhjhhubj>)}(hhh]jC)}(h/Find and read a u8 from a multi-value property.h]h/Find and read a u8 from a multi-value property.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjϢhKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hXs**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u32 index`` index of the u8 in the list of values ``u8 *out_value`` pointer to return value, modified only if no error. **Description** Search for a property in a device node and read nth 8-bit value from it. The out_value is modified only if a valid u8 value can be decoded. **Return** 0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjפh]hconst struct device_node *np}(hj٤hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjդubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjѤubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjѤubeh}(h]h ]h"]h$]h&]uh1jhjhKhjΤubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj ubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj%hKhj&ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj%hKhjΤubj)}(h4``u32 index`` index of the u8 in the list of values h](j)}(h ``u32 index``h]j)}(hjIh]h u32 index}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjCubj)}(hhh]jC)}(h%index of the u8 in the list of valuesh]h%index of the u8 in the list of values}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj^hKhj_ubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhj^hKhjΤubj)}(hF``u8 *out_value`` pointer to return value, modified only if no error. h](j)}(h``u8 *out_value``h]j)}(hjh]h u8 *out_value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj|ubj)}(hhh]jC)}(h3pointer to return value, modified only if no error.h]h3pointer to return value, modified only if no error.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhjhKhjΤubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubjC)}(hHSearch for a property in a device node and read nth 8-bit value from it.h]hHSearch for a property in a device node and read nth 8-bit value from it.}(hjӥhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubjC)}(hBThe out_value is modified only if a valid u8 value can be decoded.h]hBThe out_value is modified only if a valid u8 value can be decoded.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubjC)}(h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h]h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn’t large enough.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'of_property_read_u16_index (C function)c.of_property_read_u16_indexhNtauh1hhhhhhNhNubj)}(hhh](j)}(hnint of_property_read_u16_index (const struct device_node *np, const char *propname, u32 index, u16 *out_value)h]j)}(hmint of_property_read_u16_index(const struct device_node *np, const char *propname, u32 index, u16 *out_value)h](j)}(hinth]hint}(hj8hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj4hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKubj1)}(h h]h }(hjGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4hhhjFhKubj)}(hof_property_read_u16_indexh]jE)}(hof_property_read_u16_indexh]hof_property_read_u16_index}(hjYhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjUubah}(h]h ](jjeh"]h$]h&]hhuh1jhj4hhhjFhKubj)}(hO(const struct device_node *np, const char *propname, u32 index, u16 *out_value)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjuhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjqubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjqubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjqubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjqubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^j[sbc.of_property_read_u16_indexasbuh1hhjqubj1)}(h h]h }(hjΦhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjqubj)}(hjh]h*}(hjܦhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjqubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjmubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj+hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hjFhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjmubj)}(h u32 indexh](h)}(hhh]jE)}(hu32h]hu32}(hjbhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj_ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjdmodnameN classnameNjbje)}jh]jʦc.of_property_read_u16_indexasbuh1hhj[ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[ubjE)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj[ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjmubj)}(hu16 *out_valueh](h)}(hhh]jE)}(hu16h]hu16}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jʦc.of_property_read_u16_indexasbuh1hhjubj1)}(h h]h }(hjȧhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj֧hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(h out_valueh]h out_value}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjmubeh}(h]h ]h"]h$]h&]hhuh1jhj4hhhjFhKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj0hhhjFhKubah}(h]j+ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjFhKhj-hhubj>)}(hhh]jC)}(h0Find and read a u16 from a multi-value property.h]h0Find and read a u16 from a multi-value property.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj hhubah}(h]h ]h"]h$]h&]uh1j=hj-hhhjFhKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj%jbj%jcjdjeuh1j hhhhhNhNubjg)}(hXw**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u32 index`` index of the u16 in the list of values ``u16 *out_value`` pointer to return value, modified only if no error. **Description** Search for a property in a device node and read nth 16-bit value from it. The out_value is modified only if a valid u16 value can be decoded. **Return** 0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h](jC)}(h**Parameters**h]jq)}(hj/h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj-ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj)ubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjNh]hconst struct device_node *np}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjHubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjchKhjdubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhjchKhjEubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjEubj)}(h5``u32 index`` index of the u16 in the list of values h](j)}(h ``u32 index``h]j)}(hjh]h u32 index}(hj¨hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh]jC)}(h&index of the u16 in the list of valuesh]h&index of the u16 in the list of values}(hj٨hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjըhKhj֨ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjըhKhjEubj)}(hG``u16 *out_value`` pointer to return value, modified only if no error. h](j)}(h``u16 *out_value``h]j)}(hjh]hu16 *out_value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh]jC)}(h3pointer to return value, modified only if no error.h]h3pointer to return value, modified only if no error.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjEubeh}(h]h ]h"]h$]h&]uh1jhj)ubjC)}(h**Description**h]jq)}(hj4h]h Description}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj2ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj)ubjC)}(hISearch for a property in a device node and read nth 16-bit value from it.h]hISearch for a property in a device node and read nth 16-bit value from it.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj)ubjC)}(hCThe out_value is modified only if a valid u16 value can be decoded.h]hCThe out_value is modified only if a valid u16 value can be decoded.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj)ubjC)}(h **Return**h]jq)}(hjjh]hReturn}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjhubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj)ubjC)}(h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h]h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn’t large enough.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'of_property_read_u32_index (C function)c.of_property_read_u32_indexhNtauh1hhhhhhNhNubj)}(hhh](j)}(hnint of_property_read_u32_index (const struct device_node *np, const char *propname, u32 index, u32 *out_value)h]j)}(hmint of_property_read_u32_index(const struct device_node *np, const char *propname, u32 index, u32 *out_value)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhKubj)}(hof_property_read_u32_indexh]jE)}(hof_property_read_u32_indexh]hof_property_read_u32_index}(hjЩhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj̩ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(hO(const struct device_node *np, const char *propname, u32 index, u32 *out_value)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj"ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj'modnameN classnameNjbje)}jh]jk)}j^jҩsbc.of_property_read_u32_indexasbuh1hhjubj1)}(h h]h }(hjEhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hj`hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjyhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjuubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjuubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjuubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjuubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubjE)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjuubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 indexh](h)}(hhh]jE)}(hu32h]hu32}(hj٪hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj֪ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj۪modnameN classnameNjbje)}jh]jAc.of_property_read_u32_indexasbuh1hhjҪubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjҪubjE)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjҪubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu32 *out_valueh](h)}(hhh]jE)}(hu32h]hu32}(hj!hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj#modnameN classnameNjbje)}jh]jAc.of_property_read_u32_indexasbuh1hhjubj1)}(h h]h }(hj?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(h out_valueh]h out_value}(hjZhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhKubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhKhjhhubj>)}(hhh]jC)}(h0Find and read a u32 from a multi-value property.h]h0Find and read a u32 from a multi-value property.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hXw**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u32 index`` index of the u32 in the list of values ``u32 *out_value`` pointer to return value, modified only if no error. **Description** Search for a property in a device node and read nth 32-bit value from it. The out_value is modified only if a valid u32 value can be decoded. **Return** 0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjūh]hconst struct device_node *np}(hjǫhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjëubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjޫhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjګhKhj۫ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjګhKhjubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h5``u32 index`` index of the u32 in the list of values h](j)}(h ``u32 index``h]j)}(hj7h]h u32 index}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj1ubj)}(hhh]jC)}(h&index of the u32 in the list of valuesh]h&index of the u32 in the list of values}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjLhKhjMubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhjLhKhjubj)}(hG``u32 *out_value`` pointer to return value, modified only if no error. h](j)}(h``u32 *out_value``h]j)}(hjph]hu32 *out_value}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjjubj)}(hhh]jC)}(h3pointer to return value, modified only if no error.h]h3pointer to return value, modified only if no error.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubjC)}(hISearch for a property in a device node and read nth 32-bit value from it.h]hISearch for a property in a device node and read nth 32-bit value from it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubjC)}(hCThe out_value is modified only if a valid u32 value can be decoded.h]hCThe out_value is modified only if a valid u32 value can be decoded.}(hjЬhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj߬ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubjC)}(h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h]h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn’t large enough.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'of_property_read_u64_index (C function)c.of_property_read_u64_indexhNtauh1hhhhhhNhNubj)}(hhh](j)}(hnint of_property_read_u64_index (const struct device_node *np, const char *propname, u32 index, u64 *out_value)h]j)}(hmint of_property_read_u64_index(const struct device_node *np, const char *propname, u32 index, u64 *out_value)h](j)}(hinth]hint}(hj&hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj"hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKubj1)}(h h]h }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"hhhj4hKubj)}(hof_property_read_u64_indexh]jE)}(hof_property_read_u64_indexh]hof_property_read_u64_index}(hjGhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjCubah}(h]h ](jjeh"]h$]h&]hhuh1jhj"hhhj4hKubj)}(hO(const struct device_node *np, const char *propname, u32 index, u64 *out_value)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjchhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj_ubj1)}(h h]h }(hjphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj_ubj)}(hj"h]hstruct}(hj~hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj_ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj_ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jIsbc.of_property_read_u64_indexasbuh1hhj_ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj_ubj)}(hjh]h*}(hjʭhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubjE)}(hnph]hnp}(hj׭hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj_ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[ubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hj4hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[ubj)}(h u32 indexh](h)}(hhh]jE)}(hu32h]hu32}(hjPhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjMubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjRmodnameN classnameNjbje)}jh]jc.of_property_read_u64_indexasbuh1hhjIubj1)}(h h]h }(hjnhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjIubjE)}(hindexh]hindex}(hj|hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjIubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[ubj)}(hu64 *out_valueh](h)}(hhh]jE)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_property_read_u64_indexasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjĮhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(h out_valueh]h out_value}(hjѮhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[ubeh}(h]h ]h"]h$]h&]hhuh1jhj"hhhj4hKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj4hKubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj4hKhjhhubj>)}(hhh]jC)}(h0Find and read a u64 from a multi-value property.h]h0Find and read a u64 from a multi-value property.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj4hKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hXw**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u32 index`` index of the u64 in the list of values ``u64 *out_value`` pointer to return value, modified only if no error. **Description** Search for a property in a device node and read nth 64-bit value from it. The out_value is modified only if a valid u64 value can be decoded. **Return** 0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hj<h]hconst struct device_node *np}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj6ubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjQhKhjRubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhjQhKhj3ubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjuh]hconst char *propname}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjoubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjhKhj3ubj)}(h5``u32 index`` index of the u64 in the list of values h](j)}(h ``u32 index``h]j)}(hjh]h u32 index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h&index of the u64 in the list of valuesh]h&index of the u64 in the list of values}(hjǯhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjïhMhjįubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjïhMhj3ubj)}(hG``u64 *out_value`` pointer to return value, modified only if no error. h](j)}(h``u64 *out_value``h]j)}(hjh]hu64 *out_value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h3pointer to return value, modified only if no error.h]h3pointer to return value, modified only if no error.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj3ubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hj"h]h Description}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(hISearch for a property in a device node and read nth 64-bit value from it.h]hISearch for a property in a device node and read nth 64-bit value from it.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(hCThe out_value is modified only if a valid u64 value can be decoded.h]hCThe out_value is modified only if a valid u64 value can be decoded.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(h **Return**h]jq)}(hjXh]hReturn}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjVubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h]h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn’t large enough.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j /of_property_read_variable_u8_array (C function)$c.of_property_read_variable_u8_arrayhNtauh1hhhhhhNhNubj)}(hhh](j)}(hint of_property_read_variable_u8_array (const struct device_node *np, const char *propname, u8 *out_values, size_t sz_min, size_t sz_max)h]j)}(hint of_property_read_variable_u8_array(const struct device_node *np, const char *propname, u8 *out_values, size_t sz_min, size_t sz_max)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(h"of_property_read_variable_u8_arrayh]jE)}(h"of_property_read_variable_u8_arrayh]h"of_property_read_variable_u8_array}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(hb(const struct device_node *np, const char *propname, u8 *out_values, size_t sz_min, size_t sz_max)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjڰhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjְubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjְubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjְubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjְubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jsb$c.of_property_read_variable_u8_arrayasbuh1hhjְubj1)}(h h]h }(hj3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjְubj)}(hjh]h*}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjְubjE)}(hnph]hnp}(hjNhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjְubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjҰubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjghhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjcubj1)}(h h]h }(hjthhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjcubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubjE)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjcubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjҰubj)}(hu8 *out_valuesh](h)}(hhh]jE)}(hu8h]hu8}(hjDZhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjıubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjɱmodnameN classnameNjbje)}jh]j/$c.of_property_read_variable_u8_arrayasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(h out_valuesh]h out_values}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjҰubj)}(h size_t sz_minh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j/$c.of_property_read_variable_u8_arrayasbuh1hhjubj1)}(h h]h }(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hsz_minh]hsz_min}(hjHhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjҰubj)}(h size_t sz_maxh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjdhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjaubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjfmodnameN classnameNjbje)}jh]j/$c.of_property_read_variable_u8_arrayasbuh1hhj]ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj]ubjE)}(hsz_maxh]hsz_max}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj]ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjҰubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h`Find and read an array of u8 from a property, with bounds on the minimum and maximum array size.h]h`Find and read an array of u8 from a property, with bounds on the minimum and maximum array size.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajҲjbjҲjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u8 *out_values`` pointer to found values. ``size_t sz_min`` minimum number of array elements to read ``size_t sz_max`` maximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read. **Description** Search for a property in a device node and read 8-bit value(s) from it. dts entry of array should be like: ``property = /bits/ 8 <0x50 0x60 0x70>;`` The out_values is modified only if a valid u8 value can be decoded. **Return** The number of elements read on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data is smaller than sz_min or longer than sz_max.h](jC)}(h**Parameters**h]jq)}(hjܲh]h Parameters}(hj޲hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjڲubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM!hjֲubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjh]hconst struct device_node *np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM hjubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hj4h]hconst char *propname}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM!hj.ubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjIhM!hjJubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhjIhM!hjubj)}(h,``u8 *out_values`` pointer to found values. h](j)}(h``u8 *out_values``h]j)}(hjmh]hu8 *out_values}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM"hjgubj)}(hhh]jC)}(hpointer to found values.h]hpointer to found values.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM"hjubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjhM"hjubj)}(h;``size_t sz_min`` minimum number of array elements to read h](j)}(h``size_t sz_min``h]j)}(hjh]h size_t sz_min}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM#hjubj)}(hhh]jC)}(h(minimum number of array elements to readh]h(minimum number of array elements to read}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM#hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM#hjubj)}(h``size_t sz_max`` maximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read. h](j)}(h``size_t sz_max``h]j)}(hj߳h]h size_t sz_max}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjݳubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM&hjٳubj)}(hhh]jC)}(hmaximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read.h]hmaximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM$hjubah}(h]h ]h"]h$]h&]uh1jhjٳubeh}(h]h ]h"]h$]h&]uh1jhjhM&hjubeh}(h]h ]h"]h$]h&]uh1jhjֲubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM(hjֲubjC)}(hGSearch for a property in a device node and read 8-bit value(s) from it.h]hGSearch for a property in a device node and read 8-bit value(s) from it.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM'hjֲubj)}(hhh]j)}(hNdts entry of array should be like: ``property = /bits/ 8 <0x50 0x60 0x70>;`` h](j)}(h"dts entry of array should be like:h]h"dts entry of array should be like:}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM,hjCubj)}(hhh]jC)}(h)``property = /bits/ 8 <0x50 0x60 0x70>;``h]j)}(hj[h]h%property = /bits/ 8 <0x50 0x60 0x70>;}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM+hjVubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhjUhM,hj@ubah}(h]h ]h"]h$]h&]uh1jhjֲubjC)}(hCThe out_values is modified only if a valid u8 value can be decoded.h]hCThe out_values is modified only if a valid u8 value can be decoded.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM.hjֲubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM0hjֲubjC)}(hThe number of elements read on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data is smaller than sz_min or longer than sz_max.h]hThe number of elements read on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data is smaller than sz_min or longer than sz_max.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM.hjֲubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 0of_property_read_variable_u16_array (C function)%c.of_property_read_variable_u16_arrayhNtauh1hhhhhhNhNubj)}(hhh](j)}(hint of_property_read_variable_u16_array (const struct device_node *np, const char *propname, u16 *out_values, size_t sz_min, size_t sz_max)h]j)}(hint of_property_read_variable_u16_array(const struct device_node *np, const char *propname, u16 *out_values, size_t sz_min, size_t sz_max)h](j)}(hinth]hint}(hjٴhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjմhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMOubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjմhhhjhMOubj)}(h#of_property_read_variable_u16_arrayh]jE)}(h#of_property_read_variable_u16_arrayh]h#of_property_read_variable_u16_array}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjմhhhjhMOubj)}(hc(const struct device_node *np, const char *propname, u16 *out_values, size_t sz_min, size_t sz_max)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj#hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hj1hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj>hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjOhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjLubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjQmodnameN classnameNjbje)}jh]jk)}j^jsb%c.of_property_read_variable_u16_arrayasbuh1hhjubj1)}(h h]h }(hjohhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj̵hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjڵhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu16 *out_valuesh](h)}(hhh]jE)}(hu16h]hu16}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk%c.of_property_read_variable_u16_arrayasbuh1hhjubj1)}(h h]h }(hj!hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(h out_valuesh]h out_values}(hj<hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t sz_minh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjXhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjUubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjZmodnameN classnameNjbje)}jh]jk%c.of_property_read_variable_u16_arrayasbuh1hhjQubj1)}(h h]h }(hjvhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubjE)}(hsz_minh]hsz_min}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t sz_maxh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk%c.of_property_read_variable_u16_arrayasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hsz_maxh]hsz_max}(hj̶hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjմhhhjhMOubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjѴhhhjhMOubah}(h]j̴ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMOhjδhhubj>)}(hhh]jC)}(haFind and read an array of u16 from a property, with bounds on the minimum and maximum array size.h]haFind and read an array of u16 from a property, with bounds on the minimum and maximum array size.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMOhjhhubah}(h]h ]h"]h$]h&]uh1j=hjδhhhjhMOubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u16 *out_values`` pointer to found values. ``size_t sz_min`` minimum number of array elements to read ``size_t sz_max`` maximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read. **Description** Search for a property in a device node and read 16-bit value(s) from it. dts entry of array should be like: ``property = /bits/ 16 <0x5000 0x6000 0x7000>;`` The out_values is modified only if a valid u16 value can be decoded. **Return** The number of elements read on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data is smaller than sz_min or longer than sz_max.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMShjubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hj7h]hconst struct device_node *np}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMRhj1ubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjLhMRhjMubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhjLhMRhj.ubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjph]hconst char *propname}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMShjjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMShjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjhMShj.ubj)}(h-``u16 *out_values`` pointer to found values. h](j)}(h``u16 *out_values``h]j)}(hjh]hu16 *out_values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMThjubj)}(hhh]jC)}(hpointer to found values.h]hpointer to found values.}(hj·hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMThjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMThj.ubj)}(h;``size_t sz_min`` minimum number of array elements to read h](j)}(h``size_t sz_min``h]j)}(hjh]h size_t sz_min}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMUhjܷubj)}(hhh]jC)}(h(minimum number of array elements to readh]h(minimum number of array elements to read}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMUhjubah}(h]h ]h"]h$]h&]uh1jhjܷubeh}(h]h ]h"]h$]h&]uh1jhjhMUhj.ubj)}(h``size_t sz_max`` maximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read. h](j)}(h``size_t sz_max``h]j)}(hjh]h size_t sz_max}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMXhjubj)}(hhh]jC)}(hmaximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read.h]hmaximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMVhj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj0hMXhj.ubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjWh]h Description}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjUubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMZhjubjC)}(hHSearch for a property in a device node and read 16-bit value(s) from it.h]hHSearch for a property in a device node and read 16-bit value(s) from it.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMYhjubj)}(hhh]j)}(hUdts entry of array should be like: ``property = /bits/ 16 <0x5000 0x6000 0x7000>;`` h](j)}(h"dts entry of array should be like:h]h"dts entry of array should be like:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM^hjubj)}(hhh]jC)}(h0``property = /bits/ 16 <0x5000 0x6000 0x7000>;``h]j)}(hjh]h,property = /bits/ 16 <0x5000 0x6000 0x7000>;}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM]hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM^hj|ubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(hDThe out_values is modified only if a valid u16 value can be decoded.h]hDThe out_values is modified only if a valid u16 value can be decoded.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM`hjubjC)}(h **Return**h]jq)}(hjиh]hReturn}(hjҸhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjθubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMbhjubjC)}(hThe number of elements read on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data is smaller than sz_min or longer than sz_max.h]hThe number of elements read on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data is smaller than sz_min or longer than sz_max.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM`hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 0of_property_read_variable_u32_array (C function)%c.of_property_read_variable_u32_arrayhNtauh1hhhhhhNhNubj)}(hhh](j)}(hint of_property_read_variable_u32_array (const struct device_node *np, const char *propname, u32 *out_values, size_t sz_min, size_t sz_max)h]j)}(hint of_property_read_variable_u32_array(const struct device_node *np, const char *propname, u32 *out_values, size_t sz_min, size_t sz_max)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hj$hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj#hMubj)}(h#of_property_read_variable_u32_arrayh]jE)}(h#of_property_read_variable_u32_arrayh]h#of_property_read_variable_u32_array}(hj6hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj2ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj#hMubj)}(hc(const struct device_node *np, const char *propname, u32 *out_values, size_t sz_min, size_t sz_max)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjRhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjNubj1)}(h h]h }(hj_hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubj)}(hj"h]hstruct}(hjmhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjNubj1)}(h h]h }(hjzhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^j8sb%c.of_property_read_variable_u32_arrayasbuh1hhjNubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubjE)}(hnph]hnp}(hjƹhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hj߹hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj۹ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj۹ubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj۹ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj۹ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj۹ubjE)}(hpropnameh]hpropname}(hj#hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj۹ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(hu32 *out_valuesh](h)}(hhh]jE)}(hu32h]hu32}(hj?hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj<ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjAmodnameN classnameNjbje)}jh]j%c.of_property_read_variable_u32_arrayasbuh1hhj8ubj1)}(h h]h }(hj]hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj8ubj)}(hjh]h*}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubjE)}(h out_valuesh]h out_values}(hjxhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj8ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(h size_t sz_minh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j%c.of_property_read_variable_u32_arrayasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hsz_minh]hsz_min}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(h size_t sz_maxh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjܺhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjٺubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj޺modnameN classnameNjbje)}jh]j%c.of_property_read_variable_u32_arrayasbuh1hhjպubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjպubjE)}(hsz_maxh]hsz_max}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjպubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj#hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj hhhj#hMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj#hMhj hhubj>)}(hhh]jC)}(hmFind and read an array of 32 bit integers from a property, with bounds on the minimum and maximum array size.h]hmFind and read an array of 32 bit integers from a property, with bounds on the minimum and maximum array size.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj/hhubah}(h]h ]h"]h$]h&]uh1j=hj hhhj#hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajJjbjJjcjdjeuh1j hhhhhNhNubjg)}(hXJ**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u32 *out_values`` pointer to return found values. ``size_t sz_min`` minimum number of array elements to read ``size_t sz_max`` maximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read. **Description** Search for a property in a device node and read 32-bit value(s) from it. The out_values is modified only if a valid u32 value can be decoded. **Return** The number of elements read on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data is smaller than sz_min or longer than sz_max.h](jC)}(h**Parameters**h]jq)}(hjTh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjRubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjNubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjsh]hconst struct device_node *np}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjmubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjhMhjjubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjŻhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhj»ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjjubj)}(h4``u32 *out_values`` pointer to return found values. h](j)}(h``u32 *out_values``h]j)}(hjh]hu32 *out_values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj߻ubj)}(hhh]jC)}(hpointer to return found values.h]hpointer to return found values.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhj߻ubeh}(h]h ]h"]h$]h&]uh1jhjhMhjjubj)}(h;``size_t sz_min`` minimum number of array elements to read h](j)}(h``size_t sz_min``h]j)}(hjh]h size_t sz_min}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h(minimum number of array elements to readh]h(minimum number of array elements to read}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj3hMhj4ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj3hMhjjubj)}(h``size_t sz_max`` maximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read. h](j)}(h``size_t sz_max``h]j)}(hjWh]h size_t sz_max}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjQubj)}(hhh]jC)}(hmaximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read.h]hmaximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjmubah}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]uh1jhjlhMhjjubeh}(h]h ]h"]h$]h&]uh1jhjNubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjNubjC)}(hHSearch for a property in a device node and read 32-bit value(s) from it.h]hHSearch for a property in a device node and read 32-bit value(s) from it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjNubjC)}(hDThe out_values is modified only if a valid u32 value can be decoded.h]hDThe out_values is modified only if a valid u32 value can be decoded.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjNubjC)}(h **Return**h]jq)}(hjɼh]hReturn}(hj˼hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjǼubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjNubjC)}(hThe number of elements read on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data is smaller than sz_min or longer than sz_max.h]hThe number of elements read on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data is smaller than sz_min or longer than sz_max.}(hj߼hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjNubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !of_property_read_u64 (C function)c.of_property_read_u64hNtauh1hhhhhhNhNubj)}(hhh](j)}(h]int of_property_read_u64 (const struct device_node *np, const char *propname, u64 *out_value)h]j)}(h\int of_property_read_u64(const struct device_node *np, const char *propname, u64 *out_value)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj hhhjhMubj)}(hof_property_read_u64h]jE)}(hof_property_read_u64h]hof_property_read_u64}(hj/hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj+ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhjhMubj)}(hD(const struct device_node *np, const char *propname, u64 *out_value)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjKhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjGubj1)}(h h]h }(hjXhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubj)}(hj"h]hstruct}(hjfhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjGubj1)}(h h]h }(hjshhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^j1sbc.of_property_read_u64asbuh1hhjGubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjCubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjؽhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjԽubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjԽubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjԽubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjԽubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjԽubjE)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjԽubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjCubj)}(hu64 *out_valueh](h)}(hhh]jE)}(hu64h]hu64}(hj8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj5ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj:modnameN classnameNjbje)}jh]jc.of_property_read_u64asbuh1hhj1ubj1)}(h h]h }(hjVhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1ubj)}(hjh]h*}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubjE)}(h out_valueh]h out_value}(hjqhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjCubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h.Find and read a 64 bit integer from a propertyh]h.Find and read a 64 bit integer from a property}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hXF**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u64 *out_value`` pointer to return value, modified only if return value is 0. **Description** Search for a property in a device node and read a 64-bit value from it. The out_value is modified only if a valid u64 value can be decoded. **Return** 0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data isn't large enough.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjܾh]hconst struct device_node *np}(hj޾hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjھubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj־ubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhj־ubeh}(h]h ]h"]h$]h&]uh1jhjhMhjӾubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj*hMhj+ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj*hMhjӾubj)}(hP``u64 *out_value`` pointer to return value, modified only if return value is 0. h](j)}(h``u64 *out_value``h]j)}(hjNh]hu64 *out_value}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjHubj)}(hhh]jC)}(h)}(hhh]jC)}(hmFind and read an array of 64 bit integers from a property, with bounds on the minimum and maximum array size.h]hmFind and read an array of 64 bit integers from a property, with bounds on the minimum and maximum array size.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj9jbj9jcjdjeuh1j hhhhhNhNubjg)}(hXC**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``u64 *out_values`` pointer to found values. ``size_t sz_min`` minimum number of array elements to read ``size_t sz_max`` maximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read. **Description** Search for a property in a device node and read 64-bit value(s) from it. The out_values is modified only if a valid u64 value can be decoded. **Return** The number of elements read on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data is smaller than sz_min or longer than sz_max.h](jC)}(h**Parameters**h]jq)}(hjCh]h Parameters}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj=ubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjbh]hconst struct device_node *np}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj\ubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjwhMhjxubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jhjwhMhjYubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjYubj)}(h-``u64 *out_values`` pointer to found values. h](j)}(h``u64 *out_values``h]j)}(hjh]hu64 *out_values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(hpointer to found values.h]hpointer to found values.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjYubj)}(h;``size_t sz_min`` minimum number of array elements to read h](j)}(h``size_t sz_min``h]j)}(hj h]h size_t sz_min}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h(minimum number of array elements to readh]h(minimum number of array elements to read}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj"hMhj#ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj"hMhjYubj)}(h``size_t sz_max`` maximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read. h](j)}(h``size_t sz_max``h]j)}(hjFh]h size_t sz_max}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj@ubj)}(hhh]jC)}(hmaximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read.h]hmaximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj\ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj[hMhjYubeh}(h]h ]h"]h$]h&]uh1jhj=ubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj=ubjC)}(hHSearch for a property in a device node and read 64-bit value(s) from it.h]hHSearch for a property in a device node and read 64-bit value(s) from it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj=ubjC)}(hDThe out_values is modified only if a valid u64 value can be decoded.h]hDThe out_values is modified only if a valid u64 value can be decoded.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj=ubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj=ubjC)}(hThe number of elements read on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data is smaller than sz_min or longer than sz_max.h]hThe number of elements read on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EOVERFLOW if the property data is smaller than sz_min or longer than sz_max.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $of_property_read_string (C function)c.of_property_read_stringhNtauh1hhhhhhNhNubj)}(hhh](j)}(hiint of_property_read_string (const struct device_node *np, const char *propname, const char **out_string)h]j)}(hhint of_property_read_string(const struct device_node *np, const char *propname, const char **out_string)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj hMubj)}(hof_property_read_stringh]jE)}(hof_property_read_stringh]hof_property_read_string}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj hMubj)}(hM(const struct device_node *np, const char *propname, const char **out_string)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hj:hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj6ubj1)}(h h]h }(hjGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj6ubj)}(hj"h]hstruct}(hjUhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj6ubj1)}(h h]h }(hjbhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj6ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjshhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjpubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjumodnameN classnameNjbje)}jh]jk)}j^j sbc.of_property_read_stringasbuh1hhj6ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj6ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubj)}(hconst char **out_stringh](j)}(hj\h]hconst}(hj$hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hcharh]hchar}(hj?hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hjMhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(h out_stringh]h out_string}(hjuhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj hMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj hMhjhhubj>)}(hhh]jC)}(h&Find and read a string from a propertyh]h&Find and read a string from a property}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX **Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``const char **out_string`` pointer to null terminated return string, modified only if return value is 0. **Description** Search for a property in a device tree node and retrieve a null terminated string value (pointer to data, not a copy). Note that the empty string "" has length of 1, thus -ENODATA cannot be interpreted as an empty string. The out_string pointer is modified only if a valid string can be decoded. **Return** 0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjh]hconst struct device_node *np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj.hMhj/ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj.hMhjubj)}(hj``const char **out_string`` pointer to null terminated return string, modified only if return value is 0. h](j)}(h``const char **out_string``h]j)}(hjRh]hconst char **out_string}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjLubj)}(hhh]jC)}(hMpointer to null terminated return string, modified only if return value is 0.h]hMpointer to null terminated return string, modified only if return value is 0.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1jhjghMhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(hvSearch for a property in a device tree node and retrieve a null terminated string value (pointer to data, not a copy).h]hvSearch for a property in a device tree node and retrieve a null terminated string value (pointer to data, not a copy).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(hfNote that the empty string "" has length of 1, thus -ENODATA cannot be interpreted as an empty string.h]hjNote that the empty string “” has length of 1, thus -ENODATA cannot be interpreted as an empty string.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM hjubjC)}(hIThe out_string pointer is modified only if a valid string can be decoded.h]hIThe out_string pointer is modified only if a valid string can be decoded.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM hjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.h]h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j %of_property_match_string (C function)c.of_property_match_stringhNtauh1hhhhhhNhNubj)}(hhh](j)}(heint of_property_match_string (const struct device_node *np, const char *propname, const char *string)h]j)}(hdint of_property_match_string(const struct device_node *np, const char *propname, const char *string)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM#ubj1)}(h h]h }(hj'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj&hM#ubj)}(hof_property_match_stringh]jE)}(hof_property_match_stringh]hof_property_match_string}(hj9hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj5ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj&hM#ubj)}(hH(const struct device_node *np, const char *propname, const char *string)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjUhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjQubj1)}(h h]h }(hjbhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubj)}(hj"h]hstruct}(hjphhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjQubj1)}(h h]h }(hj}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^j;sbc.of_property_match_stringasbuh1hhjQubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjMubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hj&hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjMubj)}(hconst char *stringh](j)}(hj\h]hconst}(hj?hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj;ubj1)}(h h]h }(hjLhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;ubj)}(hcharh]hchar}(hjZhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj;ubj1)}(h h]h }(hjhhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;ubj)}(hjh]h*}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubjE)}(hstringh]hstring}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjMubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj&hM#ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj&hM#ubah}(h]j ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj&hM#hj hhubj>)}(hhh]jC)}(h&Find string in a list and return indexh]h&Find string in a list and return index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM#hjhhubah}(h]h ]h"]h$]h&]uh1j=hj hhhj&hM#ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hXW**Parameters** ``const struct device_node *np`` pointer to the node containing the string list property ``const char *propname`` string list property name ``const char *string`` pointer to the string to search for in the string list **Description** Search for an exact match of string in a device node property which is a string of lists. **Return** the index of the first occurrence of the string on success, -EINVAL if the property does not exist, -ENODATA if the property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM'hjubj)}(hhh](j)}(hY``const struct device_node *np`` pointer to the node containing the string list property h](j)}(h ``const struct device_node *np``h]j)}(hjh]hconst struct device_node *np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM$hjubj)}(hhh]jC)}(h7pointer to the node containing the string list propertyh]h7pointer to the node containing the string list property}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM$hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM$hjubj)}(h3``const char *propname`` string list property name h](j)}(h``const char *propname``h]j)}(hj'h]hconst char *propname}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM%hj!ubj)}(hhh]jC)}(hstring list property nameh]hstring list property name}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj<hM%hj=ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj<hM%hjubj)}(hN``const char *string`` pointer to the string to search for in the string list h](j)}(h``const char *string``h]j)}(hj`h]hconst char *string}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM&hjZubj)}(hhh]jC)}(h6pointer to the string to search for in the string listh]h6pointer to the string to search for in the string list}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjuhM&hjvubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhjuhM&hjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM(hjubjC)}(hYSearch for an exact match of string in a device node property which is a string of lists.h]hYSearch for an exact match of string in a device node property which is a string of lists.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM'hjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM*hjubjC)}(hthe index of the first occurrence of the string on success, -EINVAL if the property does not exist, -ENODATA if the property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.h]hthe index of the first occurrence of the string on success, -EINVAL if the property does not exist, -ENODATA if the property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM+hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j +of_property_read_string_helper (C function) c.of_property_read_string_helperhNtauh1hhhhhhNhNubj)}(hhh](j)}(hint of_property_read_string_helper (const struct device_node *np, const char *propname, const char **out_strs, size_t sz, int skip)h]j)}(hint of_property_read_string_helper(const struct device_node *np, const char *propname, const char **out_strs, size_t sz, int skip)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMMubj)}(hof_property_read_string_helperh]jE)}(hof_property_read_string_helperh]hof_property_read_string_helper}(hj(hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj$ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMMubj)}(h`(const struct device_node *np, const char *propname, const char **out_strs, size_t sz, int skip)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjDhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj@ubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj@ubj)}(hj"h]hstruct}(hj_hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj@ubj1)}(h h]h }(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj@ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj}hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjzubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^j*sb c.of_property_read_string_helperasbuh1hhj@ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj@ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj<ubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj<ubj)}(hconst char **out_strsh](j)}(hj\h]hconst}(hj.hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj*ubj1)}(h h]h }(hj;hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj*ubj)}(hcharh]hchar}(hjIhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj*ubj1)}(h h]h }(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj*ubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj)}(hjh]h*}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubjE)}(hout_strsh]hout_strs}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj<ubj)}(h size_t szh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j c.of_property_read_string_helperasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hszh]hsz}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj<ubj)}(hint skiph](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hskiph]hskip}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj<ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMMhjhhubj>)}(hhh]jC)}(h,Utility helper for parsing string propertiesh]h,Utility helper for parsing string properties}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMMhj#hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj>jbj>jcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. ``const char **out_strs`` output array of string pointers. ``size_t sz`` number of array elements to read. ``int skip`` Number of strings to skip over at beginning of list. **Description** Don't call this function directly. It is a utility helper for the of_property_read_string*() family of functions.h](jC)}(h**Parameters**h]jq)}(hjHh]h Parameters}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjFubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMQhjBubj)}(hhh](j)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j)}(h ``const struct device_node *np``h]j)}(hjgh]hconst struct device_node *np}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMNhjaubj)}(hhh]jC)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj|hMNhj}ubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jhj|hMNhj^ubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjh]hconst char *propname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMOhjubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMOhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMOhj^ubj)}(h;``const char **out_strs`` output array of string pointers. h](j)}(h``const char **out_strs``h]j)}(hjh]hconst char **out_strs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMPhjubj)}(hhh]jC)}(h output array of string pointers.h]h output array of string pointers.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMPhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMPhj^ubj)}(h0``size_t sz`` number of array elements to read. h](j)}(h ``size_t sz``h]j)}(hjh]h size_t sz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMQhj ubj)}(hhh]jC)}(h!number of array elements to read.h]h!number of array elements to read.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj'hMQhj(ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj'hMQhj^ubj)}(hB``int skip`` Number of strings to skip over at beginning of list. h](j)}(h ``int skip``h]j)}(hjKh]hint skip}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMRhjEubj)}(hhh]jC)}(h4Number of strings to skip over at beginning of list.h]h4Number of strings to skip over at beginning of list.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj`hMRhjaubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhj`hMRhj^ubeh}(h]h ]h"]h$]h&]uh1jhjBubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMThjBubjC)}(hqDon't call this function directly. It is a utility helper for the of_property_read_string*() family of functions.h]hsDon’t call this function directly. It is a utility helper for the of_property_read_string*() family of functions.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMShjBubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $of_graph_parse_endpoint (C function)c.of_graph_parse_endpointhNtauh1hhhhhhNhNubj)}(hhh](j)}(hZint of_graph_parse_endpoint (const struct device_node *node, struct of_endpoint *endpoint)h]j)}(hYint of_graph_parse_endpoint(const struct device_node *node, struct of_endpoint *endpoint)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hof_graph_parse_endpointh]jE)}(hof_graph_parse_endpointh]hof_graph_parse_endpoint}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h>(const struct device_node *node, struct of_endpoint *endpoint)h](j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hj#hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjAhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj>ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjCmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_graph_parse_endpointasbuh1hhjubj1)}(h h]h }(hjahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnodeh]hnode}(hj|hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct of_endpoint *endpointh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h of_endpointh]h of_endpoint}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j]c.of_graph_parse_endpointasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hendpointh]hendpoint}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h%parse common endpoint node propertiesh]h%parse common endpoint node properties}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj.jbj.jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const struct device_node *node`` pointer to endpoint device_node ``struct of_endpoint *endpoint`` pointer to the OF endpoint data structure **Description** The caller should hold a reference to **node**.h](jC)}(h**Parameters**h]jq)}(hj8h]h Parameters}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj6ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj2ubj)}(hhh](j)}(hC``const struct device_node *node`` pointer to endpoint device_node h](j)}(h"``const struct device_node *node``h]j)}(hjWh]hconst struct device_node *node}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjQubj)}(hhh]jC)}(hpointer to endpoint device_nodeh]hpointer to endpoint device_node}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjlhMhjmubah}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]uh1jhjlhMhjNubj)}(hK``struct of_endpoint *endpoint`` pointer to the OF endpoint data structure h](j)}(h ``struct of_endpoint *endpoint``h]j)}(hjh]hstruct of_endpoint *endpoint}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h)pointer to the OF endpoint data structureh]h)pointer to the OF endpoint data structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjNubeh}(h]h ]h"]h$]h&]uh1jhj2ubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj2ubjC)}(h/The caller should hold a reference to **node**.h](h&The caller should hold a reference to }(hjhhhNhNubjq)}(h**node**h]hnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $of_graph_get_port_by_id (C function)c.of_graph_get_port_by_idhNtauh1hhhhhhNhNubj)}(hhh](j)}(hQstruct device_node * of_graph_get_port_by_id (struct device_node *parent, u32 id)h]j)}(hOstruct device_node *of_graph_get_port_by_id(struct device_node *parent, u32 id)h](j)}(hj"h]hstruct}(hj"hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj/hMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjAhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj>ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjCmodnameN classnameNjbje)}jh]jk)}j^of_graph_get_port_by_idsbc.of_graph_get_port_by_idasbuh1hhjhhhj/hMubj1)}(h h]h }(hjbhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj/hMubj)}(hjh]h*}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj/hMubj)}(hof_graph_get_port_by_idh]jE)}(hj_h]hof_graph_get_port_by_id}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj}ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj/hMubj)}(h$(struct device_node *parent, u32 id)h](j)}(hstruct device_node *parenth](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j]c.of_graph_get_port_by_idasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hparenth]hparent}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu32 idh](h)}(hhh]jE)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j]c.of_graph_get_port_by_idasbuh1hhjubj1)}(h h]h }(hj-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hidh]hid}(hj;hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj/hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj/hMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj/hMhjhhubj>)}(hhh]jC)}(h get the port matching a given idh]h get the port matching a given id}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjbhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj/hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj}jbj}jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``struct device_node *parent`` pointer to the parent device node ``u32 id`` id of the port **Return** A 'port' node pointer with refcount incremented. The caller has to use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh](j)}(hA``struct device_node *parent`` pointer to the parent device node h](j)}(h``struct device_node *parent``h]j)}(hjh]hstruct device_node *parent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h!pointer to the parent device nodeh]h!pointer to the parent device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h``u32 id`` id of the port h](j)}(h ``u32 id``h]j)}(hjh]hu32 id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(hid of the porth]hid of the port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(heA 'port' node pointer with refcount incremented. The caller has to use of_node_put() on it when done.h]hiA ‘port’ node pointer with refcount incremented. The caller has to use of_node_put() on it when done.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #of_graph_get_next_port (C function)c.of_graph_get_next_porthNtauh1hhhhhhNhNubj)}(hhh](j)}(hhstruct device_node * of_graph_get_next_port (const struct device_node *parent, struct device_node *prev)h]j)}(hfstruct device_node *of_graph_get_next_port(const struct device_node *parent, struct device_node *prev)h](j)}(hj"h]hstruct}(hj_hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj[hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[hhhjlhMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj~hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj{ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^of_graph_get_next_portsbc.of_graph_get_next_portasbuh1hhj[hhhjlhMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[hhhjlhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[hhhjlhMubj)}(hof_graph_get_next_porth]jE)}(hjh]hof_graph_get_next_port}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhj[hhhjlhMubj)}(h<(const struct device_node *parent, struct device_node *prev)h](j)}(h const struct device_node *parenth](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_graph_get_next_portasbuh1hhjubj1)}(h h]h }(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hparenth]hparent}(hjKhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node *prevh](j)}(hj"h]hstruct}(hjdhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj`ubj1)}(h h]h }(hjqhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_graph_get_next_portasbuh1hhj`ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubjE)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj[hhhjlhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjWhhhjlhMubah}(h]jRah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjlhMhjThhubj>)}(hhh]jC)}(hget next port node.h]hget next port node.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjThhhjlhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *parent`` pointer to the parent device node, or parent ports node ``struct device_node *prev`` previous port node, or NULL to get first **Description** Parent device node can be used as **parent** whether device node has ports node or not. It will work same as ports**0** node. **Return** A 'port' node pointer with refcount incremented. Refcount of the passed **prev** node is decremented.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh](j)}(h]``const struct device_node *parent`` pointer to the parent device node, or parent ports node h](j)}(h$``const struct device_node *parent``h]j)}(hj&h]h const struct device_node *parent}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj ubj)}(hhh]jC)}(h7pointer to the parent device node, or parent ports nodeh]h7pointer to the parent device node, or parent ports node}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj;hMhj<ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj;hMhjubj)}(hF``struct device_node *prev`` previous port node, or NULL to get first h](j)}(h``struct device_node *prev``h]j)}(hj_h]hstruct device_node *prev}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjYubj)}(hhh]jC)}(h(previous port node, or NULL to get firsth]h(previous port node, or NULL to get first}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjthMhjuubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjthMhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(h}Parent device node can be used as **parent** whether device node has ports node or not. It will work same as ports**0** node.h](h"Parent device node can be used as }(hjhhhNhNubjq)}(h **parent**h]hparent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubhQ whether device node has ports node or not. It will work same as ports**0** node.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(heA 'port' node pointer with refcount incremented. Refcount of the passed **prev** node is decremented.h](hLA ‘port’ node pointer with refcount incremented. Refcount of the passed }(hjhhhNhNubjq)}(h**prev**h]hprev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh node is decremented.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ,of_graph_get_next_port_endpoint (C function)!c.of_graph_get_next_port_endpointhNtauh1hhhhhhNhNubj)}(hhh](j)}(hostruct device_node * of_graph_get_next_port_endpoint (const struct device_node *port, struct device_node *prev)h]j)}(hmstruct device_node *of_graph_get_next_port_endpoint(const struct device_node *port, struct device_node *prev)h](j)}(hj"h]hstruct}(hj*hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj&hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj&hhhj7hM ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjIhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjFubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjKmodnameN classnameNjbje)}jh]jk)}j^of_graph_get_next_port_endpointsb!c.of_graph_get_next_port_endpointasbuh1hhj&hhhj7hM ubj1)}(h h]h }(hjjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj&hhhj7hM ubj)}(hjh]h*}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&hhhj7hM ubj)}(hof_graph_get_next_port_endpointh]jE)}(hjgh]hof_graph_get_next_port_endpoint}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhj&hhhj7hM ubj)}(h:(const struct device_node *port, struct device_node *prev)h](j)}(hconst struct device_node *porth](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]je!c.of_graph_get_next_port_endpointasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hporth]hport}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node *prevh](j)}(hj"h]hstruct}(hj/hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj+ubj1)}(h h]h }(hj<hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj+ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjMhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjJubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjOmodnameN classnameNjbje)}jh]je!c.of_graph_get_next_port_endpointasbuh1hhj+ubj1)}(h h]h }(hjkhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj+ubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubjE)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj&hhhj7hM ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj"hhhj7hM ubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj7hM hjhhubj>)}(hhh]jC)}(hVget next endpoint node in port. If it reached to end of the port, it will return NULL.h]hVget next endpoint node in port. If it reached to end of the port, it will return NULL.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM hjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj7hM ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *port`` pointer to the target port node ``struct device_node *prev`` previous endpoint node, or NULL to get first **Return** An 'endpoint' node pointer with refcount incremented. Refcount of the passed **prev** node is decremented.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh](j)}(hC``const struct device_node *port`` pointer to the target port node h](j)}(h"``const struct device_node *port``h]j)}(hjh]hconst struct device_node *port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM hjubj)}(hhh]jC)}(hpointer to the target port nodeh]hpointer to the target port node}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(hJ``struct device_node *prev`` previous endpoint node, or NULL to get first h](j)}(h``struct device_node *prev``h]j)}(hj*h]hstruct device_node *prev}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj$ubj)}(hhh]jC)}(h,previous endpoint node, or NULL to get firsth]h,previous endpoint node, or NULL to get first}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj?hMhj@ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jhj?hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjeh]hReturn}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jphjcubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(hjAn 'endpoint' node pointer with refcount incremented. Refcount of the passed **prev** node is decremented.h](hQAn ‘endpoint’ node pointer with refcount incremented. Refcount of the passed }(hj{hhhNhNubjq)}(h**prev**h]hprev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj{ubh node is decremented.}(hj{hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'of_graph_get_next_endpoint (C function)c.of_graph_get_next_endpointhNtauh1hhhhhhNhNubj)}(hhh](j)}(hlstruct device_node * of_graph_get_next_endpoint (const struct device_node *parent, struct device_node *prev)h]j)}(hjstruct device_node *of_graph_get_next_endpoint(const struct device_node *parent, struct device_node *prev)h](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM&ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhM&ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^of_graph_get_next_endpointsbc.of_graph_get_next_endpointasbuh1hhjhhhjhM&ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhM&ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM&ubj)}(hof_graph_get_next_endpointh]jE)}(hjh]hof_graph_get_next_endpoint}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhM&ubj)}(h<(const struct device_node *parent, struct device_node *prev)h](j)}(h const struct device_node *parenth](j)}(hj\h]hconst}(hj6hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj2ubj1)}(h h]h }(hjChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2ubj)}(hj"h]hstruct}(hjQhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj2ubj1)}(h h]h }(hj^hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjohhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjlubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjqmodnameN classnameNjbje)}jh]jc.of_graph_get_next_endpointasbuh1hhj2ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubjE)}(hparenth]hparent}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.ubj)}(hstruct device_node *prevh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_graph_get_next_endpointasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM&ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhM&ubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhM&hjhhubj>)}(hhh]jC)}(hget next endpoint nodeh]hget next endpoint node}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM&hj?hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhM&ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajZjbjZjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *parent`` pointer to the parent device node ``struct device_node *prev`` previous endpoint node, or NULL to get first **Return** An 'endpoint' node pointer with refcount incremented. Refcount of the passed **prev** node is decremented.h](jC)}(h**Parameters**h]jq)}(hjdh]h Parameters}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjbubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM*hj^ubj)}(hhh](j)}(hG``const struct device_node *parent`` pointer to the parent device node h](j)}(h$``const struct device_node *parent``h]j)}(hjh]h const struct device_node *parent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM'hj}ubj)}(hhh]jC)}(h!pointer to the parent device nodeh]h!pointer to the parent device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM'hjubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jhjhM'hjzubj)}(hJ``struct device_node *prev`` previous endpoint node, or NULL to get first h](j)}(h``struct device_node *prev``h]j)}(hjh]hstruct device_node *prev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM(hjubj)}(hhh]jC)}(h,previous endpoint node, or NULL to get firsth]h,previous endpoint node, or NULL to get first}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM(hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM(hjzubeh}(h]h ]h"]h$]h&]uh1jhj^ubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM*hj^ubjC)}(hjAn 'endpoint' node pointer with refcount incremented. Refcount of the passed **prev** node is decremented.h](hQAn ‘endpoint’ node pointer with refcount incremented. Refcount of the passed }(hj hhhNhNubjq)}(h**prev**h]hprev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubh node is decremented.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM*hj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j *of_graph_get_endpoint_by_regs (C function)c.of_graph_get_endpoint_by_regshNtauh1hhhhhhNhNubj)}(hhh](j)}(hlstruct device_node * of_graph_get_endpoint_by_regs (const struct device_node *parent, int port_reg, int reg)h]j)}(hjstruct device_node *of_graph_get_endpoint_by_regs(const struct device_node *parent, int port_reg, int reg)h](j)}(hj"h]hstruct}(hjNhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjJhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM_ubj1)}(h h]h }(hj\hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJhhhj[hM_ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjmhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjomodnameN classnameNjbje)}jh]jk)}j^of_graph_get_endpoint_by_regssbc.of_graph_get_endpoint_by_regsasbuh1hhjJhhhj[hM_ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJhhhj[hM_ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJhhhj[hM_ubj)}(hof_graph_get_endpoint_by_regsh]jE)}(hjh]hof_graph_get_endpoint_by_regs}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjJhhhj[hM_ubj)}(h9(const struct device_node *parent, int port_reg, int reg)h](j)}(h const struct device_node *parenth](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_graph_get_endpoint_by_regsasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hparenth]hparent}(hj:hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int port_regh](j)}(hinth]hint}(hjShhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjOubj1)}(h h]h }(hjahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjOubjE)}(hport_regh]hport_reg}(hjohhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjOubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint regh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hregh]hreg}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjJhhhj[hM_ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjFhhhj[hM_ubah}(h]jAah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj[hM_hjChhubj>)}(hhh]jC)}(h)get endpoint node of specific identifiersh]h)get endpoint node of specific identifiers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM_hjhhubah}(h]h ]h"]h$]h&]uh1j=hjChhhj[hM_ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *parent`` pointer to the parent device node ``int port_reg`` identifier (value of reg property) of the parent port node ``int reg`` identifier (value of reg property) of the endpoint node **Return** An 'endpoint' node pointer which is identified by reg and at the same is the child of a port node identified by port_reg. reg and port_reg are ignored when they are -1. Use of_node_put() on the pointer when done.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMchjubj)}(hhh](j)}(hG``const struct device_node *parent`` pointer to the parent device node h](j)}(h$``const struct device_node *parent``h]j)}(hjh]h const struct device_node *parent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM`hj ubj)}(hhh]jC)}(h!pointer to the parent device nodeh]h!pointer to the parent device node}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj$hM`hj%ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj$hM`hjubj)}(hL``int port_reg`` identifier (value of reg property) of the parent port node h](j)}(h``int port_reg``h]j)}(hjHh]h int port_reg}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMahjBubj)}(hhh]jC)}(h:identifier (value of reg property) of the parent port nodeh]h:identifier (value of reg property) of the parent port node}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj]hMahj^ubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1jhj]hMahjubj)}(hD``int reg`` identifier (value of reg property) of the endpoint node h](j)}(h ``int reg``h]j)}(hjh]hint reg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMbhj{ubj)}(hhh]jC)}(h7identifier (value of reg property) of the endpoint nodeh]h7identifier (value of reg property) of the endpoint node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMbhjubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1jhjhMbhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMdhjubjC)}(hAn 'endpoint' node pointer which is identified by reg and at the same is the child of a port node identified by port_reg. reg and port_reg are ignored when they are -1. Use of_node_put() on the pointer when done.h]hAn ‘endpoint’ node pointer which is identified by reg and at the same is the child of a port node identified by port_reg. reg and port_reg are ignored when they are -1. Use of_node_put() on the pointer when done.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMdhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )of_graph_get_remote_endpoint (C function)c.of_graph_get_remote_endpointhNtauh1hhhhhhNhNubj)}(hhh](j)}(hRstruct device_node * of_graph_get_remote_endpoint (const struct device_node *node)h]j)}(hPstruct device_node *of_graph_get_remote_endpoint(const struct device_node *node)h](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMzubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMzubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj"modnameN classnameNjbje)}jh]jk)}j^of_graph_get_remote_endpointsbc.of_graph_get_remote_endpointasbuh1hhjhhhjhMzubj1)}(h h]h }(hjAhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMzubj)}(hjh]h*}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMzubj)}(hof_graph_get_remote_endpointh]jE)}(hj>h]hof_graph_get_remote_endpoint}(hj`hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj\ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMzubj)}(h (const struct device_node *node)h]j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hj{hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjwubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjwubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjwubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjwubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j<c.of_graph_get_remote_endpointasbuh1hhjwubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjwubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubjE)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjwubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjsubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMzubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMzubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMzhjhhubj>)}(hhh]jC)}(hget remote endpoint nodeh]hget remote endpoint node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMzhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMzubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj/jbj/jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const struct device_node *node`` pointer to a local endpoint device_node **Return** Remote endpoint node associated with remote endpoint node linked to **node**. Use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hj9h]h Parameters}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj7ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM~hj3ubj)}(hhh]j)}(hK``const struct device_node *node`` pointer to a local endpoint device_node h](j)}(h"``const struct device_node *node``h]j)}(hjXh]hconst struct device_node *node}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM{hjRubj)}(hhh]jC)}(h'pointer to a local endpoint device_nodeh]h'pointer to a local endpoint device_node}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjmhM{hjnubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjmhM{hjOubah}(h]h ]h"]h$]h&]uh1jhj3ubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM}hj3ubjC)}(hpRemote endpoint node associated with remote endpoint node linked to **node**. Use of_node_put() on it when done.h](hDRemote endpoint node associated with remote endpoint node linked to }(hjhhhNhNubjq)}(h**node**h]hnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh$. Use of_node_put() on it when done.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM}hj3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j %of_graph_get_port_parent (C function)c.of_graph_get_port_parenthNtauh1hhhhhhNhNubj)}(hhh](j)}(hHstruct device_node * of_graph_get_port_parent (struct device_node *node)h]j)}(hFstruct device_node *of_graph_get_port_parent(struct device_node *node)h](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj modnameN classnameNjbje)}jh]jk)}j^of_graph_get_port_parentsbc.of_graph_get_port_parentasbuh1hhjhhhjhMubj1)}(h h]h }(hj*hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hof_graph_get_port_parenth]jE)}(hj'h]hof_graph_get_port_parent}(hjIhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjEubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h(struct device_node *node)h]j)}(hstruct device_node *nodeh](j)}(hj"h]hstruct}(hjdhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj`ubj1)}(h h]h }(hjqhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j%c.of_graph_get_port_parentasbuh1hhj`ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubjE)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(hget port's parent nodeh]hget port’s parent node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``struct device_node *node`` pointer to a local endpoint device_node **Return** device node associated with endpoint node linked to **node**. Use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j)}(hE``struct device_node *node`` pointer to a local endpoint device_node h](j)}(h``struct device_node *node``h]j)}(hj&h]hstruct device_node *node}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj ubj)}(hhh]jC)}(h'pointer to a local endpoint device_nodeh]h'pointer to a local endpoint device_node}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj;hMhj<ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj;hMhjubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjah]hReturn}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jphj_ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(h`device node associated with endpoint node linked to **node**. Use of_node_put() on it when done.h](h4device node associated with endpoint node linked to }(hjwhhhNhNubjq)}(h**node**h]hnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjwubh$. Use of_node_put() on it when done.}(hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ,of_graph_get_remote_port_parent (C function)!c.of_graph_get_remote_port_parenthNtauh1hhhhhhNhNubj)}(hhh](j)}(hUstruct device_node * of_graph_get_remote_port_parent (const struct device_node *node)h]j)}(hSstruct device_node *of_graph_get_remote_port_parent(const struct device_node *node)h](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^of_graph_get_remote_port_parentsb!c.of_graph_get_remote_port_parentasbuh1hhjhhhjhMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hof_graph_get_remote_port_parenth]jE)}(hjh]hof_graph_get_remote_port_parent}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h (const struct device_node *node)h]j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hj2hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj.ubj1)}(h h]h }(hj?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.ubj)}(hj"h]hstruct}(hjMhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj.ubj1)}(h h]h }(hjZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjkhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjhubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmmodnameN classnameNjbje)}jh]j!c.of_graph_get_remote_port_parentasbuh1hhj.ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubjE)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(hget remote port's parent nodeh]hget remote port’s parent node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const struct device_node *node`` pointer to a local endpoint device_node **Return** Remote device node associated with remote endpoint node linked to **node**. Use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j)}(hK``const struct device_node *node`` pointer to a local endpoint device_node h](j)}(h"``const struct device_node *node``h]j)}(hjh]hconst struct device_node *node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj ubj)}(hhh]jC)}(h'pointer to a local endpoint device_nodeh]h'pointer to a local endpoint device_node}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj$hMhj%ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj$hMhjubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjJh]hReturn}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjHubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(hnRemote device node associated with remote endpoint node linked to **node**. Use of_node_put() on it when done.h](hBRemote device node associated with remote endpoint node linked to }(hj`hhhNhNubjq)}(h**node**h]hnode}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj`ubh$. Use of_node_put() on it when done.}(hj`hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j %of_graph_get_remote_port (C function)c.of_graph_get_remote_porthNtauh1hhhhhhNhNubj)}(hhh](j)}(hNstruct device_node * of_graph_get_remote_port (const struct device_node *node)h]j)}(hLstruct device_node *of_graph_get_remote_port(const struct device_node *node)h](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^of_graph_get_remote_portsbc.of_graph_get_remote_portasbuh1hhjhhhjhMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hof_graph_get_remote_porth]jE)}(hjh]hof_graph_get_remote_port}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h (const struct device_node *node)h]j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj(hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hj6hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjThhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjVmodnameN classnameNjbje)}jh]jc.of_graph_get_remote_portasbuh1hhjubj1)}(h h]h }(hjrhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(hget remote port nodeh]hget remote port node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const struct device_node *node`` pointer to a local endpoint device_node **Return** Remote port node associated with remote endpoint node linked to **node**. Use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j)}(hK``const struct device_node *node`` pointer to a local endpoint device_node h](j)}(h"``const struct device_node *node``h]j)}(hjh]hconst struct device_node *node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h'pointer to a local endpoint device_nodeh]h'pointer to a local endpoint device_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj hMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhjubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hj3h]hReturn}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj1ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(hlRemote port node associated with remote endpoint node linked to **node**. Use of_node_put() on it when done.h](h@Remote port node associated with remote endpoint node linked to }(hjIhhhNhNubjq)}(h**node**h]hnode}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjIubh$. Use of_node_put() on it when done.}(hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j (of_graph_get_endpoint_count (C function)c.of_graph_get_endpoint_counthNtauh1hhhhhhNhNubj)}(hhh](j)}(hGunsigned int of_graph_get_endpoint_count (const struct device_node *np)h]j)}(hFunsigned int of_graph_get_endpoint_count(const struct device_node *np)h](j)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhjhMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hof_graph_get_endpoint_counth]jE)}(hof_graph_get_endpoint_counth]hof_graph_get_endpoint_count}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h(const struct device_node *np)h]j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_graph_get_endpoint_countasbuh1hhjubj1)}(h h]h }(hj<hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]j}ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h,get the number of endpoints in a device nodeh]h,get the number of endpoints in a device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj~hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``const struct device_node *np`` parent device node containing ports and endpoints **Return** count of endpoint of this device nodeh](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j)}(hS``const struct device_node *np`` parent device node containing ports and endpoints h](j)}(h ``const struct device_node *np``h]j)}(hjh]hconst struct device_node *np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h1parent device node containing ports and endpointsh]h1parent device node containing ports and endpoints}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjC)}(h%count of endpoint of this device nodeh]h%count of endpoint of this device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $of_graph_get_port_count (C function)c.of_graph_get_port_counthNtauh1hhhhhhNhNubj)}(hhh](j)}(h=unsigned int of_graph_get_port_count (struct device_node *np)h]j)}(hhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>hhhjPhMubj)}(hinth]hint}(hj_hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj>hhhjPhMubj1)}(h h]h }(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>hhhjPhMubj)}(hof_graph_get_port_counth]jE)}(hof_graph_get_port_counth]hof_graph_get_port_count}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj{ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj>hhhjPhMubj)}(h(struct device_node *np)h]j)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_graph_get_port_countasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj>hhhjPhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj:hhhjPhMubah}(h]j5ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjPhMhj7hhubj>)}(hhh]jC)}(h0get the number of port in a device or ports nodeh]h0get the number of port in a device or ports node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hj7hhhjPhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj6jbj6jcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``struct device_node *np`` pointer to the device or ports node **Return** count of port of this device or ports nodeh](jC)}(h**Parameters**h]jq)}(hj@h]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj>ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj:ubj)}(hhh]j)}(h?``struct device_node *np`` pointer to the device or ports node h](j)}(h``struct device_node *np``h]j)}(hj_h]hstruct device_node *np}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjYubj)}(hhh]jC)}(h#pointer to the device or ports nodeh]h#pointer to the device or ports node}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjthMhjuubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjthMhjVubah}(h]h ]h"]h$]h&]uh1jhj:ubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj:ubjC)}(h*count of port of this device or ports nodeh]h*count of port of this device or ports node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j %of_graph_get_remote_node (C function)c.of_graph_get_remote_nodehNtauh1hhhhhhNhNubj)}(hhh](j)}(hfstruct device_node * of_graph_get_remote_node (const struct device_node *node, u32 port, u32 endpoint)h]j)}(hdstruct device_node *of_graph_get_remote_node(const struct device_node *node, u32 port, u32 endpoint)h](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^of_graph_get_remote_nodesbc.of_graph_get_remote_nodeasbuh1hhjhhhjhMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hof_graph_get_remote_nodeh]jE)}(hjh]hof_graph_get_remote_node}(hj>hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj:ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h8(const struct device_node *node, u32 port, u32 endpoint)h](j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hjYhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjUubj1)}(h h]h }(hjfhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubj)}(hj"h]hstruct}(hjthhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjUubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_graph_get_remote_nodeasbuh1hhjUubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubjE)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubj)}(hu32 porth](h)}(hhh]jE)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_graph_get_remote_nodeasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hporth]hport}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubj)}(h u32 endpointh](h)}(hhh]jE)}(hu32h]hu32}(hj/hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj,ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj1modnameN classnameNjbje)}jh]jc.of_graph_get_remote_nodeasbuh1hhj(ubj1)}(h h]h }(hjMhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj(ubjE)}(hendpointh]hendpoint}(hj[hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h5get remote parent device_node for given port/endpointh]h5get remote parent device_node for given port/endpoint}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const struct device_node *node`` pointer to parent device_node containing graph port/endpoint ``u32 port`` identifier (value of reg property) of the parent port node ``u32 endpoint`` identifier (value of reg property) of the endpoint node **Return** Remote device node associated with remote endpoint node linked to **node**. Use of_node_put() on it when done.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh](j)}(h```const struct device_node *node`` pointer to parent device_node containing graph port/endpoint h](j)}(h"``const struct device_node *node``h]j)}(hjh]hconst struct device_node *node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]jC)}(h)}(hhh]jC)}(h$the OF graph endpoint data structureh]h$the OF graph endpoint data structure}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhj hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhKubeh}(h]h ](j\structeh"]h$]h&]j`j\jaj$jbj$jcjdjeuh1j hhhhhNhNubjg)}(hX`**Definition**:: struct of_endpoint { unsigned int port; unsigned int id; const struct device_node *local_node; }; **Members** ``port`` identifier (value of reg property) of a port this endpoint belongs to ``id`` identifier (value of reg property) of this endpoint ``local_node`` pointer to device_node of this endpointh](jC)}(h**Definition**::h](jq)}(h**Definition**h]h Definition}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj,ubh:}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhj(ubjB)}(hmstruct of_endpoint { unsigned int port; unsigned int id; const struct device_node *local_node; };h]hmstruct of_endpoint { unsigned int port; unsigned int id; const struct device_node *local_node; };}hjIsbah}(h]h ]h"]h$]h&]hhuh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhj(ubjC)}(h **Members**h]jq)}(hjZh]hMembers}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjXubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhj(ubj)}(hhh](j)}(hO``port`` identifier (value of reg property) of a port this endpoint belongs to h](j)}(h``port``h]j)}(hjyh]hport}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjsubj)}(hhh]jC)}(hEidentifier (value of reg property) of a port this endpoint belongs toh]hEidentifier (value of reg property) of a port this endpoint belongs to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1jhjhKhjpubj)}(h;``id`` identifier (value of reg property) of this endpoint h](j)}(h``id``h]j)}(hjh]hid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjubj)}(hhh]jC)}(h3identifier (value of reg property) of this endpointh]h3identifier (value of reg property) of this endpoint}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjpubj)}(h6``local_node`` pointer to device_node of this endpointh](j)}(h``local_node``h]j)}(hjh]h local_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjubj)}(hhh]jC)}(h'pointer to device_node of this endpointh]h'pointer to device_node of this endpoint}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjpubeh}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #for_each_endpoint_of_node (C macro)c.for_each_endpoint_of_nodehNtauh1hhhhhhNhNubj)}(hhh](j)}(hfor_each_endpoint_of_nodeh]j)}(hfor_each_endpoint_of_nodeh]j)}(hfor_each_endpoint_of_nodeh]jE)}(hj?h]hfor_each_endpoint_of_node}(hjIhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjEubah}(h]h ](jjeh"]h$]h&]hhuh1jhjAhhh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKubah}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj=hhhj\hKubah}(h]j8ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj\hKhj:hhubj>)}(hhh]h}(h]h ]h"]h$]h&]uh1j=hj:hhhj\hKubeh}(h]h ](j\macroeh"]h$]h&]j`j\jajujbjujcjdjeuh1j hhhhhNhNubjC)}(h-``for_each_endpoint_of_node (parent, child)``h]j)}(hj{h]h)for_each_endpoint_of_node (parent, child)}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK!hhhhubj()}(h-iterate over every endpoint in a device node h]jC)}(h,iterate over every endpoint in a device nodeh]h,iterate over every endpoint in a device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjubah}(h]h ]h"]h$]h&]uh1j'hjhKhhhhubjg)}(h**Parameters** ``parent`` parent device node containing ports and endpoints ``child`` loop variable pointing to the current endpoint node **Description** When breaking out of the loop, of_node_put(child) has to be called manually.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK#hjubj)}(hhh](j)}(h=``parent`` parent device node containing ports and endpoints h](j)}(h ``parent``h]j)}(hjh]hparent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK hjubj)}(hhh]jC)}(h1parent device node containing ports and endpointsh]h1parent device node containing ports and endpoints}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK hjubj)}(h>``child`` loop variable pointing to the current endpoint node h](j)}(h ``child``h]j)}(hjh]hchild}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK!hjubj)}(hhh]jC)}(h3loop variable pointing to the current endpoint nodeh]h3loop variable pointing to the current endpoint node}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK!hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK!hjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjCh]h Description}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK#hjubjC)}(hLWhen breaking out of the loop, of_node_put(child) has to be called manually.h]hLWhen breaking out of the loop, of_node_put(child) has to be called manually.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK"hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j  for_each_of_graph_port (C macro)c.for_each_of_graph_porthNtauh1hhhhhhNhNubj)}(hhh](j)}(hfor_each_of_graph_porth]j)}(hfor_each_of_graph_porth]j)}(hfor_each_of_graph_porth]jE)}(hjh]hfor_each_of_graph_port}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK*ubah}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhK*ubah}(h]j{ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhK*hj}hhubj>)}(hhh]h}(h]h ]h"]h$]h&]uh1j=hj}hhhjhK*ubeh}(h]h ](j\macroeh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjC)}(h*``for_each_of_graph_port (parent, child)``h]j)}(hjh]h&for_each_of_graph_port (parent, child)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK,hhhhubj()}(h2iterate over every port in a device or ports node h]jC)}(h1iterate over every port in a device or ports nodeh]h1iterate over every port in a device or ports node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK*hjubah}(h]h ]h"]h$]h&]uh1j'hjhK*hhhhubjg)}(hX6**Parameters** ``parent`` parent device or ports node containing port ``child`` loop variable pointing to the current port node **Description** When breaking out of the loop, and continue to use the **child**, you need to use return_ptr(**child**) or no_free_ptr(**child**) not to call __free() for it.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK.hjubj)}(hhh](j)}(h7``parent`` parent device or ports node containing port h](j)}(h ``parent``h]j)}(hjh]hparent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK+hj ubj)}(hhh]jC)}(h+parent device or ports node containing porth]h+parent device or ports node containing port}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj'hK+hj(ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj'hK+hj ubj)}(h:``child`` loop variable pointing to the current port node h](j)}(h ``child``h]j)}(hjKh]hchild}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK,hjEubj)}(hhh]jC)}(h/loop variable pointing to the current port nodeh]h/loop variable pointing to the current port node}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj`hK,hjaubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhj`hK,hj ubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK.hjubjC)}(hWhen breaking out of the loop, and continue to use the **child**, you need to use return_ptr(**child**) or no_free_ptr(**child**) not to call __free() for it.h](h7When breaking out of the loop, and continue to use the }(hjhhhNhNubjq)}(h **child**h]hchild}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh, you need to use return_ptr(}(hjhhhNhNubjq)}(h **child**h]hchild}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh) or no_free_ptr(}(hjhhhNhNubjq)}(h **child**h]hchild}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh) not to call __free() for it.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK-hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )for_each_of_graph_port_endpoint (C macro)!c.for_each_of_graph_port_endpointhNtauh1hhhhhhNhNubj)}(hhh](j)}(hfor_each_of_graph_port_endpointh]j)}(hfor_each_of_graph_port_endpointh]j)}(hfor_each_of_graph_port_endpointh]jE)}(hjh]hfor_each_of_graph_port_endpoint}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK6ubah}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhK6ubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhK6hjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]uh1j=hjhhhjhK6ubeh}(h]h ](j\macroeh"]h$]h&]j`j\jaj1jbj1jcjdjeuh1j hhhhhNhNubjC)}(h3``for_each_of_graph_port_endpoint (parent, child)``h]j)}(hj7h]h/for_each_of_graph_port_endpoint (parent, child)}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK8hhhhubj()}(h+iterate over every endpoint in a port node h]jC)}(h*iterate over every endpoint in a port nodeh]h*iterate over every endpoint in a port node}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK6hjMubah}(h]h ]h"]h$]h&]uh1j'hj_hK6hhhhubjg)}(hX**Parameters** ``parent`` parent port node ``child`` loop variable pointing to the current endpoint node **Description** When breaking out of the loop, and continue to use the **child**, you need to use return_ptr(**child**) or no_free_ptr(**child**) not to call __free() for it.h](jC)}(h**Parameters**h]jq)}(hjlh]h Parameters}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjjubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK:hjfubj)}(hhh](j)}(h``parent`` parent port node h](j)}(h ``parent``h]j)}(hjh]hparent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK7hjubj)}(hhh]jC)}(hparent port nodeh]hparent port node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK7hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK7hjubj)}(h>``child`` loop variable pointing to the current endpoint node h](j)}(h ``child``h]j)}(hjh]hchild}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK8hjubj)}(hhh]jC)}(h3loop variable pointing to the current endpoint nodeh]h3loop variable pointing to the current endpoint node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK8hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK8hjubeh}(h]h ]h"]h$]h&]uh1jhjfubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK:hjfubjC)}(hWhen breaking out of the loop, and continue to use the **child**, you need to use return_ptr(**child**) or no_free_ptr(**child**) not to call __free() for it.h](h7When breaking out of the loop, and continue to use the }(hjhhhNhNubjq)}(h **child**h]hchild}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh, you need to use return_ptr(}(hjhhhNhNubjq)}(h **child**h]hchild}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh) or no_free_ptr(}(hjhhhNhNubjq)}(h **child**h]hchild}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh) not to call __free() for it.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK9hjfubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j $of_translate_dma_region (C function)c.of_translate_dma_regionhNtauh1hhhhhhNhNubj)}(hhh](j)}(hxconst __be32 * of_translate_dma_region (struct device_node *dev, const __be32 *prop, phys_addr_t *start, size_t *length)h]j)}(hvconst __be32 *of_translate_dma_region(struct device_node *dev, const __be32 *prop, phys_addr_t *start, size_t *length)h](j)}(hj\h]hconst}(hjzhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjvhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjvhhhjhMubh)}(hhh]jE)}(h__be32h]h__be32}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^of_translate_dma_regionsbc.of_translate_dma_regionasbuh1hhjvhhhjhMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjvhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvhhhjhMubj)}(hof_translate_dma_regionh]jE)}(hjh]hof_translate_dma_region}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjvhhhjhMubj)}(hQ(struct device_node *dev, const __be32 *prop, phys_addr_t *start, size_t *length)h](j)}(hstruct device_node *devh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_translate_dma_regionasbuh1hhjubj1)}(h h]h }(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hdevh]hdev}(hjKhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst __be32 *proph](j)}(hj\h]hconst}(hjdhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj`ubj1)}(h h]h }(hjqhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`ubh)}(hhh]jE)}(h__be32h]h__be32}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_translate_dma_regionasbuh1hhj`ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubjE)}(hproph]hprop}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hphys_addr_t *starth](h)}(hhh]jE)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_translate_dma_regionasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hstarth]hstart}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hsize_t *lengthh](h)}(hhh]jE)}(hsize_th]hsize_t}(hj,hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj)ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj.modnameN classnameNjbje)}jh]jc.of_translate_dma_regionasbuh1hhj%ubj1)}(h h]h }(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj%ubj)}(hjh]h*}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubjE)}(hlengthh]hlength}(hjehhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjvhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjrhhhjhMubah}(h]jmah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjohhubj>)}(hhh]jC)}(h,Translate device tree address and size tupleh]h,Translate device tree address and size tuple}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjohhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hXu**Parameters** ``struct device_node *dev`` device tree node for which to translate ``const __be32 *prop`` pointer into array of cells ``phys_addr_t *start`` return value for the start of the DMA range ``size_t *length`` return value for the length of the DMA range **Description** Returns a pointer to the cell immediately following the translated DMA region.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubj)}(hhh](j)}(hD``struct device_node *dev`` device tree node for which to translate h](j)}(h``struct device_node *dev``h]j)}(hjh]hstruct device_node *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubj)}(hhh]jC)}(h'device tree node for which to translateh]h'device tree node for which to translate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h3``const __be32 *prop`` pointer into array of cells h](j)}(h``const __be32 *prop``h]j)}(hj h]hconst __be32 *prop}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubj)}(hhh]jC)}(hpointer into array of cellsh]hpointer into array of cells}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hC``phys_addr_t *start`` return value for the start of the DMA range h](j)}(h``phys_addr_t *start``h]j)}(hjBh]hphys_addr_t *start}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhj<ubj)}(hhh]jC)}(h+return value for the start of the DMA rangeh]h+return value for the start of the DMA range}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjWhMhjXubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhjWhMhjubj)}(h@``size_t *length`` return value for the length of the DMA range h](j)}(h``size_t *length``h]j)}(hj{h]hsize_t *length}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjuubj)}(hhh]jC)}(h,return value for the length of the DMA rangeh]h,return value for the length of the DMA range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubjC)}(hNReturns a pointer to the cell immediately following the translated DMA region.h]hNReturns a pointer to the cell immediately following the translated DMA region.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !of_property_read_reg (C function)c.of_property_read_reghNtauh1hhhhhhNhNubj)}(hhh](j)}(hPint of_property_read_reg (struct device_node *np, int idx, u64 *addr, u64 *size)h]j)}(hOint of_property_read_reg(struct device_node *np, int idx, u64 *addr, u64 *size)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj hMubj)}(hof_property_read_regh]jE)}(hof_property_read_regh]hof_property_read_reg}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj hMubj)}(h7(struct device_node *np, int idx, u64 *addr, u64 *size)h](j)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hj8hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj4ubj1)}(h h]h }(hjEhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjVhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjSubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjXmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_property_read_regasbuh1hhj4ubj1)}(h h]h }(hjvhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(hint idxh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hidxh]hidx}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(h u64 *addrh](h)}(hhh]jE)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jrc.of_property_read_regasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(haddrh]haddr}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(h u64 *sizeh](h)}(hhh]jE)}(hu64h]hu64}(hj7hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj9modnameN classnameNjbje)}jh]jrc.of_property_read_regasbuh1hhj0ubj1)}(h h]h }(hjUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0ubj)}(hjh]h*}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubjE)}(hsizeh]hsize}(hjphhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj hMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj hMhjhhubj>)}(hhh]jC)}(hubj1)}(h h]h }(hjOhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj`hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj]ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjbmodnameN classnameNjbje)}jh]jk)}j^j(sbc.of_dma_is_coherentasbuh1hhj>ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj:ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(hCheck if device is coherenth]hCheck if device is coherent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``struct device_node *np`` device node **Description** It returns true if "dma-coherent" property was found for this device in the DT, or if DMA is coherent by default for OF devices on the current platform and no "dma-noncoherent" property was found for this device.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubj)}(hhh]j)}(h'``struct device_node *np`` device node h](j)}(h``struct device_node *np``h]j)}(hjh]hstruct device_node *np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubj)}(hhh]jC)}(h device nodeh]h device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjAh]h Description}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jphj?ubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubjC)}(hIt returns true if "dma-coherent" property was found for this device in the DT, or if DMA is coherent by default for OF devices on the current platform and no "dma-noncoherent" property was found for this device.h]hIt returns true if “dma-coherent” property was found for this device in the DT, or if DMA is coherent by default for OF devices on the current platform and no “dma-noncoherent” property was found for this device.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #of_address_to_resource (C function)c.of_address_to_resourcehNtauh1hhhhhhNhNubj)}(hhh](j)}(hSint of_address_to_resource (struct device_node *dev, int index, struct resource *r)h]j)}(hRint of_address_to_resource(struct device_node *dev, int index, struct resource *r)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM7ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhM7ubj)}(hof_address_to_resourceh]jE)}(hof_address_to_resourceh]hof_address_to_resource}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhM7ubj)}(h8(struct device_node *dev, int index, struct resource *r)h](j)}(hstruct device_node *devh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_address_to_resourceasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int indexh](j)}(hinth]hint}(hj5hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj1ubj1)}(h h]h }(hjChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1ubjE)}(hindexh]hindex}(hjQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct resource *rh](j)}(hj"h]hstruct}(hjjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjfubj1)}(h h]h }(hjwhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfubh)}(hhh]jE)}(hresourceh]hresource}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_address_to_resourceasbuh1hhjfubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubjE)}(hrh]hr}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjfubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM7ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj~hhhjhM7ubah}(h]jyah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhM7hj{hhubj>)}(hhh]jC)}(h4Translate device tree address and return as resourceh]h4Translate device tree address and return as resource}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM7hjhhubah}(h]h ]h"]h$]h&]uh1j=hj{hhhjhM7ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``struct device_node *dev`` Caller's Device Node ``int index`` Index into the array ``struct resource *r`` Pointer to resource array **Description** Returns -EINVAL if the range cannot be converted to resource. Note that if your address is a PIO address, the conversion will fail if the physical address can't be internally converted to an IO token with pci_address_to_pio(), that is because it's either called too early or it can't be matched to any host bridge IO spaceh](jC)}(h**Parameters**h]jq)}(hj h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM;hjubj)}(hhh](j)}(h1``struct device_node *dev`` Caller's Device Node h](j)}(h``struct device_node *dev``h]j)}(hj,h]hstruct device_node *dev}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM8hj&ubj)}(hhh]jC)}(hCaller's Device Nodeh]hCaller’s Device Node}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjAhM8hjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhM8hj#ubj)}(h#``int index`` Index into the array h](j)}(h ``int index``h]j)}(hjeh]h int index}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM9hj_ubj)}(hhh]jC)}(hIndex into the arrayh]hIndex into the array}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjzhM9hj{ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1jhjzhM9hj#ubj)}(h1``struct resource *r`` Pointer to resource array h](j)}(h``struct resource *r``h]j)}(hjh]hstruct resource *r}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM:hjubj)}(hhh]jC)}(hPointer to resource arrayh]hPointer to resource array}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM:hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM:hj#ubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM<hjubjC)}(h=Returns -EINVAL if the range cannot be converted to resource.h]h=Returns -EINVAL if the range cannot be converted to resource.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM;hjubjC)}(hXNote that if your address is a PIO address, the conversion will fail if the physical address can't be internally converted to an IO token with pci_address_to_pio(), that is because it's either called too early or it can't be matched to any host bridge IO spaceh]hX Note that if your address is a PIO address, the conversion will fail if the physical address can’t be internally converted to an IO token with pci_address_to_pio(), that is because it’s either called too early or it can’t be matched to any host bridge IO space}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM=hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_iomap (C function) c.of_iomaphNtauh1hhhhhhNhNubj)}(hhh](j)}(h;void __iomem * of_iomap (struct device_node *np, int index)h]j)}(h9void __iomem *of_iomap(struct device_node *np, int index)h](j)}(hvoidh]hvoid}(hj-hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj)hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMVubj1)}(h h]h }(hj<hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj)hhhj;hMVubh__iomem}(hj)hhhNhNubj1)}(h h]h }(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj)hhhj;hMVubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)hhhj;hMVubj)}(hof_iomaph]jE)}(hof_iomaph]hof_iomap}(hjmhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubah}(h]h ](jjeh"]h$]h&]hhuh1jhj)hhhj;hMVubj)}(h#(struct device_node *np, int index)h](j)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^josb c.of_iomapasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int indexh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj)hhhj;hMVubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj%hhhj;hMVubah}(h]j ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj;hMVhj"hhubj>)}(hhh]jC)}(h1Maps the memory mapped IO for a given device_nodeh]h1Maps the memory mapped IO for a given device_node}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMVhj>hhubah}(h]h ]h"]h$]h&]uh1j=hj"hhhj;hMVubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajYjbjYjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``struct device_node *np`` the device whose io range will be mapped ``int index`` index of the io range **Description** Returns a pointer to the mapped memoryh](jC)}(h**Parameters**h]jq)}(hjch]h Parameters}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jphjaubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMZhj]ubj)}(hhh](j)}(hD``struct device_node *np`` the device whose io range will be mapped h](j)}(h``struct device_node *np``h]j)}(hjh]hstruct device_node *np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMWhj|ubj)}(hhh]jC)}(h(the device whose io range will be mappedh]h(the device whose io range will be mapped}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMWhjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhjhMWhjyubj)}(h$``int index`` index of the io range h](j)}(h ``int index``h]j)}(hjh]h int index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMXhjubj)}(hhh]jC)}(hindex of the io rangeh]hindex of the io range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMXhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMXhjyubeh}(h]h ]h"]h$]h&]uh1jhj]ubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMZhj]ubjC)}(h&Returns a pointer to the mapped memoryh]h&Returns a pointer to the mapped memory}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMYhj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !irq_of_parse_and_map (C function)c.irq_of_parse_and_maphNtauh1hhhhhhNhNubj)}(hhh](j)}(hFunsigned int irq_of_parse_and_map (struct device_node *dev, int index)h]j)}(hEunsigned int irq_of_parse_and_map(struct device_node *dev, int index)h](j)}(hunsignedh]hunsigned}(hj;hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj7hhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK ubj1)}(h h]h }(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7hhhjIhK ubj)}(hinth]hint}(hjXhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj7hhhjIhK ubj1)}(h h]h }(hjfhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7hhhjIhK ubj)}(hirq_of_parse_and_maph]jE)}(hirq_of_parse_and_maph]hirq_of_parse_and_map}(hjxhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjtubah}(h]h ](jjeh"]h$]h&]hhuh1jhj7hhhjIhK ubj)}(h$(struct device_node *dev, int index)h](j)}(hstruct device_node *devh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jzsbc.irq_of_parse_and_mapasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int indexh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hindexh]hindex}(hj"hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj7hhhjIhK ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj3hhhjIhK ubah}(h]j.ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjIhK hj0hhubj>)}(hhh]jC)}(h0Parse and map an interrupt into linux virq spaceh]h0Parse and map an interrupt into linux virq space}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK hjIhhubah}(h]h ]h"]h$]h&]uh1j=hj0hhhjIhK ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajdjbjdjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``struct device_node *dev`` Device node of the device whose interrupt is to be mapped ``int index`` Index of the interrupt to map **Description** This function is a wrapper that chains of_irq_parse_one() and irq_create_of_mapping() to make things easier to callersh](jC)}(h**Parameters**h]jq)}(hjnh]h Parameters}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jphjlubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK$hjhubj)}(hhh](j)}(hV``struct device_node *dev`` Device node of the device whose interrupt is to be mapped h](j)}(h``struct device_node *dev``h]j)}(hjh]hstruct device_node *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK!hjubj)}(hhh]jC)}(h9Device node of the device whose interrupt is to be mappedh]h9Device node of the device whose interrupt is to be mapped}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK!hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK!hjubj)}(h,``int index`` Index of the interrupt to map h](j)}(h ``int index``h]j)}(hjh]h int index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK"hjubj)}(hhh]jC)}(hIndex of the interrupt to maph]hIndex of the interrupt to map}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK"hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK"hjubeh}(h]h ]h"]h$]h&]uh1jhjhubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK$hjhubjC)}(hvThis function is a wrapper that chains of_irq_parse_one() and irq_create_of_mapping() to make things easier to callersh]hvThis function is a wrapper that chains of_irq_parse_one() and irq_create_of_mapping() to make things easier to callers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK#hjhubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_irq_find_parent (C function)c.of_irq_find_parenthNtauh1hhhhhhNhNubj)}(hhh](j)}(hCstruct device_node * of_irq_find_parent (struct device_node *child)h]j)}(hAstruct device_node *of_irq_find_parent(struct device_node *child)h](j)}(hj"h]hstruct}(hjFhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjBhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK7ubj1)}(h h]h }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBhhhjShK7ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjehhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjbubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjgmodnameN classnameNjbje)}jh]jk)}j^of_irq_find_parentsbc.of_irq_find_parentasbuh1hhjBhhhjShK7ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBhhhjShK7ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBhhhjShK7ubj)}(hof_irq_find_parenth]jE)}(hjh]hof_irq_find_parent}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjBhhhjShK7ubj)}(h(struct device_node *child)h]j)}(hstruct device_node *childh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_irq_find_parentasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hchildh]hchild}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjBhhhjShK7ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj>hhhjShK7ubah}(h]j9ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjShK7hj;hhubj>)}(hhh]jC)}(h3Given a device node, find its interrupt parent nodeh]h3Given a device node, find its interrupt parent node}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK7hj>hhubah}(h]h ]h"]h$]h&]uh1j=hj;hhhjShK7ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajYjbjYjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``struct device_node *child`` pointer to device node **Return** A pointer to the interrupt parent node with refcount increased or NULL if the interrupt parent could not be determined.h](jC)}(h**Parameters**h]jq)}(hjch]h Parameters}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jphjaubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK;hj]ubj)}(hhh]j)}(h5``struct device_node *child`` pointer to device node h](j)}(h``struct device_node *child``h]j)}(hjh]hstruct device_node *child}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK8hj|ubj)}(hhh]jC)}(hpointer to device nodeh]hpointer to device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK8hjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhjhK8hjyubah}(h]h ]h"]h$]h&]uh1jhj]ubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK:hj]ubjC)}(hwA pointer to the interrupt parent node with refcount increased or NULL if the interrupt parent could not be determined.h]hwA pointer to the interrupt parent node with refcount increased or NULL if the interrupt parent could not be determined.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK:hj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_irq_parse_raw (C function)c.of_irq_parse_rawhNtauh1hhhhhhNhNubj)}(hhh](j)}(hJint of_irq_parse_raw (const __be32 *addr, struct of_phandle_args *out_irq)h]j)}(hIint of_irq_parse_raw(const __be32 *addr, struct of_phandle_args *out_irq)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhKubj)}(hof_irq_parse_rawh]jE)}(hof_irq_parse_rawh]hof_irq_parse_raw}(hj#hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h5(const __be32 *addr, struct of_phandle_args *out_irq)h](j)}(hconst __be32 *addrh](j)}(hj\h]hconst}(hj?hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj;ubj1)}(h h]h }(hjLhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;ubh)}(hhh]jE)}(h__be32h]h__be32}(hj]hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj_modnameN classnameNjbje)}jh]jk)}j^j%sbc.of_irq_parse_rawasbuh1hhj;ubj1)}(h h]h }(hj}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubjE)}(haddrh]haddr}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubj)}(hstruct of_phandle_args *out_irqh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jyc.of_irq_parse_rawasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hout_irqh]hout_irq}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhKubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhKhjhhubj>)}(hhh]jC)}(h Low level interrupt tree parsingh]h Low level interrupt tree parsing}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhj/hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajJjbjJjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const __be32 *addr`` address specifier (start of "reg" property of the device) in be32 format ``struct of_phandle_args *out_irq`` structure of_phandle_args updated by this function **Description** This function is a low-level interrupt tree walking function. It can be used to do a partial walk with synthesized reg and interrupts properties, for example when resolving PCI interrupts when no device node exist for the parent. It takes an interrupt specifier structure as input, walks the tree looking for any interrupt-map properties, translates the specifier for each map, and then returns the translated map. **Return** 0 on success and a negative number on error **Note** refcount of node **out_irq->np** is increased by 1 on success.h](jC)}(h**Parameters**h]jq)}(hjTh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjRubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjNubj)}(hhh](j)}(h```const __be32 *addr`` address specifier (start of "reg" property of the device) in be32 format h](j)}(h``const __be32 *addr``h]j)}(hjsh]hconst __be32 *addr}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjmubj)}(hhh]jC)}(hHaddress specifier (start of "reg" property of the device) in be32 formath]hLaddress specifier (start of “reg” property of the device) in be32 format}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjhKhjjubj)}(hW``struct of_phandle_args *out_irq`` structure of_phandle_args updated by this function h](j)}(h#``struct of_phandle_args *out_irq``h]j)}(hjh]hstruct of_phandle_args *out_irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjubj)}(hhh]jC)}(h2structure of_phandle_args updated by this functionh]h2structure of_phandle_args updated by this function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjjubeh}(h]h ]h"]h$]h&]uh1jhjNubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjNubjC)}(hXThis function is a low-level interrupt tree walking function. It can be used to do a partial walk with synthesized reg and interrupts properties, for example when resolving PCI interrupts when no device node exist for the parent. It takes an interrupt specifier structure as input, walks the tree looking for any interrupt-map properties, translates the specifier for each map, and then returns the translated map.h]hXThis function is a low-level interrupt tree walking function. It can be used to do a partial walk with synthesized reg and interrupts properties, for example when resolving PCI interrupts when no device node exist for the parent. It takes an interrupt specifier structure as input, walks the tree looking for any interrupt-map properties, translates the specifier for each map, and then returns the translated map.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjNubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjNubjC)}(h+0 on success and a negative number on errorh]h+0 on success and a negative number on error}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjNubjC)}(h**Note**h]jq)}(hj5h]hNote}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj3ubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjNubjC)}(h>refcount of node **out_irq->np** is increased by 1 on success.h](hrefcount of node }(hjKhhhNhNubjq)}(h**out_irq->np**h]h out_irq->np}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jphjKubh is increased by 1 on success.}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjNubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_irq_parse_one (C function)c.of_irq_parse_onehNtauh1hhhhhhNhNubj)}(hhh](j)}(h]int of_irq_parse_one (struct device_node *device, int index, struct of_phandle_args *out_irq)h]j)}(h\int of_irq_parse_one(struct device_node *device, int index, struct of_phandle_args *out_irq)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hof_irq_parse_oneh]jE)}(hof_irq_parse_oneh]hof_irq_parse_one}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(hH(struct device_node *device, int index, struct of_phandle_args *out_irq)h](j)}(hstruct device_node *deviceh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_irq_parse_oneasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hdeviceh]hdevice}(hj"hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int indexh](j)}(hinth]hint}(hj;hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj7ubj1)}(h h]h }(hjIhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubjE)}(hindexh]hindex}(hjWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct of_phandle_args *out_irqh](j)}(hj"h]hstruct}(hjphhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjlubj1)}(h h]h }(hj}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_irq_parse_oneasbuh1hhjlubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubjE)}(hout_irqh]hout_irq}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h!Resolve an interrupt for a deviceh]h!Resolve an interrupt for a device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj jbj jcjdjeuh1j hhhhhNhNubjg)}(hX%**Parameters** ``struct device_node *device`` the device whose interrupt is to be resolved ``int index`` index of the interrupt to resolve ``struct of_phandle_args *out_irq`` structure of_phandle_args filled by this function **Description** This function resolves an interrupt for a node by walking the interrupt tree, finding which interrupt controller node it is attached to, and returning the interrupt specifier that can be used to retrieve a Linux IRQ number. **Note** refcount of node **out_irq->np** is increased by 1 on success.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj ubj)}(hhh](j)}(hL``struct device_node *device`` the device whose interrupt is to be resolved h](j)}(h``struct device_node *device``h]j)}(hj2h]hstruct device_node *device}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj,ubj)}(hhh]jC)}(h,the device whose interrupt is to be resolvedh]h,the device whose interrupt is to be resolved}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjGhMhjHubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhjGhMhj)ubj)}(h0``int index`` index of the interrupt to resolve h](j)}(h ``int index``h]j)}(hjkh]h int index}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjeubj)}(hhh]jC)}(h!index of the interrupt to resolveh]h!index of the interrupt to resolve}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1jhjhMhj)ubj)}(hV``struct of_phandle_args *out_irq`` structure of_phandle_args filled by this function h](j)}(h#``struct of_phandle_args *out_irq``h]j)}(hjh]hstruct of_phandle_args *out_irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]jC)}(h1structure of_phandle_args filled by this functionh]h1structure of_phandle_args filled by this function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj)ubeh}(h]h ]h"]h$]h&]uh1jhj ubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj ubjC)}(hThis function resolves an interrupt for a node by walking the interrupt tree, finding which interrupt controller node it is attached to, and returning the interrupt specifier that can be used to retrieve a Linux IRQ number.h]hThis function resolves an interrupt for a node by walking the interrupt tree, finding which interrupt controller node it is attached to, and returning the interrupt specifier that can be used to retrieve a Linux IRQ number.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj ubjC)}(h**Note**h]jq)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj ubjC)}(h>refcount of node **out_irq->np** is increased by 1 on success.h](hrefcount of node }(hjhhhNhNubjq)}(h**out_irq->np**h]h out_irq->np}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh is increased by 1 on success.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_irq_to_resource (C function)c.of_irq_to_resourcehNtauh1hhhhhhNhNubj)}(hhh](j)}(hOint of_irq_to_resource (struct device_node *dev, int index, struct resource *r)h]j)}(hNint of_irq_to_resource(struct device_node *dev, int index, struct resource *r)h](j)}(hinth]hint}(hj]hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjYhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj1)}(h h]h }(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjYhhhjkhMubj)}(hof_irq_to_resourceh]jE)}(hof_irq_to_resourceh]hof_irq_to_resource}(hj~hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjzubah}(h]h ](jjeh"]h$]h&]hhuh1jhjYhhhjkhMubj)}(h8(struct device_node *dev, int index, struct resource *r)h](j)}(hstruct device_node *devh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_irq_to_resourceasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int indexh](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hindexh]hindex}(hj(hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct resource *rh](j)}(hj"h]hstruct}(hjAhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj=ubj1)}(h h]h }(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj=ubh)}(hhh]jE)}(hresourceh]hresource}(hj_hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj\ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjamodnameN classnameNjbje)}jh]jc.of_irq_to_resourceasbuh1hhj=ubj1)}(h h]h }(hj}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj=ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubjE)}(hjh]hr}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj=ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjYhhhjkhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjUhhhjkhMubah}(h]jPah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjkhMhjRhhubj>)}(hhh]jC)}(h/Decode a node's IRQ and return it as a resourceh]h1Decode a node’s IRQ and return it as a resource}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjRhhhjkhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``struct device_node *dev`` pointer to device tree node ``int index`` zero-based index of the irq ``struct resource *r`` pointer to resource structure to return result into.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh](j)}(h8``struct device_node *dev`` pointer to device tree node h](j)}(h``struct device_node *dev``h]j)}(hjh]hstruct device_node *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]jC)}(hpointer to device tree nodeh]hpointer to device tree node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h*``int index`` zero-based index of the irq h](j)}(h ``int index``h]j)}(hj;h]h int index}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj5ubj)}(hhh]jC)}(hzero-based index of the irqh]hzero-based index of the irq}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjPhMhjQubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhjPhMhjubj)}(hK``struct resource *r`` pointer to resource structure to return result into.h](j)}(h``struct resource *r``h]j)}(hjth]hstruct resource *r}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjnubj)}(hhh]jC)}(h4pointer to resource structure to return result into.h]h4pointer to resource structure to return result into.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_irq_get (C function) c.of_irq_gethNtauh1hhhhhhNhNubj)}(hhh](j)}(h3int of_irq_get (struct device_node *dev, int index)h]j)}(h2int of_irq_get(struct device_node *dev, int index)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(h of_irq_geth]jE)}(h of_irq_geth]h of_irq_get}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h$(struct device_node *dev, int index)h](j)}(hstruct device_node *devh](j)}(hj"h]hstruct}(hj hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj) hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj& ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj+ modnameN classnameNjbje)}jh]jk)}j^jsb c.of_irq_getasbuh1hhj ubj1)}(h h]h }(hjI hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hjW hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(hdevh]hdev}(hjd hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h int indexh](j)}(hinth]hint}(hj} hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjy ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjy ubjE)}(hindexh]hindex}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjy ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h7Decode a node's IRQ and return it as a Linux IRQ numberh]h9Decode a node’s IRQ and return it as a Linux IRQ number}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj jbj jcjdjeuh1j hhhhhNhNubjg)}(hX$**Parameters** ``struct device_node *dev`` pointer to device tree node ``int index`` zero-based index of the IRQ **Return** Linux IRQ number on success, or 0 on the IRQ mapping failure, or -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case of any other failure.h](jC)}(h**Parameters**h]jq)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM hj ubj)}(hhh](j)}(h8``struct device_node *dev`` pointer to device tree node h](j)}(h``struct device_node *dev``h]j)}(hj h]hstruct device_node *dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM hj ubj)}(hhh]jC)}(hpointer to device tree nodeh]hpointer to device tree node}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj hM hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hM hj ubj)}(h*``int index`` zero-based index of the IRQ h](j)}(h ``int index``h]j)}(hj= h]h int index}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj; ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM hj7 ubj)}(hhh]jC)}(hzero-based index of the IRQh]hzero-based index of the IRQ}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjR hM hjS ubah}(h]h ]h"]h$]h&]uh1jhj7 ubeh}(h]h ]h"]h$]h&]uh1jhjR hM hj ubeh}(h]h ]h"]h$]h&]uh1jhj ubjC)}(h **Return**h]jq)}(hjx h]hReturn}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjv ubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM hj ubjC)}(hLinux IRQ number on success, or 0 on the IRQ mapping failure, or -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case of any other failure.h]hLinux IRQ number on success, or 0 on the IRQ mapping failure, or -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case of any other failure.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_irq_get_byname (C function)c.of_irq_get_bynamehNtauh1hhhhhhNhNubj)}(hhh](j)}(hAint of_irq_get_byname (struct device_node *dev, const char *name)h]j)}(h@int of_irq_get_byname(struct device_node *dev, const char *name)h](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj hhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM=ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj hhhj hM=ubj)}(hof_irq_get_bynameh]jE)}(hof_irq_get_bynameh]hof_irq_get_byname}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hM=ubj)}(h+(struct device_node *dev, const char *name)h](j)}(hstruct device_node *devh](j)}(hj"h]hstruct}(hj hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj modnameN classnameNjbje)}jh]jk)}j^j sbc.of_irq_get_bynameasbuh1hhj ubj1)}(h h]h }(hj8 hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hjF hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(hdevh]hdev}(hjS hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hconst char *nameh](j)}(hj\h]hconst}(hjl hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjh ubj1)}(h h]h }(hjy hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjh ubj)}(hcharh]hchar}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjh ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjh ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh ubjE)}(hnameh]hname}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjh ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hM=ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj hhhj hM=ubah}(h]j ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj hM=hj hhubj>)}(hhh]jC)}(h7Decode a node's IRQ and return it as a Linux IRQ numberh]h9Decode a node’s IRQ and return it as a Linux IRQ number}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM=hj hhubah}(h]h ]h"]h$]h&]uh1j=hj hhhj hM=ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj jbj jcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``struct device_node *dev`` pointer to device tree node ``const char *name`` IRQ name **Return** Linux IRQ number on success, or 0 on the IRQ mapping failure, or -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case of any other failure.h](jC)}(h**Parameters**h]jq)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMAhj ubj)}(hhh](j)}(h8``struct device_node *dev`` pointer to device tree node h](j)}(h``struct device_node *dev``h]j)}(hj h]hstruct device_node *dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM>hj ubj)}(hhh]jC)}(hpointer to device tree nodeh]hpointer to device tree node}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj0 hM>hj1 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj0 hM>hj ubj)}(h``const char *name`` IRQ name h](j)}(h``const char *name``h]j)}(hjT h]hconst char *name}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjR ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM?hjN ubj)}(hhh]jC)}(hIRQ nameh]hIRQ name}(hjm hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhji hM?hjj ubah}(h]h ]h"]h$]h&]uh1jhjN ubeh}(h]h ]h"]h$]h&]uh1jhji hM?hj ubeh}(h]h ]h"]h$]h&]uh1jhj ubjC)}(h **Return**h]jq)}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMAhj ubjC)}(hLinux IRQ number on success, or 0 on the IRQ mapping failure, or -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case of any other failure.h]hLinux IRQ number on success, or 0 on the IRQ mapping failure, or -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case of any other failure.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMAhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_irq_count (C function)c.of_irq_counthNtauh1hhhhhhNhNubj)}(hhh](j)}(h*int of_irq_count (struct device_node *dev)h]j)}(h)int of_irq_count(struct device_node *dev)h](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj hhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMUubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj hhhj hMUubj)}(h of_irq_counth]jE)}(h of_irq_counth]h of_irq_count}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj hMUubj)}(h(struct device_node *dev)h]j)}(hstruct device_node *devh](j)}(hj"h]hstruct}(hj hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj/ hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj, ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj1 modnameN classnameNjbje)}jh]jk)}j^j sbc.of_irq_countasbuh1hhj ubj1)}(h h]h }(hjO hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hj] hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(hdevh]hdev}(hjj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hMUubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj hhhj hMUubah}(h]j ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj hMUhj hhubj>)}(hhh]jC)}(h$Count the number of IRQs a node usesh]h$Count the number of IRQs a node uses}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMUhj hhubah}(h]h ]h"]h$]h&]uh1j=hj hhhj hMUubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj jbj jcjdjeuh1j hhhhhNhNubjg)}(hI**Parameters** ``struct device_node *dev`` pointer to device tree nodeh](jC)}(h**Parameters**h]jq)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMYhj ubj)}(hhh]j)}(h7``struct device_node *dev`` pointer to device tree nodeh](j)}(h``struct device_node *dev``h]j)}(hj h]hstruct device_node *dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM[hj ubj)}(hhh]jC)}(hpointer to device tree nodeh]hpointer to device tree node}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMVhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hM[hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j %of_irq_to_resource_table (C function)c.of_irq_to_resource_tablehNtauh1hhhhhhNhNubj)}(hhh](j)}(hYint of_irq_to_resource_table (struct device_node *dev, struct resource *res, int nr_irqs)h]j)}(hXint of_irq_to_resource_table(struct device_node *dev, struct resource *res, int nr_irqs)h](j)}(hinth]hint}(hj/hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj+hhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMgubj1)}(h h]h }(hj>hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj+hhhj=hMgubj)}(hof_irq_to_resource_tableh]jE)}(hof_irq_to_resource_tableh]hof_irq_to_resource_table}(hjPhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjLubah}(h]h ](jjeh"]h$]h&]hhuh1jhj+hhhj=hMgubj)}(h<(struct device_node *dev, struct resource *res, int nr_irqs)h](j)}(hstruct device_node *devh](j)}(hj"h]hstruct}(hjlhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhubj1)}(h h]h }(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jRsbc.of_irq_to_resource_tableasbuh1hhjhubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubjE)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubj)}(hstruct resource *resh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(hresourceh]hresource}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_irq_to_resource_tableasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hresh]hres}(hj5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubj)}(h int nr_irqsh](j)}(hinth]hint}(hjNhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjJubj1)}(h h]h }(hj\hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJubjE)}(hnr_irqsh]hnr_irqs}(hjjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjJubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubeh}(h]h ]h"]h$]h&]hhuh1jhj+hhhj=hMgubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj'hhhj=hMgubah}(h]j"ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj=hMghj$hhubj>)}(hhh]jC)}(h+Fill in resource table with node's IRQ infoh]h-Fill in resource table with node’s IRQ info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMghjhhubah}(h]h ]h"]h$]h&]uh1j=hj$hhhj=hMgubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``struct device_node *dev`` pointer to device tree node ``struct resource *res`` array of resources to fill in ``int nr_irqs`` the number of IRQs (and upper bound for num of **res** elements) **Return** The size of the filled in table (up to **nr_irqs**).h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMkhjubj)}(hhh](j)}(h8``struct device_node *dev`` pointer to device tree node h](j)}(h``struct device_node *dev``h]j)}(hjh]hstruct device_node *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhhjubj)}(hhh]jC)}(hpointer to device tree nodeh]hpointer to device tree node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhhjubj)}(h7``struct resource *res`` array of resources to fill in h](j)}(h``struct resource *res``h]j)}(hjh]hstruct resource *res}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMihjubj)}(hhh]jC)}(harray of resources to fill inh]harray of resources to fill in}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj#hMihj$ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj#hMihjubj)}(hQ``int nr_irqs`` the number of IRQs (and upper bound for num of **res** elements) h](j)}(h``int nr_irqs``h]j)}(hjGh]h int nr_irqs}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMjhjAubj)}(hhh]jC)}(h@the number of IRQs (and upper bound for num of **res** elements)h](h/the number of IRQs (and upper bound for num of }(hj`hhhNhNubjq)}(h**res**h]hres}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj`ubh elements)}(hj`hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhj\hMjhj]ubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jhj\hMjhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMlhjubjC)}(h4The size of the filled in table (up to **nr_irqs**).h](h'The size of the filled in table (up to }(hjhhhNhNubjq)}(h **nr_irqs**h]hnr_irqs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMlhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_msi_xlate (C function)c.of_msi_xlatehNtauh1hhhhhhNhNubj)}(hhh](j)}(hMu32 of_msi_xlate (struct device *dev, struct device_node **msi_np, u32 id_in)h]j)}(hLu32 of_msi_xlate(struct device *dev, struct device_node **msi_np, u32 id_in)h](h)}(hhh]jE)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^ of_msi_xlatesbc.of_msi_xlateasbuh1hhjhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(h of_msi_xlateh]jE)}(hj h]h of_msi_xlate}(hj"hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h<(struct device *dev, struct device_node **msi_np, u32 id_in)h](j)}(hstruct device *devh](j)}(hj"h]hstruct}(hj=hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj9ubj1)}(h h]h }(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj[hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjXubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj]modnameN classnameNjbje)}jh]j c.of_msi_xlateasbuh1hhj9ubj1)}(h h]h }(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubjE)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj5ubj)}(hstruct device_node **msi_nph](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j c.of_msi_xlateasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hmsi_nph]hmsi_np}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj5ubj)}(h u32 id_inh](h)}(hhh]jE)}(hu32h]hu32}(hj-hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj*ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj/modnameN classnameNjbje)}jh]j c.of_msi_xlateasbuh1hhj&ubj1)}(h h]h }(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj&ubjE)}(hid_inh]hid_in}(hjYhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj5ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjhhubj>)}(hhh]jC)}(h2map a MSI ID and find relevant MSI controller nodeh]h2map a MSI ID and find relevant MSI controller node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``struct device *dev`` device for which the mapping is to be done. ``struct device_node **msi_np`` Pointer to target MSI controller node, or NULL if the caller only needs the translated ID without receiving the controller node. If non-NULL and pointing to a non-NULL node, only entries targeting that node will be matched. If non-NULL and pointing to NULL, it will receive the first matching target node with a reference held. ``u32 id_in`` Device ID. **Description** Walk up the device hierarchy looking for devices with a "msi-map" or "msi-parent" property. If found, apply the mapping to **id_in**. **Return** The mapped MSI id.h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM!hjubj)}(hhh](j)}(hC``struct device *dev`` device for which the mapping is to be done. h](j)}(h``struct device *dev``h]j)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]jC)}(h+device for which the mapping is to be done.h]h+device for which the mapping is to be done.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hXh``struct device_node **msi_np`` Pointer to target MSI controller node, or NULL if the caller only needs the translated ID without receiving the controller node. If non-NULL and pointing to a non-NULL node, only entries targeting that node will be matched. If non-NULL and pointing to NULL, it will receive the first matching target node with a reference held. h](j)}(h``struct device_node **msi_np``h]j)}(hjh]hstruct device_node **msi_np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM#hjubj)}(hhh]jC)}(hXGPointer to target MSI controller node, or NULL if the caller only needs the translated ID without receiving the controller node. If non-NULL and pointing to a non-NULL node, only entries targeting that node will be matched. If non-NULL and pointing to NULL, it will receive the first matching target node with a reference held.h]hXGPointer to target MSI controller node, or NULL if the caller only needs the translated ID without receiving the controller node. If non-NULL and pointing to a non-NULL node, only entries targeting that node will be matched. If non-NULL and pointing to NULL, it will receive the first matching target node with a reference held.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM#hjubj)}(h``u32 id_in`` Device ID. h](j)}(h ``u32 id_in``h]j)}(hj7h]h u32 id_in}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM$hj1ubj)}(hhh]jC)}(h Device ID.h]h Device ID.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjLhM$hjMubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhjLhM$hjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjrh]h Description}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jphjpubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM&hjubjC)}(hWalk up the device hierarchy looking for devices with a "msi-map" or "msi-parent" property. If found, apply the mapping to **id_in**.h](hWalk up the device hierarchy looking for devices with a “msi-map” or “msi-parent” property. If found, apply the mapping to }(hjhhhNhNubjq)}(h **id_in**h]hid_in}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM%hjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM(hjubjC)}(hThe mapped MSI id.h]hThe mapped MSI id.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM)hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_msi_get_domain (C function)c.of_msi_get_domainhNtauh1hhhhhhNhNubj)}(hhh](j)}(hystruct irq_domain * of_msi_get_domain (struct device *dev, const struct device_node *np, enum irq_domain_bus_token token)h]j)}(hwstruct irq_domain *of_msi_get_domain(struct device *dev, const struct device_node *np, enum irq_domain_bus_token token)h](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMcubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMcubh)}(hhh]jE)}(h irq_domainh]h irq_domain}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^of_msi_get_domainsbc.of_msi_get_domainasbuh1hhjhhhjhMcubj1)}(h h]h }(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMcubj)}(hjh]h*}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMcubj)}(hof_msi_get_domainh]jE)}(hj-h]hof_msi_get_domain}(hjOhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjKubah}(h]h ](jjeh"]h$]h&]hhuh1/jhjhhhjhMcubj)}(hS(struct device *dev, const struct device_node *np, enum irq_domain_bus_token token)h](j)}(hstruct device *devh](j)}(hj"h]hstruct}(hjjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjfubj1)}(h h]h }(hjwhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfubh)}(hhh]jE)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j+c.of_msi_get_domainasbuh1hhjfubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubjE)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjfubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubj)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j+c.of_msi_get_domainasbuh1hhjubj1)}(h h]h }(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjLhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubj)}(henum irq_domain_bus_token tokenh](j)}(henumh]henum}(hjehhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjaubj1)}(h h]h }(hjshhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjaubh)}(hhh]jE)}(hirq_domain_bus_tokenh]hirq_domain_bus_token}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j+c.of_msi_get_domainasbuh1hhjaubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjaubjE)}(htokenh]htoken}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjaubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMcubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMcubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMchjhhubj>)}(hhh]jC)}(h.Use msi-parent to find the relevant MSI domainh]h.Use msi-parent to find the relevant MSI domain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMchjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMcubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(hXi**Parameters** ``struct device *dev`` device for which the domain is requested ``const struct device_node *np`` device node for **dev** ``enum irq_domain_bus_token token`` bus type for this domain **Description** Parse the msi-parent property and returns the corresponding MSI domain. **Return** the MSI domain for this device (or NULL on failure).h](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMghjubj)}(hhh](j)}(h@``struct device *dev`` device for which the domain is requested h](j)}(h``struct device *dev``h]j)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMdhjubj)}(hhh]jC)}(h(device for which the domain is requestedh]h(device for which the domain is requested}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj0hMdhj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj0hMdhjubj)}(h9``const struct device_node *np`` device node for **dev** h](j)}(h ``const struct device_node *np``h]j)}(hjTh]hconst struct device_node *np}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMehjNubj)}(hhh]jC)}(hdevice node for **dev**h](hdevice node for }(hjmhhhNhNubjq)}(h**dev**h]hdev}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjmubeh}(h]h ]h"]h$]h&]uh1jBhjihMehjjubah}(h]h ]h"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]uh1jhjihMehjubj)}(h=``enum irq_domain_bus_token token`` bus type for this domain h](j)}(h#``enum irq_domain_bus_token token``h]j)}(hjh]henum irq_domain_bus_token token}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMfhjubj)}(hhh]jC)}(hbus type for this domainh]hbus type for this domain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMfhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMfhjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhhjubjC)}(hGParse the msi-parent property and returns the corresponding MSI domain.h]hGParse the msi-parent property and returns the corresponding MSI domain.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMghjubjC)}(h **Return**h]jq)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMihjubjC)}(h4the MSI domain for this device (or NULL on failure).h]h4the MSI domain for this device (or NULL on failure).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMjhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_msi_configure (C function)c.of_msi_configurehNtauh1hhhhhhNhNubj)}(hhh](j)}(hHvoid of_msi_configure (struct device *dev, const struct device_node *np)h]j)}(hGvoid of_msi_configure(struct device *dev, const struct device_node *np)h](j)}(hvoidh]hvoid}(hjBhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj>hhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>hhhjPhMubj)}(hof_msi_configureh]jE)}(hof_msi_configureh]hof_msi_configure}(hjchhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj_ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj>hhhjPhMubj)}(h2(struct device *dev, const struct device_node *np)h](j)}(hstruct device *devh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj{ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj{ubh)}(hhh]jE)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jesbc.of_msi_configureasbuh1hhj{ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj{ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubjE)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjwubj)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hj hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj*hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj'ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj,modnameN classnameNjbje)}jh]jc.of_msi_configureasbuh1hhjubj1)}(h h]h }(hjHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjchhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjwubeh}(h]h ]h"]h$]h&]hhuh1jhj>hhhjPhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj:hhhjPhMubah}(h]j5ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjPhMhj7hhubj>)}(hhh]jC)}(h$Set the msi_domain field of a deviceh]h$Set the msi_domain field of a device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjhhubah}(h]h ]h"]h$]h&]uh1j=hj7hhhjPhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjg)}(h**Parameters** ``struct device *dev`` device structure to associate with an MSI irq domain ``const struct device_node *np`` device node for that deviceh](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh](j)}(hL``struct device *dev`` device structure to associate with an MSI irq domain h](j)}(h``struct device *dev``h]j)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]jC)}(h4device structure to associate with an MSI irq domainh]h4device structure to associate with an MSI irq domain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h<``const struct device_node *np`` device node for that deviceh](j)}(h ``const struct device_node *np``h]j)}(hjh]hconst struct device_node *np}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]jC)}(hdevice node for that deviceh]hdevice node for that device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j "of_fdt_unflatten_tree (C function)c.of_fdt_unflatten_treehNtauh1hhhhhhNhNubj)}(hhh](j)}(hovoid * of_fdt_unflatten_tree (const unsigned long *blob, struct device_node *dad, struct device_node **mynodes)h]j)}(hmvoid *of_fdt_unflatten_tree(const unsigned long *blob, struct device_node *dad, struct device_node **mynodes)h](j)}(hvoidh]hvoid}(hjahhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj]hhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMubj1)}(h h]h }(hjphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj]hhhjohMubj)}(hjh]h*}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]hhhjohMubj)}(hof_fdt_unflatten_treeh]jE)}(hof_fdt_unflatten_treeh]hof_fdt_unflatten_tree}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhj]hhhjohMubj)}(hR(const unsigned long *blob, struct device_node *dad, struct device_node **mynodes)h](j)}(hconst unsigned long *blobh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hblobh]hblob}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node *dadh](j)}(hj"h]hstruct}(hj$hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjBhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj?ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjDmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_fdt_unflatten_treeasbuh1hhj ubj1)}(h h]h }(hjbhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(hdadh]hdad}(hj}hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node **mynodesh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j^c.of_fdt_unflatten_treeasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hmynodesh]hmynodes}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj]hhhjohMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjYhhhjohMubah}(h]jTah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjohMhjVhhubj>)}(hhh]jC)}(h*create tree of device_nodes from flat blobh]h*create tree of device_nodes from flat blob}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhj!hhubah}(h]h ]h"]h$]h&]uh1j=hjVhhhjohMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj<jbj<jcjdjeuh1j hhhhhNhNubjg)}(hX**Parameters** ``const unsigned long *blob`` Flat device tree blob ``struct device_node *dad`` Parent device node ``struct device_node **mynodes`` The device tree created by the call **Description** unflattens the device-tree passed by the firmware, creating the tree of struct device_node. It also fills the "name" and "type" pointers of the nodes so the normal device-tree walking functions can be used. **Return** NULL on failure or the memory chunk containing the unflattened device tree on success.h](jC)}(h**Parameters**h]jq)}(hjFh]h Parameters}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjDubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhj@ubj)}(hhh](j)}(h4``const unsigned long *blob`` Flat device tree blob h](j)}(h``const unsigned long *blob``h]j)}(hjeh]hconst unsigned long *blob}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhj_ubj)}(hhh]jC)}(hFlat device tree blobh]hFlat device tree blob}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjzhMhj{ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1jhjzhMhj\ubj)}(h/``struct device_node *dad`` Parent device node h](j)}(h``struct device_node *dad``h]j)}(hjh]hstruct device_node *dad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjubj)}(hhh]jC)}(hParent device nodeh]hParent device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj\ubj)}(hE``struct device_node **mynodes`` The device tree created by the call h](j)}(h ``struct device_node **mynodes``h]j)}(hjh]hstruct device_node **mynodes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjubj)}(hhh]jC)}(h#The device tree created by the callh]h#The device tree created by the call}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj\ubeh}(h]h ]h"]h$]h&]uh1jhj@ubjC)}(h**Description**h]jq)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhj@ubjC)}(hunflattens the device-tree passed by the firmware, creating the tree of struct device_node. It also fills the "name" and "type" pointers of the nodes so the normal device-tree walking functions can be used.h]hunflattens the device-tree passed by the firmware, creating the tree of struct device_node. It also fills the “name” and “type” pointers of the nodes so the normal device-tree walking functions can be used.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhj@ubjC)}(h **Return**h]jq)}(hj9h]hReturn}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj7ubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhj@ubjC)}(hVNULL on failure or the memory chunk containing the unflattened device tree on success.h]hVNULL on failure or the memory chunk containing the unflattened device tree on success.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubeh}(h]core-functionsah ]h"]core functionsah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hDriver model functionsh]hDriver model functions}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhhhhhK!ubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #of_driver_match_device (C function)c.of_driver_match_devicehNtauh1hhjmhhhNhNubj)}(hhh](j)}(hPint of_driver_match_device (struct device *dev, const struct device_driver *drv)h]j)}(hOint of_driver_match_device(struct device *dev, const struct device_driver *drv)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhKubj)}(hof_driver_match_deviceh]jE)}(hof_driver_match_deviceh]hof_driver_match_device}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h5(struct device *dev, const struct device_driver *drv)h](j)}(hstruct device *devh](j)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_driver_match_deviceasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hdevh]hdev}(hj-hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst struct device_driver *drvh](j)}(hj\h]hconst}(hjFhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjBubj1)}(h h]h }(hjShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBubj)}(hj"h]hstruct}(hjahhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjBubj1)}(h h]h }(hjnhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBubh)}(hhh]jE)}(h device_driverh]h device_driver}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj|ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jc.of_driver_match_deviceasbuh1hhjBubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubjE)}(hdrvh]hdrv}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjBubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhKubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhKhjhhubj>)}(hhh]jC)}(h3Tell if a driver's of_match_table matches a device.h]h5Tell if a driver’s of_match_table matches a device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhjmhNhNubjg)}(h**Parameters** ``struct device *dev`` the device structure to match against ``const struct device_driver *drv`` the device_driver structure to testh](jC)}(h**Parameters**h]jq)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubah}(h]h ]h"]h$]h&]uh1jBh_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKhjubj)}(hhh](j)}(h=``struct device *dev`` the device structure to match against h](j)}(h``struct device *dev``h]j)}(hj#h]hstruct device *dev}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKhjubj)}(hhh]jC)}(h%the device structure to match againsth]h%the device structure to match against}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj8hKhj9ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj8hKhjubj)}(hG``const struct device_driver *drv`` the device_driver structure to testh](j)}(h#``const struct device_driver *drv``h]j)}(hj\h]hconst struct device_driver *drv}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKhjVubj)}(hhh]jC)}(h#the device_driver structure to testh]h#the device_driver structure to test}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKhjrubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jhjqhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_match_device (C function)c.of_match_devicehNtauh1hhjmhhhNhNubj)}(hhh](j)}(hjconst struct of_device_id * of_match_device (const struct of_device_id *matches, const struct device *dev)h]j)}(hhconst struct of_device_id *of_match_device(const struct of_device_id *matches, const struct device *dev)h](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhKubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhhhjhKubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhKubh)}(hhh]jE)}(h of_device_idh]h of_device_id}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^of_match_devicesbc.of_match_deviceasbuh1hhjhhhjhKubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hof_match_deviceh]jE)}(hjh]hof_match_device}(hj0hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj,ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h>(const struct of_device_id *matches, const struct device *dev)h](j)}(h"const struct of_device_id *matchesh](j)}(hj\h]hconst}(hjKhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjGubj1)}(h h]h }(hjXhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubj)}(hj"h]hstruct}(hjfhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjGubj1)}(h h]h }(hjshhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubh)}(hhh]jE)}(h of_device_idh]h of_device_id}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j c.of_match_deviceasbuh1hhjGubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubjE)}(hmatchesh]hmatches}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjCubj)}(hconst struct device *devh](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(hdeviceh]hdevice}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj modnameN classnameNjbje)}jh]j c.of_match_deviceasbuh1hhjubj1)}(h h]h }(hj- hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj; hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hdevh]hdev}(hjH hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjCubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhKubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhKhjhhubj>)}(hhh]jC)}(h4Tell if a struct device matches an of_device_id listh]h4Tell if a struct device matches an of_device_id list}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhjo hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj jbj jcjdjeuh1j hhhjmhNhNubjg)}(hX7**Parameters** ``const struct of_device_id *matches`` array of of_device_id match structures to search in ``const struct device *dev`` the OF device structure to match against **Description** Used by a driver to check whether an platform_device present in the system is in its list of supported devices.h](jC)}(h**Parameters**h]jq)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj ubj)}(hhh](j)}(h[``const struct of_device_id *matches`` array of of_device_id match structures to search in h](j)}(h&``const struct of_device_id *matches``h]j)}(hj h]h"const struct of_device_id *matches}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj ubj)}(hhh]jC)}(h3array of of_device_id match structures to search inh]h3array of of_device_id match structures to search in}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj)}(hF``const struct device *dev`` the OF device structure to match against h](j)}(h``const struct device *dev``h]j)}(hj h]hconst struct device *dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj ubj)}(hhh]jC)}(h(the OF device structure to match againsth]h(the OF device structure to match against}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj!hKhj!ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj!hKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubjC)}(h**Description**h]jq)}(hj'!h]h Description}(hj)!hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj%!ubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj ubjC)}(hoUsed by a driver to check whether an platform_device present in the system is in its list of supported devices.h]hoUsed by a driver to check whether an platform_device present in the system is in its list of supported devices.}(hj=!hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j  of_dma_configure_id (C function)c.of_dma_configure_idhNtauh1hhjmhhhNhNubj)}(hhh](j)}(hcint of_dma_configure_id (struct device *dev, struct device_node *np, bool force_dma, const u32 *id)h]j)}(hbint of_dma_configure_id(struct device *dev, struct device_node *np, bool force_dma, const u32 *id)h](j)}(hinth]hint}(hjl!hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjh!hhhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKEubj1)}(h h]h }(hj{!hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjh!hhhjz!hKEubj)}(hof_dma_configure_idh]jE)}(hof_dma_configure_idh]hof_dma_configure_id}(hj!hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj!ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjh!hhhjz!hKEubj)}(hK(struct device *dev, struct device_node *np, bool force_dma, const u32 *id)h](j)}(hstruct device *devh](j)}(hj"h]hstruct}(hj!hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj!ubj1)}(h h]h }(hj!hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj!ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj!hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj!ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj!modnameN classnameNjbje)}jh]jk)}j^j!sbc.of_dma_configure_idasbuh1hhj!ubj1)}(h h]h }(hj!hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj!ubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubjE)}(hdevh]hdev}(hj"hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj!ubj)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hj"hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj"ubj1)}(h h]h }(hj("hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj9"hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj6"ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj;"modnameN classnameNjbje)}jh]j!c.of_dma_configure_idasbuh1hhj"ubj1)}(h h]h }(hjW"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"ubj)}(hjh]h*}(hje"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubjE)}(hnph]hnp}(hjr"hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj!ubj)}(hbool force_dmah](j)}(hjh]hbool}(hj"hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj"ubj1)}(h h]h }(hj"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"ubjE)}(h force_dmah]h force_dma}(hj"hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj!ubj)}(h const u32 *idh](j)}(hj\h]hconst}(hj"hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj"ubj1)}(h h]h }(hj"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"ubh)}(hhh]jE)}(hu32h]hu32}(hj"hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj"ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj"modnameN classnameNjbje)}jh]j!c.of_dma_configure_idasbuh1hhj"ubj1)}(h h]h }(hj"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"ubj)}(hjh]h*}(hj #hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubjE)}(hidh]hid}(hj#hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj!ubeh}(h]h ]h"]h$]h&]hhuh1jhjh!hhhjz!hKEubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjd!hhhjz!hKEubah}(h]j_!ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjz!hKEhja!hhubj>)}(hhh]jC)}(hSetup DMA configurationh]hSetup DMA configuration}(hj@#hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKEhj=#hhubah}(h]h ]h"]h$]h&]uh1j=hja!hhhjz!hKEubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajX#jbjX#jcjdjeuh1j hhhjmhNhNubjg)}(hXb**Parameters** ``struct device *dev`` Device to apply DMA configuration ``struct device_node *np`` Pointer to OF node having DMA configuration ``bool force_dma`` Whether device is to be set up by of_dma_configure() even if DMA capability is not explicitly described by firmware. ``const u32 *id`` Optional const pointer value input id **Description** Try to get devices's DMA configuration from DT and update it accordingly. If platform code needs to use its own special DMA configuration, it can use a platform bus notifier and handle BUS_NOTIFY_ADD_DEVICE events to fix up DMA configuration.h](jC)}(h**Parameters**h]jq)}(hjb#h]h Parameters}(hjd#hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj`#ubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKIhj\#ubj)}(hhh](j)}(h9``struct device *dev`` Device to apply DMA configuration h](j)}(h``struct device *dev``h]j)}(hj#h]hstruct device *dev}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKFhj{#ubj)}(hhh]jC)}(h!Device to apply DMA configurationh]h!Device to apply DMA configuration}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj#hKFhj#ubah}(h]h ]h"]h$]h&]uh1jhj{#ubeh}(h]h ]h"]h$]h&]uh1jhj#hKFhjx#ubj)}(hG``struct device_node *np`` Pointer to OF node having DMA configuration h](j)}(h``struct device_node *np``h]j)}(hj#h]hstruct device_node *np}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKGhj#ubj)}(hhh]jC)}(h+Pointer to OF node having DMA configurationh]h+Pointer to OF node having DMA configuration}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj#hKGhj#ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jhj#hKGhjx#ubj)}(h``bool force_dma`` Whether device is to be set up by of_dma_configure() even if DMA capability is not explicitly described by firmware. h](j)}(h``bool force_dma``h]j)}(hj#h]hbool force_dma}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKIhj#ubj)}(hhh]jC)}(htWhether device is to be set up by of_dma_configure() even if DMA capability is not explicitly described by firmware.h]htWhether device is to be set up by of_dma_configure() even if DMA capability is not explicitly described by firmware.}(hj $hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKHhj $ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jhj$hKIhjx#ubj)}(h8``const u32 *id`` Optional const pointer value input id h](j)}(h``const u32 *id``h]j)}(hj-$h]h const u32 *id}(hj/$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+$ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKJhj'$ubj)}(hhh]jC)}(h%Optional const pointer value input idh]h%Optional const pointer value input id}(hjF$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjB$hKJhjC$ubah}(h]h ]h"]h$]h&]uh1jhj'$ubeh}(h]h ]h"]h$]h&]uh1jhjB$hKJhjx#ubeh}(h]h ]h"]h$]h&]uh1jhj\#ubjC)}(h**Description**h]jq)}(hjh$h]h Description}(hjj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjf$ubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKLhj\#ubjC)}(hITry to get devices's DMA configuration from DT and update it accordingly.h]hKTry to get devices’s DMA configuration from DT and update it accordingly.}(hj~$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKKhj\#ubjC)}(hIf platform code needs to use its own special DMA configuration, it can use a platform bus notifier and handle BUS_NOTIFY_ADD_DEVICE events to fix up DMA configuration.h]hIf platform code needs to use its own special DMA configuration, it can use a platform bus notifier and handle BUS_NOTIFY_ADD_DEVICE events to fix up DMA configuration.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKNhj\#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_device_modalias (C function)c.of_device_modaliashNtauh1hhjmhhhNhNubj)}(hhh](j)}(hGssize_t of_device_modalias (struct device *dev, char *str, ssize_t len)h]j)}(hFssize_t of_device_modalias(struct device *dev, char *str, ssize_t len)h](h)}(hhh]jE)}(hssize_th]hssize_t}(hj$hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj$ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj$modnameN classnameNjbje)}jh]jk)}j^of_device_modaliassbc.of_device_modaliasasbuh1hhj$hhhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKubj1)}(h h]h }(hj$hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj$hhhj$hKubj)}(hof_device_modaliash]jE)}(hj$h]hof_device_modalias}(hj$hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj$ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj$hhhj$hKubj)}(h,(struct device *dev, char *str, ssize_t len)h](j)}(hstruct device *devh](j)}(hj"h]hstruct}(hj%hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj %ubj1)}(h h]h }(hj%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj %ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj,%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj)%ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj.%modnameN classnameNjbje)}jh]j$c.of_device_modaliasasbuh1hhj %ubj1)}(h h]h }(hjJ%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj %ubj)}(hjh]h*}(hjX%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj %ubjE)}(hdevh]hdev}(hje%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj %ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj%ubj)}(h char *strh](j)}(hcharh]hchar}(hj~%hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjz%ubj1)}(h h]h }(hj%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjz%ubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjz%ubjE)}(hstrh]hstr}(hj%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjz%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj%ubj)}(h ssize_t lenh](h)}(hhh]jE)}(hssize_th]hssize_t}(hj%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj%ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj%modnameN classnameNjbje)}jh]j$c.of_device_modaliasasbuh1hhj%ubj1)}(h h]h }(hj%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj%ubjE)}(hlenh]hlen}(hj%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj%ubeh}(h]h ]h"]h$]h&]hhuh1jhj$hhhj$hKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj$hhhj$hKubah}(h]j$ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj$hKhj$hhubj>)}(hhh]jC)}(h3Fill buffer with newline terminated modalias stringh]h3Fill buffer with newline terminated modalias string}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj&hhubah}(h]h ]h"]h$]h&]uh1j=hj$hhhj$hKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj1&jbj1&jcjdjeuh1j hhhjmhNhNubjg)}(h{**Parameters** ``struct device *dev`` Calling device ``char *str`` Modalias string ``ssize_t len`` Size of **str**h](jC)}(h**Parameters**h]jq)}(hj;&h]h Parameters}(hj=&hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj9&ubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj5&ubj)}(hhh](j)}(h&``struct device *dev`` Calling device h](j)}(h``struct device *dev``h]j)}(hjZ&h]hstruct device *dev}(hj\&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX&ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhjT&ubj)}(hhh]jC)}(hCalling deviceh]hCalling device}(hjs&hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjo&hKhjp&ubah}(h]h ]h"]h$]h&]uh1jhjT&ubeh}(h]h ]h"]h$]h&]uh1jhjo&hKhjQ&ubj)}(h``char *str`` Modalias string h](j)}(h ``char *str``h]j)}(hj&h]h char *str}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj&ubj)}(hhh]jC)}(hModalias stringh]hModalias string}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj&hKhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hKhjQ&ubj)}(h``ssize_t len`` Size of **str**h](j)}(h``ssize_t len``h]j)}(hj&h]h ssize_t len}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj&ubj)}(hhh]jC)}(hSize of **str**h](hSize of }(hj&hhhNhNubjq)}(h**str**h]hstr}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj&ubeh}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hKhjQ&ubeh}(h]h ]h"]h$]h&]uh1jhj5&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_device_uevent (C function)c.of_device_ueventhNtauh1hhjmhhhNhNubj)}(hhh](j)}(hMvoid of_device_uevent (const struct device *dev, struct kobj_uevent_env *env)h]j)}(hLvoid of_device_uevent(const struct device *dev, struct kobj_uevent_env *env)h](j)}(hvoidh]hvoid}(hj4'hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj0'hhhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKubj1)}(h h]h }(hjC'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0'hhhjB'hKubj)}(hof_device_ueventh]jE)}(hof_device_ueventh]hof_device_uevent}(hjU'hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQ'ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj0'hhhjB'hKubj)}(h7(const struct device *dev, struct kobj_uevent_env *env)h](j)}(hconst struct device *devh](j)}(hj\h]hconst}(hjq'hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjm'ubj1)}(h h]h }(hj~'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjm'ubj)}(hj"h]hstruct}(hj'hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjm'ubj1)}(h h]h }(hj'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjm'ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj'hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj'ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj'modnameN classnameNjbje)}jh]jk)}j^jW'sbc.of_device_ueventasbuh1hhjm'ubj1)}(h h]h }(hj'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjm'ubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjm'ubjE)}(hdevh]hdev}(hj'hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjm'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhji'ubj)}(hstruct kobj_uevent_env *envh](j)}(hj"h]hstruct}(hj'hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj'ubj1)}(h h]h }(hj (hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj'ubh)}(hhh]jE)}(hkobj_uevent_envh]hkobj_uevent_env}(hj(hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj(ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj(modnameN classnameNjbje)}jh]j'c.of_device_ueventasbuh1hhj'ubj1)}(h h]h }(hj:(hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj'ubj)}(hjh]h*}(hjH(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubjE)}(henvh]henv}(hjU(hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhji'ubeh}(h]h ]h"]h$]h&]hhuh1jhj0'hhhjB'hKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj,'hhhjB'hKubah}(h]j''ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjB'hKhj)'hhubj>)}(hhh]jC)}(h%Display OF related uevent informationh]h%Display OF related uevent information}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj|(hhubah}(h]h ]h"]h$]h&]uh1j=hj)'hhhjB'hKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj(jbj(jcjdjeuh1j hhhjmhNhNubjg)}(h**Parameters** ``const struct device *dev`` Device to display the uevent information for ``struct kobj_uevent_env *env`` Kernel object's userspace event reference to fill uph](jC)}(h**Parameters**h]jq)}(hj(h]h Parameters}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj(ubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj(ubj)}(hhh](j)}(hJ``const struct device *dev`` Device to display the uevent information for h](j)}(h``const struct device *dev``h]j)}(hj(h]hconst struct device *dev}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj(ubj)}(hhh]jC)}(h,Device to display the uevent information forh]h,Device to display the uevent information for}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj(hKhj(ubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhj(hKhj(ubj)}(hT``struct kobj_uevent_env *env`` Kernel object's userspace event reference to fill uph](j)}(h``struct kobj_uevent_env *env``h]j)}(hj(h]hstruct kobj_uevent_env *env}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj(ubj)}(hhh]jC)}(h4Kernel object's userspace event reference to fill uph]h6Kernel object’s userspace event reference to fill up}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj)ubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhj)hKhj(ubeh}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j "of_device_make_bus_id (C function)c.of_device_make_bus_idhNtauh1hhjmhhhNhNubj)}(hhh](j)}(h/void of_device_make_bus_id (struct device *dev)h]j)}(h.void of_device_make_bus_id(struct device *dev)h](j)}(hvoidh]hvoid}(hjS)hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjO)hhhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMubj1)}(h h]h }(hjb)hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjO)hhhja)hMubj)}(hof_device_make_bus_idh]jE)}(hof_device_make_bus_idh]hof_device_make_bus_id}(hjt)hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjp)ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjO)hhhja)hMubj)}(h(struct device *dev)h]j)}(hstruct device *devh](j)}(hj"h]hstruct}(hj)hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj)ubj1)}(h h]h }(hj)hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj)ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj)hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj)ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj)modnameN classnameNjbje)}jh]jk)}j^jv)sbc.of_device_make_bus_idasbuh1hhj)ubj1)}(h h]h }(hj)hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj)ubj)}(hjh]h*}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubjE)}(hdevh]hdev}(hj)hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubah}(h]h ]h"]h$]h&]hhuh1jhjO)hhhja)hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjK)hhhja)hMubah}(h]jF)ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhja)hMhjH)hhubj>)}(hhh]jC)}(h0Use the device node data to assign a unique nameh]h0Use the device node data to assign a unique name}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMhj*hhubah}(h]h ]h"]h$]h&]uh1j=hjH)hhhja)hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj+*jbj+*jcjdjeuh1j hhhjmhNhNubjg)}(hX0**Parameters** ``struct device *dev`` pointer to device structure that is linked to a device tree node **Description** This routine will first try using the translated bus address to derive a unique name. If it cannot, then it will prepend names from parent nodes until a unique name can be derived.h](jC)}(h**Parameters**h]jq)}(hj5*h]h Parameters}(hj7*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj3*ubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMhj/*ubj)}(hhh]j)}(hX``struct device *dev`` pointer to device structure that is linked to a device tree node h](j)}(h``struct device *dev``h]j)}(hjT*h]hstruct device *dev}(hjV*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjR*ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMhjN*ubj)}(hhh]jC)}(h@pointer to device structure that is linked to a device tree nodeh]h@pointer to device structure that is linked to a device tree node}(hjm*hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhji*hMhjj*ubah}(h]h ]h"]h$]h&]uh1jhjN*ubeh}(h]h ]h"]h$]h&]uh1jhji*hMhjK*ubah}(h]h ]h"]h$]h&]uh1jhj/*ubjC)}(h**Description**h]jq)}(hj*h]h Description}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj*ubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMhj/*ubjC)}(hThis routine will first try using the translated bus address to derive a unique name. If it cannot, then it will prepend names from parent nodes until a unique name can be derived.h]hThis routine will first try using the translated bus address to derive a unique name. If it cannot, then it will prepend names from parent nodes until a unique name can be derived.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMhj/*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_dev_auxdata (C struct)c.of_dev_auxdatahNtauh1hhjmhhha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhNubj)}(hhh](j)}(hof_dev_auxdatah]j)}(hstruct of_dev_auxdatah](j)}(hj"h]hstruct}(hj*hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj*hhha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKubj1)}(h h]h }(hj*hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj*hhhj*hKubj)}(hof_dev_auxdatah]jE)}(hj*h]hof_dev_auxdata}(hj*hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj*ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj*hhhj*hKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj*hhhj*hKubah}(h]j*ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj*hKhj*hhubj>)}(hhh]jC)}(h3lookup table entry for device names & platform_datah]h3lookup table entry for device names & platform_data}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhj+hhubah}(h]h ]h"]h$]h&]uh1j=hj*hhhj*hKubeh}(h]h ](j\structeh"]h$]h&]j`j\jaj/+jbj/+jcjdjeuh1j hhhjmhj*hNubjg)}(hX**Definition**:: struct of_dev_auxdata { char *compatible; resource_size_t phys_addr; char *name; void *platform_data; }; **Members** ``compatible`` compatible value of node to match against node ``phys_addr`` Start address of registers to match against node ``name`` Name to assign for matching nodes ``platform_data`` platform_data to assign for matching nodesh](jC)}(h**Definition**::h](jq)}(h**Definition**h]h Definition}(hj;+hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj7+ubh:}(hj7+hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhj3+ubjB)}(hxstruct of_dev_auxdata { char *compatible; resource_size_t phys_addr; char *name; void *platform_data; };h]hxstruct of_dev_auxdata { char *compatible; resource_size_t phys_addr; char *name; void *platform_data; };}hjT+sbah}(h]h ]h"]h$]h&]hhuh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhj3+ubjC)}(h **Members**h]jq)}(hje+h]hMembers}(hjg+hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjc+ubah}(h]h ]h"]h$]h&]uh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhK hj3+ubj)}(hhh](j)}(h>``compatible`` compatible value of node to match against node h](j)}(h``compatible``h]j)}(hj+h]h compatible}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhj~+ubj)}(hhh]jC)}(h.compatible value of node to match against nodeh]h.compatible value of node to match against node}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj+hKhj+ubah}(h]h ]h"]h$]h&]uh1jhj~+ubeh}(h]h ]h"]h$]h&]uh1jhj+hKhj{+ubj)}(h?``phys_addr`` Start address of registers to match against node h](j)}(h ``phys_addr``h]j)}(hj+h]h phys_addr}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhj+ubj)}(hhh]jC)}(h0Start address of registers to match against nodeh]h0Start address of registers to match against node}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj+hKhj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhj+hKhj{+ubj)}(h+``name`` Name to assign for matching nodes h](j)}(h``name``h]j)}(hj+h]hname}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhj+ubj)}(hhh]jC)}(h!Name to assign for matching nodesh]h!Name to assign for matching nodes}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj ,hKhj ,ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhj ,hKhj{+ubj)}(h<``platform_data`` platform_data to assign for matching nodesh](j)}(h``platform_data``h]j)}(hj/,h]h platform_data}(hj1,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-,ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhj),ubj)}(hhh]jC)}(h*platform_data to assign for matching nodesh]h*platform_data to assign for matching nodes}(hjH,hhhNhNubah}(h]h ]h"]h$]h&]uh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjE,ubah}(h]h ]h"]h$]h&]uh1jhj),ubeh}(h]h ]h"]h$]h&]uh1jhjD,hKhj{+ubeh}(h]h ]h"]h$]h&]uh1jhj3+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhj*hNubjC)}(h**Description**h]jq)}(hjr,h]h Description}(hjt,hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjp,ubah}(h]h ]h"]h$]h&]uh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjmhhubjC)}(hThis lookup table allows the caller of of_platform_populate() to override the names of devices when creating devices from the device tree. The table should be terminated with an empty entry. It also allows the platform_data pointer to be set.h]hThis lookup table allows the caller of of_platform_populate() to override the names of devices when creating devices from the device tree. The table should be terminated with an empty entry. It also allows the platform_data pointer to be set.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjmhhubjC)}(hThe reason for this functionality is that some Linux infrastructure uses the device name to look up a specific device, but the Linux-specific names are not encoded into the device tree, so the kernel needs to provide specific values.h]hThe reason for this functionality is that some Linux infrastructure uses the device name to look up a specific device, but the Linux-specific names are not encoded into the device tree, so the kernel needs to provide specific values.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjmhhubjC)}(h**Note**h]jq)}(hj,h]hNote}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj,ubah}(h]h ]h"]h$]h&]uh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhK"hjmhhubjC)}(hXUsing an auxdata lookup table should be considered a last resort when converting a platform to use the DT. Normally the automatically generated device name will not matter, and drivers should obtain data from the device node instead of from an anonymous platform_data pointer.h]hXUsing an auxdata lookup table should be considered a last resort when converting a platform to use the DT. Normally the automatically generated device name will not matter, and drivers should obtain data from the device node instead of from an anonymous platform_data pointer.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhK#hjmhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #of_find_device_by_node (C function)c.of_find_device_by_nodehNtauh1hhjmhhhNhNubj)}(hhh](j)}(hHstruct platform_device * of_find_device_by_node (struct device_node *np)h]j)}(hFstruct platform_device *of_find_device_by_node(struct device_node *np)h](j)}(hj"h]hstruct}(hj,hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj,hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKubj1)}(h h]h }(hj,hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,hhhj,hKubh)}(hhh]jE)}(hplatform_deviceh]hplatform_device}(hj-hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj-ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj-modnameN classnameNjbje)}jh]jk)}j^of_find_device_by_nodesbc.of_find_device_by_nodeasbuh1hhj,hhhj,hKubj1)}(h h]h }(hj&-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,hhhj,hKubj)}(hjh]h*}(hj4-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,hhhj,hKubj)}(hof_find_device_by_nodeh]jE)}(hj#-h]hof_find_device_by_node}(hjE-hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjA-ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj,hhhj,hKubj)}(h(struct device_node *np)h]j)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hj`-hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj\-ubj1)}(h h]h }(hjm-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\-ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj~-hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj{-ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj-modnameN classnameNjbje)}jh]j!-c.of_find_device_by_nodeasbuh1hhj\-ubj1)}(h h]h }(hj-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\-ubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\-ubjE)}(hnph]hnp}(hj-hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj\-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjX-ubah}(h]h ]h"]h$]h&]hhuh1jhj,hhhj,hKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj,hhhj,hKubah}(h]j,ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj,hKhj,hhubj>)}(hhh]jC)}(h/Find the platform_device associated with a nodeh]h/Find the platform_device associated with a node}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj-hhubah}(h]h ]h"]h$]h&]uh1j=hj,hhhj,hKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj-jbj-jcjdjeuh1j hhhjmhNhNubjg)}(h**Parameters** ``struct device_node *np`` Pointer to device tree node **Description** Takes a reference to the embedded struct device which needs to be dropped after use. **Return** platform_device pointer, or NULL if not foundh](jC)}(h**Parameters**h]jq)}(hj.h]h Parameters}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj.ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK hj-ubj)}(hhh]j)}(h7``struct device_node *np`` Pointer to device tree node h](j)}(h``struct device_node *np``h]j)}(hj".h]hstruct device_node *np}(hj$.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj .ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj.ubj)}(hhh]jC)}(hPointer to device tree nodeh]hPointer to device tree node}(hj;.hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj7.hKhj8.ubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhj7.hKhj.ubah}(h]h ]h"]h$]h&]uh1jhj-ubjC)}(h**Description**h]jq)}(hj].h]h Description}(hj_.hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj[.ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj-ubjC)}(hTTakes a reference to the embedded struct device which needs to be dropped after use.h]hTTakes a reference to the embedded struct device which needs to be dropped after use.}(hjs.hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj-ubjC)}(h **Return**h]jq)}(hj.h]hReturn}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj.ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK!hj-ubjC)}(h-platform_device pointer, or NULL if not foundh]h-platform_device pointer, or NULL if not found}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK"hj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_device_alloc (C function)c.of_device_allochNtauh1hhjmhhhNhNubj)}(hhh](j)}(hlstruct platform_device * of_device_alloc (struct device_node *np, const char *bus_id, struct device *parent)h]j)}(hjstruct platform_device *of_device_alloc(struct device_node *np, const char *bus_id, struct device *parent)h](j)}(hj"h]hstruct}(hj.hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj.hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK\ubj1)}(h h]h }(hj.hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.hhhj.hK\ubh)}(hhh]jE)}(hplatform_deviceh]hplatform_device}(hj.hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj.ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj.modnameN classnameNjbje)}jh]jk)}j^of_device_allocsbc.of_device_allocasbuh1hhj.hhhj.hK\ubj1)}(h h]h }(hj /hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.hhhj.hK\ubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.hhhj.hK\ubj)}(hof_device_alloch]jE)}(hj/h]hof_device_alloc}(hj(/hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj$/ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj.hhhj.hK\ubj)}(hC(struct device_node *np, const char *bus_id, struct device *parent)h](j)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hjC/hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj?/ubj1)}(h h]h }(hjP/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj?/ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hja/hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj^/ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjc/modnameN classnameNjbje)}jh]j/c.of_device_allocasbuh1hhj?/ubj1)}(h h]h }(hj/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj?/ubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?/ubjE)}(hnph]hnp}(hj/hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj?/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;/ubj)}(hconst char *bus_idh](j)}(hj\h]hconst}(hj/hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj/ubj1)}(h h]h }(hj/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/ubj)}(hcharh]hchar}(hj/hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj/ubj1)}(h h]h }(hj/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/ubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubjE)}(hbus_idh]hbus_id}(hj/hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;/ubj)}(hstruct device *parenth](j)}(hj"h]hstruct}(hj0hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj 0ubj1)}(h h]h }(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj 0ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj.0hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj+0ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj00modnameN classnameNjbje)}jh]j/c.of_device_allocasbuh1hhj 0ubj1)}(h h]h }(hjL0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj 0ubj)}(hjh]h*}(hjZ0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 0ubjE)}(hparenth]hparent}(hjg0hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj 0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;/ubeh}(h]h ]h"]h$]h&]hhuh1jhj.hhhj.hK\ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj.hhhj.hK\ubah}(h]j.ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj.hK\hj.hhubj>)}(hhh]jC)}(h$Allocate and initialize an of_deviceh]h$Allocate and initialize an of_device}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK\hj0hhubah}(h]h ]h"]h$]h&]uh1j=hj.hhhj.hK\ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj0jbj0jcjdjeuh1j hhhjmhNhNubjg)}(h**Parameters** ``struct device_node *np`` device node to assign to device ``const char *bus_id`` Name to assign to the device. May be null to use default name. ``struct device *parent`` Parent device.h](jC)}(h**Parameters**h]jq)}(hj0h]h Parameters}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj0ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK`hj0ubj)}(hhh](j)}(h;``struct device_node *np`` device node to assign to device h](j)}(h``struct device_node *np``h]j)}(hj0h]hstruct device_node *np}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK]hj0ubj)}(hhh]jC)}(hdevice node to assign to deviceh]hdevice node to assign to device}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj0hK]hj0ubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhj0hK]hj0ubj)}(hW``const char *bus_id`` Name to assign to the device. May be null to use default name. h](j)}(h``const char *bus_id``h]j)}(hj 1h]hconst char *bus_id}(hj 1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 1ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK^hj1ubj)}(hhh]jC)}(h?Name to assign to the device. May be null to use default name.h]h?Name to assign to the device. May be null to use default name.}(hj$1hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj 1hK^hj!1ubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhj 1hK^hj0ubj)}(h(``struct device *parent`` Parent device.h](j)}(h``struct device *parent``h]j)}(hjD1h]hstruct device *parent}(hjF1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB1ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK`hj>1ubj)}(hhh]jC)}(hParent device.h]hParent device.}(hj]1hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK_hjZ1ubah}(h]h ]h"]h$]h&]uh1jhj>1ubeh}(h]h ]h"]h$]h&]uh1jhjY1hK`hj0ubeh}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j &of_platform_device_create (C function)c.of_platform_device_createhNtauh1hhjmhhhNhNubj)}(hhh](j)}(hvstruct platform_device * of_platform_device_create (struct device_node *np, const char *bus_id, struct device *parent)h]j)}(htstruct platform_device *of_platform_device_create(struct device_node *np, const char *bus_id, struct device *parent)h](j)}(hj"h]hstruct}(hj1hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj1hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKubj1)}(h h]h }(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1hhhj1hKubh)}(hhh]jE)}(hplatform_deviceh]hplatform_device}(hj1hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj1ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj1modnameN classnameNjbje)}jh]jk)}j^of_platform_device_createsbc.of_platform_device_createasbuh1hhj1hhhj1hKubj1)}(h h]h }(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1hhhj1hKubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1hhhj1hKubj)}(hof_platform_device_createh]jE)}(hj1h]hof_platform_device_create}(hj1hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj1ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj1hhhj1hKubj)}(hC(struct device_node *np, const char *bus_id, struct device *parent)h](j)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hj2hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj2ubj1)}(h h]h }(hj%2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj62hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj32ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj82modnameN classnameNjbje)}jh]j1c.of_platform_device_createasbuh1hhj2ubj1)}(h h]h }(hjT2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2ubj)}(hjh]h*}(hjb2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubjE)}(hnph]hnp}(hjo2hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubj)}(hconst char *bus_idh](j)}(hj\h]hconst}(hj2hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj2ubj1)}(h h]h }(hj2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2ubj)}(hcharh]hchar}(hj2hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj2ubj1)}(h h]h }(hj2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2ubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubjE)}(hbus_idh]hbus_id}(hj2hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubj)}(hstruct device *parenth](j)}(hj"h]hstruct}(hj2hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj2ubj1)}(h h]h }(hj2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj3hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj3ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj3modnameN classnameNjbje)}jh]j1c.of_platform_device_createasbuh1hhj2ubj1)}(h h]h }(hj!3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2ubj)}(hjh]h*}(hj/3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubjE)}(hparenth]hparent}(hj<3hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubeh}(h]h ]h"]h$]h&]hhuh1jhj1hhhj1hKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj1hhhj1hKubah}(h]j1ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj1hKhj1hhubj>)}(hhh]jC)}(h+Alloc, initialize and register an of_deviceh]h+Alloc, initialize and register an of_device}(hjf3hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhjc3hhubah}(h]h ]h"]h$]h&]uh1j=hj1hhhj1hKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj~3jbj~3jcjdjeuh1j hhhjmhNhNubjg)}(hXG**Parameters** ``struct device_node *np`` pointer to node to create device for ``const char *bus_id`` name to assign device ``struct device *parent`` Linux device model parent device. **Return** Pointer to created platform device, or NULL if a device was not registered. Unavailable devices will not get registered.h](jC)}(h**Parameters**h]jq)}(hj3h]h Parameters}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj3ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj3ubj)}(hhh](j)}(h@``struct device_node *np`` pointer to node to create device for h](j)}(h``struct device_node *np``h]j)}(hj3h]hstruct device_node *np}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj3ubj)}(hhh]jC)}(h$pointer to node to create device forh]h$pointer to node to create device for}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj3hKhj3ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jhj3hKhj3ubj)}(h-``const char *bus_id`` name to assign device h](j)}(h``const char *bus_id``h]j)}(hj3h]hconst char *bus_id}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj3ubj)}(hhh]jC)}(hname to assign deviceh]hname to assign device}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj3hKhj3ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jhj3hKhj3ubj)}(h<``struct device *parent`` Linux device model parent device. h](j)}(h``struct device *parent``h]j)}(hj4h]hstruct device *parent}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj4ubj)}(hhh]jC)}(h!Linux device model parent device.h]h!Linux device model parent device.}(hj24hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj.4hKhj/4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhj.4hKhj3ubeh}(h]h ]h"]h$]h&]uh1jhj3ubjC)}(h **Return**h]jq)}(hjT4h]hReturn}(hjV4hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjR4ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj3ubjC)}(hyPointer to created platform device, or NULL if a device was not registered. Unavailable devices will not get registered.h]hyPointer to created platform device, or NULL if a device was not registered. Unavailable devices will not get registered.}(hjj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j "of_platform_bus_probe (C function)c.of_platform_bus_probehNtauh1hhjmhhhNhNubj)}(hhh](j)}(hoint of_platform_bus_probe (struct device_node *root, const struct of_device_id *matches, struct device *parent)h]j)}(hnint of_platform_bus_probe(struct device_node *root, const struct of_device_id *matches, struct device *parent)h](j)}(hinth]hint}(hj4hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj4hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMubj1)}(h h]h }(hj4hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4hhhj4hMubj)}(hof_platform_bus_probeh]jE)}(hof_platform_bus_probeh]hof_platform_bus_probe}(hj4hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj4hhhj4hMubj)}(hU(struct device_node *root, const struct of_device_id *matches, struct device *parent)h](j)}(hstruct device_node *rooth](j)}(hj"h]hstruct}(hj4hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj4ubj1)}(h h]h }(hj4hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj4hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj4modnameN classnameNjbje)}jh]jk)}j^j4sbc.of_platform_bus_probeasbuh1hhj4ubj1)}(h h]h }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4ubj)}(hjh]h*}(hj"5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubjE)}(hrooth]hroot}(hj/5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj4ubj)}(h"const struct of_device_id *matchesh](j)}(hj\h]hconst}(hjH5hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjD5ubj1)}(h h]h }(hjU5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjD5ubj)}(hj"h]hstruct}(hjc5hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjD5ubj1)}(h h]h }(hjp5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjD5ubh)}(hhh]jE)}(h of_device_idh]h of_device_id}(hj5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj~5ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj5modnameN classnameNjbje)}jh]j5c.of_platform_bus_probeasbuh1hhjD5ubj1)}(h h]h }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjD5ubj)}(hjh]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjD5ubjE)}(hmatchesh]hmatches}(hj5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjD5ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj4ubj)}(hstruct device *parenth](j)}(hj"h]hstruct}(hj5hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj5ubj1)}(h h]h }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj5ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj5modnameN classnameNjbje)}jh]j5c.of_platform_bus_probeasbuh1hhj5ubj1)}(h h]h }(hj6hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5ubj)}(hjh]h*}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubjE)}(hparenth]hparent}(hj*6hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj4ubeh}(h]h ]h"]h$]h&]hhuh1jhj4hhhj4hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj4hhhj4hMubah}(h]j4ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj4hMhj4hhubj>)}(hhh]jC)}(h(Probe the device-tree for platform busesh]h(Probe the device-tree for platform buses}(hjT6hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjQ6hhubah}(h]h ]h"]h$]h&]uh1j=hj4hhhj4hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajl6jbjl6jcjdjeuh1j hhhjmhNhNubjg)}(hX**Parameters** ``struct device_node *root`` parent of the first level to probe or NULL for the root of the tree ``const struct of_device_id *matches`` match table for bus nodes ``struct device *parent`` parent to hook devices from, NULL for toplevel **Description** Note that children of the provided root are not instantiated as devices unless the specified root itself matches the bus list and is not NULL.h](jC)}(h**Parameters**h]jq)}(hjv6h]h Parameters}(hjx6hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjt6ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjp6ubj)}(hhh](j)}(ha``struct device_node *root`` parent of the first level to probe or NULL for the root of the tree h](j)}(h``struct device_node *root``h]j)}(hj6h]hstruct device_node *root}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj6ubj)}(hhh]jC)}(hCparent of the first level to probe or NULL for the root of the treeh]hCparent of the first level to probe or NULL for the root of the tree}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhj6hMhj6ubj)}(hA``const struct of_device_id *matches`` match table for bus nodes h](j)}(h&``const struct of_device_id *matches``h]j)}(hj6h]h"const struct of_device_id *matches}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj6ubj)}(hhh]jC)}(hmatch table for bus nodesh]hmatch table for bus nodes}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhj6hMhj6ubj)}(hI``struct device *parent`` parent to hook devices from, NULL for toplevel h](j)}(h``struct device *parent``h]j)}(hj7h]hstruct device *parent}(hj 7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj7ubj)}(hhh]jC)}(h.parent to hook devices from, NULL for toplevelh]h.parent to hook devices from, NULL for toplevel}(hj 7hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhj7hMhj6ubeh}(h]h ]h"]h$]h&]uh1jhjp6ubjC)}(h**Description**h]jq)}(hjB7h]h Description}(hjD7hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj@7ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjp6ubjC)}(hNote that children of the provided root are not instantiated as devices unless the specified root itself matches the bus list and is not NULL.h]hNote that children of the provided root are not instantiated as devices unless the specified root itself matches the bus list and is not NULL.}(hjX7hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjp6ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !of_platform_populate (C function)c.of_platform_populatehNtauh1hhjmhhhNhNubj)}(hhh](j)}(hint of_platform_populate (struct device_node *root, const struct of_device_id *matches, const struct of_dev_auxdata *lookup, struct device *parent)h]j)}(hint of_platform_populate(struct device_node *root, const struct of_device_id *matches, const struct of_dev_auxdata *lookup, struct device *parent)h](j)}(hinth]hint}(hj7hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj7hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMubj1)}(h h]h }(hj7hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7hhhj7hMubj)}(hof_platform_populateh]jE)}(hof_platform_populateh]hof_platform_populate}(hj7hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj7ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj7hhhj7hMubj)}(hz(struct device_node *root, const struct of_device_id *matches, const struct of_dev_auxdata *lookup, struct device *parent)h](j)}(hstruct device_node *rooth](j)}(hj"h]hstruct}(hj7hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj7ubj1)}(h h]h }(hj7hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj7hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj7ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj7modnameN classnameNjbje)}jh]jk)}j^j7sbc.of_platform_populateasbuh1hhj7ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjE)}(hrooth]hroot}(hj8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubj)}(h"const struct of_device_id *matchesh](j)}(hj\h]hconst}(hj68hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj28ubj1)}(h h]h }(hjC8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj28ubj)}(hj"h]hstruct}(hjQ8hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj28ubj1)}(h h]h }(hj^8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj28ubh)}(hhh]jE)}(h of_device_idh]h of_device_id}(hjo8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjl8ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjq8modnameN classnameNjbje)}jh]j7c.of_platform_populateasbuh1hhj28ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj28ubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj28ubjE)}(hmatchesh]hmatches}(hj8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj28ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubj)}(h#const struct of_dev_auxdata *lookuph](j)}(hj\h]hconst}(hj8hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj8ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj8ubj)}(hj"h]hstruct}(hj8hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj8ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj8ubh)}(hhh]jE)}(hof_dev_auxdatah]hof_dev_auxdata}(hj8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj8ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj8modnameN classnameNjbje)}jh]j7c.of_platform_populateasbuh1hhj8ubj1)}(h h]h }(hj9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj8ubj)}(hjh]h*}(hj&9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubjE)}(hlookuph]hlookup}(hj39hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj8ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubj)}(hstruct device *parenth](j)}(hj"h]hstruct}(hjL9hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjH9ubj1)}(h h]h }(hjY9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjH9ubh)}(hhh]jE)}(hdeviceh]hdevice}(hjj9hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjg9ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjl9modnameN classnameNjbje)}jh]j7c.of_platform_populateasbuh1hhjH9ubj1)}(h h]h }(hj9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjH9ubj)}(hjh]h*}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjH9ubjE)}(hparenth]hparent}(hj9hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjH9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubeh}(h]h ]h"]h$]h&]hhuh1jhj7hhhj7hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj7hhhj7hMubah}(h]jz7ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj7hMhj|7hhubj>)}(hhh]jC)}(h/Populate platform_devices from device tree datah]h/Populate platform_devices from device tree data}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj9hhubah}(h]h ]h"]h$]h&]uh1j=hj|7hhhj7hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj9jbj9jcjdjeuh1j hhhjmhNhNubjg)}(hX**Parameters** ``struct device_node *root`` parent of the first level to probe or NULL for the root of the tree ``const struct of_device_id *matches`` match table, NULL to use the default ``const struct of_dev_auxdata *lookup`` auxdata table for matching id and platform_data with device nodes ``struct device *parent`` parent to hook devices from, NULL for toplevel **Description** Similar to of_platform_bus_probe(), this function walks the device tree and creates devices from nodes. It differs in that it follows the modern convention of requiring all device nodes to have a 'compatible' property, and it is suitable for creating devices which are children of the root node (of_platform_bus_probe will only create children of the root which are selected by the **matches** argument). New board support should be using this function instead of of_platform_bus_probe(). **Return** 0 on success, < 0 on failure.h](jC)}(h**Parameters**h]jq)}(hj9h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj9ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj9ubj)}(hhh](j)}(ha``struct device_node *root`` parent of the first level to probe or NULL for the root of the tree h](j)}(h``struct device_node *root``h]j)}(hj:h]hstruct device_node *root}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj :ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj:ubj)}(hhh]jC)}(hCparent of the first level to probe or NULL for the root of the treeh]hCparent of the first level to probe or NULL for the root of the tree}(hj':hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj#:hMhj$:ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhj#:hMhj:ubj)}(hL``const struct of_device_id *matches`` match table, NULL to use the default h](j)}(h&``const struct of_device_id *matches``h]j)}(hjG:h]h"const struct of_device_id *matches}(hjI:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE:ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjA:ubj)}(hhh]jC)}(h$match table, NULL to use the defaulth]h$match table, NULL to use the default}(hj`:hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj\:hMhj]:ubah}(h]h ]h"]h$]h&]uh1jhjA:ubeh}(h]h ]h"]h$]h&]uh1jhj\:hMhj:ubj)}(hj``const struct of_dev_auxdata *lookup`` auxdata table for matching id and platform_data with device nodes h](j)}(h'``const struct of_dev_auxdata *lookup``h]j)}(hj:h]h#const struct of_dev_auxdata *lookup}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~:ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjz:ubj)}(hhh]jC)}(hAauxdata table for matching id and platform_data with device nodesh]hAauxdata table for matching id and platform_data with device nodes}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj:hMhj:ubah}(h]h ]h"]h$]h&]uh1jhjz:ubeh}(h]h ]h"]h$]h&]uh1jhj:hMhj:ubj)}(hI``struct device *parent`` parent to hook devices from, NULL for toplevel h](j)}(h``struct device *parent``h]j)}(hj:h]hstruct device *parent}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj:ubj)}(hhh]jC)}(h.parent to hook devices from, NULL for toplevelh]h.parent to hook devices from, NULL for toplevel}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj:hMhj:ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhj:hMhj:ubeh}(h]h ]h"]h$]h&]uh1jhj9ubjC)}(h**Description**h]jq)}(hj:h]h Description}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj:ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj9ubjC)}(hXSimilar to of_platform_bus_probe(), this function walks the device tree and creates devices from nodes. It differs in that it follows the modern convention of requiring all device nodes to have a 'compatible' property, and it is suitable for creating devices which are children of the root node (of_platform_bus_probe will only create children of the root which are selected by the **matches** argument).h](hXSimilar to of_platform_bus_probe(), this function walks the device tree and creates devices from nodes. It differs in that it follows the modern convention of requiring all device nodes to have a ‘compatible’ property, and it is suitable for creating devices which are children of the root node (of_platform_bus_probe will only create children of the root which are selected by the }(hj ;hhhNhNubjq)}(h **matches**h]hmatches}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj ;ubh argument).}(hj ;hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj9ubjC)}(hSNew board support should be using this function instead of of_platform_bus_probe().h]hSNew board support should be using this function instead of of_platform_bus_probe().}(hj+;hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj9ubjC)}(h **Return**h]jq)}(hj<;h]hReturn}(hj>;hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj:;ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj9ubjC)}(h0 on success, < 0 on failure.h]h0 on success, < 0 on failure.}(hjR;hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #of_platform_depopulate (C function)c.of_platform_depopulatehNtauh1hhjmhhhNhNubj)}(hhh](j)}(h3void of_platform_depopulate (struct device *parent)h]j)}(h2void of_platform_depopulate(struct device *parent)h](j)}(hvoidh]hvoid}(hj;hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj};hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chM~ubj1)}(h h]h }(hj;hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj};hhhj;hM~ubj)}(hof_platform_depopulateh]jE)}(hof_platform_depopulateh]hof_platform_depopulate}(hj;hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj;ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj};hhhj;hM~ubj)}(h(struct device *parent)h]j)}(hstruct device *parenth](j)}(hj"h]hstruct}(hj;hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj;ubj1)}(h h]h }(hj;hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj;hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj;ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj;modnameN classnameNjbje)}jh]jk)}j^j;sbc.of_platform_depopulateasbuh1hhj;ubj1)}(h h]h }(hj;hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;ubj)}(hjh]h*}(hj <hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubjE)}(hparenth]hparent}(hj<hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubah}(h]h ]h"]h$]h&]hhuh1jhj};hhhj;hM~ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjy;hhhj;hM~ubah}(h]jt;ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj;hM~hjv;hhubj>)}(hhh]jC)}(h)Remove devices populated from device treeh]h)Remove devices populated from device tree}(hjA<hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chM~hj><hhubah}(h]h ]h"]h$]h&]uh1j=hjv;hhhj;hM~ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajY<jbjY<jcjdjeuh1j hhhjmhNhNubjg)}(hXe**Parameters** ``struct device *parent`` device which children will be removed **Description** Complementary to of_platform_populate(), this function removes children of the given device (and, recursively, their children) that have been created from their respective device tree nodes (and only those, leaving others - eg. manually created - unharmed).h](jC)}(h**Parameters**h]jq)}(hjc<h]h Parameters}(hje<hhhNhNubah}(h]h ]h"]h$]h&]uh1jphja<ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj]<ubj)}(hhh]j)}(h@``struct device *parent`` device which children will be removed h](j)}(h``struct device *parent``h]j)}(hj<h]hstruct device *parent}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj|<ubj)}(hhh]jC)}(h%device which children will be removedh]h%device which children will be removed}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj<hMhj<ubah}(h]h ]h"]h$]h&]uh1jhj|<ubeh}(h]h ]h"]h$]h&]uh1jhj<hMhjy<ubah}(h]h ]h"]h$]h&]uh1jhj]<ubjC)}(h**Description**h]jq)}(hj<h]h Description}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj<ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj]<ubjC)}(hXComplementary to of_platform_populate(), this function removes children of the given device (and, recursively, their children) that have been created from their respective device tree nodes (and only those, leaving others - eg. manually created - unharmed).h]hXComplementary to of_platform_populate(), this function removes children of the given device (and, recursively, their children) that have been created from their respective device tree nodes (and only those, leaving others - eg. manually created - unharmed).}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj]<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j &devm_of_platform_populate (C function)c.devm_of_platform_populatehNtauh1hhjmhhhNhNubj)}(hhh](j)}(h2int devm_of_platform_populate (struct device *dev)h]j)}(h1int devm_of_platform_populate(struct device *dev)h](j)}(hinth]hint}(hj=hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj<hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMubj1)}(h h]h }(hj=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj<hhhj=hMubj)}(hdevm_of_platform_populateh]jE)}(hdevm_of_platform_populateh]hdevm_of_platform_populate}(hj#=hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj=ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj<hhhj=hMubj)}(h(struct device *dev)h]j)}(hstruct device *devh](j)}(hj"h]hstruct}(hj?=hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj;=ubj1)}(h h]h }(hjL=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;=ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj]=hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZ=ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj_=modnameN classnameNjbje)}jh]jk)}j^j%=sbc.devm_of_platform_populateasbuh1hhj;=ubj1)}(h h]h }(hj}=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;=ubj)}(hjh]h*}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;=ubjE)}(hdevh]hdev}(hj=hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj;=ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7=ubah}(h]h ]h"]h$]h&]hhuh1jhj<hhhj=hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj<hhhj=hMubah}(h]j<ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj=hMhj<hhubj>)}(hhh]jC)}(h/Populate platform_devices from device tree datah]h/Populate platform_devices from device tree data}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj=hhubah}(h]h ]h"]h$]h&]uh1j=hj<hhhj=hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj=jbj=jcjdjeuh1j hhhjmhNhNubjg)}(hX**Parameters** ``struct device *dev`` device that requested to populate from device tree data **Description** Similar to of_platform_populate(), but will automatically call of_platform_depopulate() when the device is unbound from the bus. **Return** 0 on success, < 0 on failure.h](jC)}(h**Parameters**h]jq)}(hj=h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj=ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj=ubj)}(hhh]j)}(hO``struct device *dev`` device that requested to populate from device tree data h](j)}(h``struct device *dev``h]j)}(hj>h]hstruct device *dev}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj=ubj)}(hhh]jC)}(h7device that requested to populate from device tree datah]h7device that requested to populate from device tree data}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj>hMhj>ubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jhj>hMhj=ubah}(h]h ]h"]h$]h&]uh1jhj=ubjC)}(h**Description**h]jq)}(hj>>h]h Description}(hj@>hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj<>ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj=ubjC)}(hSimilar to of_platform_populate(), but will automatically call of_platform_depopulate() when the device is unbound from the bus.h]hSimilar to of_platform_populate(), but will automatically call of_platform_depopulate() when the device is unbound from the bus.}(hjT>hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj=ubjC)}(h **Return**h]jq)}(hje>h]hReturn}(hjg>hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjc>ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj=ubjC)}(h0 on success, < 0 on failure.h]h0 on success, < 0 on failure.}(hj{>hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j (devm_of_platform_depopulate (C function)c.devm_of_platform_depopulatehNtauh1hhjmhhhNhNubj)}(hhh](j)}(h5void devm_of_platform_depopulate (struct device *dev)h]j)}(h4void devm_of_platform_depopulate(struct device *dev)h](j)}(hvoidh]hvoid}(hj>hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj>hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMubj1)}(h h]h }(hj>hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>hhhj>hMubj)}(hdevm_of_platform_depopulateh]jE)}(hdevm_of_platform_depopulateh]hdevm_of_platform_depopulate}(hj>hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj>ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj>hhhj>hMubj)}(h(struct device *dev)h]j)}(hstruct device *devh](j)}(hj"h]hstruct}(hj>hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj>ubj1)}(h h]h }(hj>hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj?hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj?ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj?modnameN classnameNjbje)}jh]jk)}j^j>sbc.devm_of_platform_depopulateasbuh1hhj>ubj1)}(h h]h }(hj%?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>ubj)}(hjh]h*}(hj3?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubjE)}(hdevh]hdev}(hj@?hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj>ubah}(h]h ]h"]h$]h&]hhuh1jhj>hhhj>hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj>hhhj>hMubah}(h]j>ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj>hMhj>hhubj>)}(hhh]jC)}(h)Remove devices populated from device treeh]h)Remove devices populated from device tree}(hjj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjg?hhubah}(h]h ]h"]h$]h&]uh1j=hj>hhhj>hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj?jbj?jcjdjeuh1j hhhjmhNhNubjg)}(hX{**Parameters** ``struct device *dev`` device that requested to depopulate from device tree data **Description** Complementary to devm_of_platform_populate(), this function removes children of the given device (and, recursively, their children) that have been created from their respective device tree nodes (and only those, leaving others - eg. manually created - unharmed).h](jC)}(h**Parameters**h]jq)}(hj?h]h Parameters}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj?ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj?ubj)}(hhh]j)}(hQ``struct device *dev`` device that requested to depopulate from device tree data h](j)}(h``struct device *dev``h]j)}(hj?h]hstruct device *dev}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj?ubj)}(hhh]jC)}(h9device that requested to depopulate from device tree datah]h9device that requested to depopulate from device tree data}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jhj?ubjC)}(h**Description**h]jq)}(hj?h]h Description}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj?ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj?ubjC)}(hXComplementary to devm_of_platform_populate(), this function removes children of the given device (and, recursively, their children) that have been created from their respective device tree nodes (and only those, leaving others - eg. manually created - unharmed).h]hXComplementary to devm_of_platform_populate(), this function removes children of the given device (and, recursively, their children) that have been created from their respective device tree nodes (and only those, leaving others - eg. manually created - unharmed).}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjmhhhNhNubeh}(h]driver-model-functionsah ]h"]driver model functionsah$]h&]uh1hhhhhhhhK!ubh)}(hhh](h)}(h Overlay and Dynamic DT functionsh]h Overlay and Dynamic DT functions}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hhhhhK0ubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j  of_resolve_phandles (C function)c.of_resolve_phandleshNtauh1hhj@hhhNhNubj)}(hhh](j)}(h5int of_resolve_phandles (struct device_node *overlay)h]j)}(h4int of_resolve_phandles(struct device_node *overlay)h](j)}(hinth]hint}(hjD@hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj@@hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKubj1)}(h h]h }(hjS@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj@@hhhjR@hKubj)}(hof_resolve_phandlesh]jE)}(hof_resolve_phandlesh]hof_resolve_phandles}(hje@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhja@ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj@@hhhjR@hKubj)}(h(struct device_node *overlay)h]j)}(hstruct device_node *overlayh](j)}(hj"h]hstruct}(hj@hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj}@ubj1)}(h h]h }(hj@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj}@ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj@ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj@modnameN classnameNjbje)}jh]jk)}j^jg@sbc.of_resolve_phandlesasbuh1hhj}@ubj1)}(h h]h }(hj@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj}@ubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}@ubjE)}(hoverlayh]hoverlay}(hj@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj}@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjy@ubah}(h]h ]h"]h$]h&]hhuh1jhj@@hhhjR@hKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj<@hhhjR@hKubah}(h]j7@ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjR@hKhj9@hhubj>)}(hhh]jC)}(h.Relocate and resolve overlay against live treeh]h.Relocate and resolve overlay against live tree}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhjAhhubah}(h]h ]h"]h$]h&]uh1j=hj9@hhhjR@hKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajAjbjAjcjdjeuh1j hhhj@hNhNubjg)}(hX**Parameters** ``struct device_node *overlay`` Pointer to devicetree overlay to relocate and resolve **Description** Modify (relocate) values of local phandles in **overlay** to a range that does not conflict with the live expanded devicetree. Update references to the local phandles in **overlay**. Update (resolve) phandle references in **overlay** that refer to the live expanded devicetree. Phandle values in the live tree are in the range of 1 .. live_tree_max_phandle(). The range of phandle values in the overlay also begin with at 1. Adjust the phandle values in the overlay to begin at live_tree_max_phandle() + 1. Update references to the phandles to the adjusted phandle values. The name of each property in the "__fixups__" node in the overlay matches the name of a symbol (a label) in the live tree. The values of each property in the "__fixups__" node is a list of the property values in the overlay that need to be updated to contain the phandle reference corresponding to that symbol in the live tree. Update the references in the overlay with the phandle values in the live tree. **overlay** must be detached. Resolving and applying **overlay** to the live expanded devicetree must be protected by a mechanism to ensure that multiple overlays are processed in a single threaded manner so that multiple overlays will not relocate phandles to overlapping ranges. The mechanism to enforce this is not yet implemented. **Return** ``0`` on success or a negative error value on error.h](jC)}(h**Parameters**h]jq)}(hj&Ah]h Parameters}(hj(AhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj$Aubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj Aubj)}(hhh]j)}(hV``struct device_node *overlay`` Pointer to devicetree overlay to relocate and resolve h](j)}(h``struct device_node *overlay``h]j)}(hjEAh]hstruct device_node *overlay}(hjGAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCAubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj?Aubj)}(hhh]jC)}(h5Pointer to devicetree overlay to relocate and resolveh]h5Pointer to devicetree overlay to relocate and resolve}(hj^AhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjZAhKhj[Aubah}(h]h ]h"]h$]h&]uh1jhj?Aubeh}(h]h ]h"]h$]h&]uh1jhjZAhKhj)}(hhh]jC)}(hIncrement refcount of a nodeh]hIncrement refcount of a node}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chKhjChhubah}(h]h ]h"]h$]h&]uh1j=hjBhhhjBhKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajCjbjCjcjdjeuh1j hhhj@hNhNubjg)}(h**Parameters** ``struct device_node *node`` Node to inc refcount, NULL is supported to simplify writing of callers **Return** The node with refcount incremented.h](jC)}(h**Parameters**h]jq)}(hjCh]h Parameters}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jphjCubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK hjCubj)}(hhh]j)}(hd``struct device_node *node`` Node to inc refcount, NULL is supported to simplify writing of callers h](j)}(h``struct device_node *node``h]j)}(hjCh]hstruct device_node *node}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chKhjCubj)}(hhh]jC)}(hFNode to inc refcount, NULL is supported to simplify writing of callersh]hFNode to inc refcount, NULL is supported to simplify writing of callers}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chKhjCubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhjChKhjCubah}(h]h ]h"]h$]h&]uh1jhjCubjC)}(h **Return**h]jq)}(hjDh]hReturn}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjDubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK hjCubjC)}(h#The node with refcount incremented.h]h#The node with refcount incremented.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK hjCubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_node_put (C function) c.of_node_puthNtauh1hhj@hhhNhNubj)}(hhh](j)}(h+void of_node_put (struct device_node *node)h]j)}(h*void of_node_put(struct device_node *node)h](j)}(hvoidh]hvoid}(hjIDhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjEDhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK+ubj1)}(h h]h }(hjXDhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjEDhhhjWDhK+ubj)}(h of_node_puth]jE)}(h of_node_puth]h of_node_put}(hjjDhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjfDubah}(h]h ](jjeh"]h$]h&]hhuh1jhjEDhhhjWDhK+ubj)}(h(struct device_node *node)h]j)}(hstruct device_node *nodeh](j)}(hj"h]hstruct}(hjDhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjDubj1)}(h h]h }(hjDhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjDhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjDubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjDmodnameN classnameNjbje)}jh]jk)}j^jlDsb c.of_node_putasbuh1hhjDubj1)}(h h]h }(hjDhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubjE)}(hnodeh]hnode}(hjDhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjDubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj~Dubah}(h]h ]h"]h$]h&]hhuh1jhjEDhhhjWDhK+ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjADhhhjWDhK+ubah}(h]jDhhubj>)}(hhh]jC)}(hDecrement refcount of a nodeh]hDecrement refcount of a node}(hj EhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK+hjEhhubah}(h]h ]h"]h$]h&]uh1j=hj>DhhhjWDhK+ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj!Ejbj!Ejcjdjeuh1j hhhj@hNhNubjg)}(hw**Parameters** ``struct device_node *node`` Node to dec refcount, NULL is supported to simplify writing of callersh](jC)}(h**Parameters**h]jq)}(hj+Eh]h Parameters}(hj-EhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj)Eubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK/hj%Eubj)}(hhh]j)}(hc``struct device_node *node`` Node to dec refcount, NULL is supported to simplify writing of callersh](j)}(h``struct device_node *node``h]j)}(hjJEh]hstruct device_node *node}(hjLEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHEubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK,hjDEubj)}(hhh]jC)}(hFNode to dec refcount, NULL is supported to simplify writing of callersh]hFNode to dec refcount, NULL is supported to simplify writing of callers}(hjcEhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj_EhK,hj`Eubah}(h]h ]h"]h$]h&]uh1jhjDEubeh}(h]h ]h"]h$]h&]uh1jhj_EhK,hjAEubah}(h]h ]h"]h$]h&]uh1jhj%Eubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_detach_node (C function)c.of_detach_nodehNtauh1hhj@hhhNhNubj)}(hhh](j)}(h+int of_detach_node (struct device_node *np)h]j)}(h*int of_detach_node(struct device_node *np)h](j)}(hinth]hint}(hjEhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjEhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM-ubj1)}(h h]h }(hjEhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjEhhhjEhM-ubj)}(hof_detach_nodeh]jE)}(hof_detach_nodeh]hof_detach_node}(hjEhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjEubah}(h]h ](jjeh"]h$]h&]hhuh1jhjEhhhjEhM-ubj)}(h(struct device_node *np)h]j)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hjEhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjEubj1)}(h h]h }(hjEhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjEubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjEhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjEubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjFmodnameN classnameNjbje)}jh]jk)}j^jEsbc.of_detach_nodeasbuh1hhjEubj1)}(h h]h }(hjFhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjEubj)}(hjh]h*}(hj,FhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubjE)}(hnph]hnp}(hj9FhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjEubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjEubah}(h]h ]h"]h$]h&]hhuh1jhjEhhhjEhM-ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjEhhhjEhM-ubah}(h]jEah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjEhM-hjEhhubj>)}(hhh]jC)}(h%"Unplug" a node from the device tree.h]h)“Unplug” a node from the device tree.}(hjcFhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM-hj`Fhhubah}(h]h ]h"]h$]h&]uh1j=hjEhhhjEhM-ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj{Fjbj{Fjcjdjeuh1j hhhj@hNhNubjg)}(hP**Parameters** ``struct device_node *np`` Pointer to the caller's Device Nodeh](jC)}(h**Parameters**h]jq)}(hjFh]h Parameters}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjFubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM1hjFubj)}(hhh]j)}(h>``struct device_node *np`` Pointer to the caller's Device Nodeh](j)}(h``struct device_node *np``h]j)}(hjFh]hstruct device_node *np}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM3hjFubj)}(hhh]jC)}(h#Pointer to the caller's Device Nodeh]h%Pointer to the caller’s Device Node}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM.hjFubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjFhM3hjFubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j %of_changeset_create_node (C function)c.of_changeset_create_nodehNtauh1hhj@hhhNhNubj)}(hhh](j)}(h{struct device_node * of_changeset_create_node (struct of_changeset *ocs, struct device_node *parent, const char *full_name)h]j)}(hystruct device_node *of_changeset_create_node(struct of_changeset *ocs, struct device_node *parent, const char *full_name)h](j)}(hj"h]hstruct}(hjFhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjFhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj1)}(h h]h }(hj GhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjFhhhj GhMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjGhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjGubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjGmodnameN classnameNjbje)}jh]jk)}j^of_changeset_create_nodesbc.of_changeset_create_nodeasbuh1hhjFhhhj GhMubj1)}(h h]h }(hj>GhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjFhhhj GhMubj)}(hjh]h*}(hjLGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFhhhj GhMubj)}(hof_changeset_create_nodeh]jE)}(hj;Gh]hof_changeset_create_node}(hj]GhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjYGubah}(h]h ](jjeh"]h$]h&]hhuh1jhjFhhhj GhMubj)}(hM(struct of_changeset *ocs, struct device_node *parent, const char *full_name)h](j)}(hstruct of_changeset *ocsh](j)}(hj"h]hstruct}(hjxGhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjtGubj1)}(h h]h }(hjGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjtGubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hjGhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjGubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjGmodnameN classnameNjbje)}jh]j9Gc.of_changeset_create_nodeasbuh1hhjtGubj1)}(h h]h }(hjGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjtGubj)}(hjh]h*}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtGubjE)}(hocsh]hocs}(hjGhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjtGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjpGubj)}(hstruct device_node *parenth](j)}(hj"h]hstruct}(hjGhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjGubj1)}(h h]h }(hjGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjHhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjHubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjHmodnameN classnameNjbje)}jh]j9Gc.of_changeset_create_nodeasbuh1hhjGubj1)}(h h]h }(hj$HhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubj)}(hjh]h*}(hj2HhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubjE)}(hparenth]hparent}(hj?HhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjpGubj)}(hconst char *full_nameh](j)}(hj\h]hconst}(hjXHhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjTHubj1)}(h h]h }(hjeHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTHubj)}(hcharh]hchar}(hjsHhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjTHubj1)}(h h]h }(hjHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTHubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTHubjE)}(h full_nameh]h full_name}(hjHhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjTHubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjpGubeh}(h]h ]h"]h$]h&]hhuh1jhjFhhhj GhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjFhhhj GhMubah}(h]jFah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj GhMhjFhhubj>)}(hhh]jC)}(hADynamically create a device node and attach to a given changeset.h]hADynamically create a device node and attach to a given changeset.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjHhhubah}(h]h ]h"]h$]h&]uh1j=hjFhhhj GhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajHjbjHjcjdjeuh1j hhhj@hNhNubjg)}(h**Parameters** ``struct of_changeset *ocs`` Pointer to changeset ``struct device_node *parent`` Pointer to parent device node ``const char *full_name`` Node full name **Return** Pointer to the created device node or NULL in case of an error.h](jC)}(h**Parameters**h]jq)}(hjHh]h Parameters}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjHubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjHubj)}(hhh](j)}(h2``struct of_changeset *ocs`` Pointer to changeset h](j)}(h``struct of_changeset *ocs``h]j)}(hjIh]hstruct of_changeset *ocs}(hj IhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjIubj)}(hhh]jC)}(hPointer to changeseth]hPointer to changeset}(hj IhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjIhMhjIubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjHubj)}(h=``struct device_node *parent`` Pointer to parent device node h](j)}(h``struct device_node *parent``h]j)}(hj@Ih]hstruct device_node *parent}(hjBIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>Iubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj:Iubj)}(hhh]jC)}(hPointer to parent device nodeh]hPointer to parent device node}(hjYIhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjUIhMhjVIubah}(h]h ]h"]h$]h&]uh1jhj:Iubeh}(h]h ]h"]h$]h&]uh1jhjUIhMhjHubj)}(h)``const char *full_name`` Node full name h](j)}(h``const char *full_name``h]j)}(hjyIh]hconst char *full_name}(hj{IhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwIubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjsIubj)}(hhh]jC)}(hNode full nameh]hNode full name}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjIhMhjIubah}(h]h ]h"]h$]h&]uh1jhjsIubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjHubeh}(h]h ]h"]h$]h&]uh1jhjHubjC)}(h **Return**h]jq)}(hjIh]hReturn}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjIubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjHubjC)}(h?Pointer to the created device node or NULL in case of an error.h]h?Pointer to the created device node or NULL in case of an error.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjHubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_changeset_init (C function)c.of_changeset_inithNtauh1hhj@hhhNhNubj)}(hhh](j)}(h1void of_changeset_init (struct of_changeset *ocs)h]j)}(h0void of_changeset_init(struct of_changeset *ocs)h](j)}(hvoidh]hvoid}(hjIhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjIhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj1)}(h h]h }(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjIhhhjJhMubj)}(hof_changeset_inith]jE)}(hof_changeset_inith]hof_changeset_init}(hjJhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjJubah}(h]h ](jjeh"]h$]h&]hhuh1jhjIhhhjJhMubj)}(h(struct of_changeset *ocs)h]j)}(hstruct of_changeset *ocsh](j)}(hj"h]hstruct}(hj6JhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj2Jubj1)}(h h]h }(hjCJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2Jubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hjTJhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQJubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjVJmodnameN classnameNjbje)}jh]jk)}j^jJsbc.of_changeset_initasbuh1hhj2Jubj1)}(h h]h }(hjtJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2Jubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2JubjE)}(hocsh]hocs}(hjJhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj2Jubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.Jubah}(h]h ]h"]h$]h&]hhuh1jhjIhhhjJhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjIhhhjJhMubah}(h]jIah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjJhMhjIhhubj>)}(hhh]jC)}(hInitialize a changeset for useh]hInitialize a changeset for use}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjJhhubah}(h]h ]h"]h$]h&]uh1j=hjIhhhjJhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajJjbjJjcjdjeuh1j hhhj@hNhNubjg)}(hs**Parameters** ``struct of_changeset *ocs`` changeset pointer **Description** Initialize a changeset structureh](jC)}(h**Parameters**h]jq)}(hjJh]h Parameters}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjJubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjJubj)}(hhh]j)}(h/``struct of_changeset *ocs`` changeset pointer h](j)}(h``struct of_changeset *ocs``h]j)}(hjJh]hstruct of_changeset *ocs}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjJubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjKhMhjKubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jhjKhMhjJubah}(h]h ]h"]h$]h&]uh1jhjJubjC)}(h**Description**h]jq)}(hj5Kh]h Description}(hj7KhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj3Kubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjJubjC)}(h Initialize a changeset structureh]h Initialize a changeset structure}(hjKKhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjJubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !of_changeset_destroy (C function)c.of_changeset_destroyhNtauh1hhj@hhhNhNubj)}(hhh](j)}(h4void of_changeset_destroy (struct of_changeset *ocs)h]j)}(h3void of_changeset_destroy(struct of_changeset *ocs)h](j)}(hvoidh]hvoid}(hjzKhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjvKhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj1)}(h h]h }(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjvKhhhjKhMubj)}(hof_changeset_destroyh]jE)}(hof_changeset_destroyh]hof_changeset_destroy}(hjKhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjKubah}(h]h ](jjeh"]h$]h&]hhuh1jhjvKhhhjKhMubj)}(h(struct of_changeset *ocs)h]j)}(hstruct of_changeset *ocsh](j)}(hj"h]hstruct}(hjKhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjKubj1)}(h h]h }(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjKubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hjKhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjKubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjKmodnameN classnameNjbje)}jh]jk)}j^jKsbc.of_changeset_destroyasbuh1hhjKubj1)}(h h]h }(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjKubj)}(hjh]h*}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubjE)}(hocsh]hocs}(hjLhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjKubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjKubah}(h]h ]h"]h$]h&]hhuh1jhjvKhhhjKhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjrKhhhjKhMubah}(h]jmKah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjKhMhjoKhhubj>)}(hhh]jC)}(hDestroy a changeseth]hDestroy a changeset}(hj:LhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj7Lhhubah}(h]h ]h"]h$]h&]uh1j=hjoKhhhjKhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajRLjbjRLjcjdjeuh1j hhhj@hNhNubjg)}(h**Parameters** ``struct of_changeset *ocs`` changeset pointer **Description** Destroys a changeset. Note that if a changeset is applied, its changes to the tree cannot be reverted.h](jC)}(h**Parameters**h]jq)}(hj\Lh]h Parameters}(hj^LhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjZLubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjVLubj)}(hhh]j)}(h/``struct of_changeset *ocs`` changeset pointer h](j)}(h``struct of_changeset *ocs``h]j)}(hj{Lh]hstruct of_changeset *ocs}(hj}LhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyLubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjuLubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjLhMhjLubah}(h]h ]h"]h$]h&]uh1jhjuLubeh}(h]h ]h"]h$]h&]uh1jhjLhMhjrLubah}(h]h ]h"]h$]h&]uh1jhjVLubjC)}(h**Description**h]jq)}(hjLh]h Description}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjLubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjVLubjC)}(hfDestroys a changeset. Note that if a changeset is applied, its changes to the tree cannot be reverted.h]hfDestroys a changeset. Note that if a changeset is applied, its changes to the tree cannot be reverted.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjVLubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_changeset_apply (C function)c.of_changeset_applyhNtauh1hhj@hhhNhNubj)}(hhh](j)}(h1int of_changeset_apply (struct of_changeset *ocs)h]j)}(h0int of_changeset_apply(struct of_changeset *ocs)h](j)}(hinth]hint}(hjLhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjLhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM ubj1)}(h h]h }(hj MhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjLhhhj MhM ubj)}(hof_changeset_applyh]jE)}(hof_changeset_applyh]hof_changeset_apply}(hjMhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjMubah}(h]h ](jjeh"]h$]h&]hhuh1jhjLhhhj MhM ubj)}(h(struct of_changeset *ocs)h]j)}(hstruct of_changeset *ocsh](j)}(hj"h]hstruct}(hj8MhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj4Mubj1)}(h h]h }(hjEMhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4Mubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hjVMhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjSMubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjXMmodnameN classnameNjbje)}jh]jk)}j^jMsbc.of_changeset_applyasbuh1hhj4Mubj1)}(h h]h }(hjvMhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4Mubj)}(hjh]h*}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4MubjE)}(hocsh]hocs}(hjMhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4Mubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0Mubah}(h]h ]h"]h$]h&]hhuh1jhjLhhhj MhM ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjLhhhj MhM ubah}(h]jLah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj MhM hjLhhubj>)}(hhh]jC)}(hApplies a changeseth]hApplies a changeset}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM hjMhhubah}(h]h ]h"]h$]h&]uh1j=hjLhhhj MhM ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajMjbjMjcjdjeuh1j hhhj@hNhNubjg)}(hX**Parameters** ``struct of_changeset *ocs`` changeset pointer **Description** Applies a changeset to the live tree. Any side-effects of live tree state changes are applied here on success, like creation/destruction of devices and side-effects like creation of sysfs properties and directories. **Return** 0 on success, a negative error value in case of an error. On error the partially applied effects are reverted.h](jC)}(h**Parameters**h]jq)}(hjMh]h Parameters}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjMubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjMubj)}(hhh]j)}(h/``struct of_changeset *ocs`` changeset pointer h](j)}(h``struct of_changeset *ocs``h]j)}(hjMh]hstruct of_changeset *ocs}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM hjMubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjNhM hjNubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jhjNhM hjMubah}(h]h ]h"]h$]h&]uh1jhjMubjC)}(h**Description**h]jq)}(hj7Nh]h Description}(hj9NhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj5Nubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjMubjC)}(hApplies a changeset to the live tree. Any side-effects of live tree state changes are applied here on success, like creation/destruction of devices and side-effects like creation of sysfs properties and directories.h]hApplies a changeset to the live tree. Any side-effects of live tree state changes are applied here on success, like creation/destruction of devices and side-effects like creation of sysfs properties and directories.}(hjMNhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjMubjC)}(h **Return**h]jq)}(hj^Nh]hReturn}(hj`NhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj\Nubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjMubjC)}(hn0 on success, a negative error value in case of an error. On error the partially applied effects are reverted.h]hn0 on success, a negative error value in case of an error. On error the partially applied effects are reverted.}(hjtNhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjMubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j  of_changeset_revert (C function)c.of_changeset_reverthNtauh1hhj@hhhNhNubj)}(hhh](j)}(h2int of_changeset_revert (struct of_changeset *ocs)h]j)}(h1int of_changeset_revert(struct of_changeset *ocs)h](j)}(hinth]hint}(hjNhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjNhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMjubj1)}(h h]h }(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNhhhjNhMjubj)}(hof_changeset_reverth]jE)}(hof_changeset_reverth]hof_changeset_revert}(hjNhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjNubah}(h]h ](jjeh"]h$]h&]hhuh1jhjNhhhjNhMjubj)}(h(struct of_changeset *ocs)h]j)}(hstruct of_changeset *ocsh](j)}(hj"h]hstruct}(hjNhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjNubj1)}(h h]h }(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hjNhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjNubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjOmodnameN classnameNjbje)}jh]jk)}j^jNsbc.of_changeset_revertasbuh1hhjNubj1)}(h h]h }(hjOhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubj)}(hjh]h*}(hj,OhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubjE)}(hocsh]hocs}(hj9OhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubah}(h]h ]h"]h$]h&]hhuh1jhjNhhhjNhMjubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjNhhhjNhMjubah}(h]jNah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjNhMjhjNhhubj>)}(hhh]jC)}(hReverts an applied changeseth]hReverts an applied changeset}(hjcOhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMjhj`Ohhubah}(h]h ]h"]h$]h&]uh1j=hjNhhhjNhMjubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj{Ojbj{Ojcjdjeuh1j hhhj@hNhNubjg)}(hXg**Parameters** ``struct of_changeset *ocs`` changeset pointer **Description** Reverts a changeset returning the state of the tree to what it was before the application. Any side-effects like creation/destruction of devices and removal of sysfs properties and directories are applied. **Return** 0 on success, a negative error value in case of an error.h](jC)}(h**Parameters**h]jq)}(hjOh]h Parameters}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjOubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMnhjOubj)}(hhh]j)}(h/``struct of_changeset *ocs`` changeset pointer h](j)}(h``struct of_changeset *ocs``h]j)}(hjOh]hstruct of_changeset *ocs}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMlhjOubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjOhMlhjOubah}(h]h ]h"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]uh1jhjOhMlhjOubah}(h]h ]h"]h$]h&]uh1jhjOubjC)}(h**Description**h]jq)}(hjOh]h Description}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjOubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMnhjOubjC)}(hReverts a changeset returning the state of the tree to what it was before the application. Any side-effects like creation/destruction of devices and removal of sysfs properties and directories are applied.h]hReverts a changeset returning the state of the tree to what it was before the application. Any side-effects like creation/destruction of devices and removal of sysfs properties and directories are applied.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMmhjOubjC)}(h **Return**h]jq)}(hjPh]hReturn}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjPubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMrhjOubjC)}(h90 on success, a negative error value in case of an error.h]h90 on success, a negative error value in case of an error.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMshjOubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j  of_changeset_action (C function)c.of_changeset_actionhNtauh1hhj@hhhNhNubj)}(hhh](j)}(hwint of_changeset_action (struct of_changeset *ocs, unsigned long action, struct device_node *np, struct property *prop)h]j)}(hvint of_changeset_action(struct of_changeset *ocs, unsigned long action, struct device_node *np, struct property *prop)h](j)}(hinth]hint}(hjKPhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjGPhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj1)}(h h]h }(hjZPhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGPhhhjYPhMubj)}(hof_changeset_actionh]jE)}(hof_changeset_actionh]hof_changeset_action}(hjlPhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjhPubah}(h]h ](jjeh"]h$]h&]hhuh1jhjGPhhhjYPhMubj)}(h_(struct of_changeset *ocs, unsigned long action, struct device_node *np, struct property *prop)h](j)}(hstruct of_changeset *ocsh](j)}(hj"h]hstruct}(hjPhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjPubj1)}(h h]h }(hjPhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hjPhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjPmodnameN classnameNjbje)}jh]jk)}j^jnPsbc.of_changeset_actionasbuh1hhjPubj1)}(h h]h }(hjPhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubj)}(hjh]h*}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubjE)}(hocsh]hocs}(hjPhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hunsigned long actionh](j)}(hunsignedh]hunsigned}(hjPhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjPubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubj)}(hlongh]hlong}(hjQhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjPubj1)}(h h]h }(hj$QhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubjE)}(hactionh]haction}(hj2QhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hjKQhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjGQubj1)}(h h]h }(hjXQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGQubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjiQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjfQubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjkQmodnameN classnameNjbje)}jh]jPc.of_changeset_actionasbuh1hhjGQubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGQubj)}(hjh]h*}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGQubjE)}(hnph]hnp}(hjQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjGQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hstruct property *proph](j)}(hj"h]hstruct}(hjQhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjQubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubh)}(hhh]jE)}(hpropertyh]hproperty}(hjQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjQmodnameN classnameNjbje)}jh]jPc.of_changeset_actionasbuh1hhjQubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubj)}(hjh]h*}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubjE)}(hproph]hprop}(hjRhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubeh}(h]h ]h"]h$]h&]hhuh1jhjGPhhhjYPhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjCPhhhjYPhMubah}(h]j>Pah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjYPhMhj@Phhubj>)}(hhh]jC)}(h/Add an action to the tail of the changeset listh]h/Add an action to the tail of the changeset list}(hjSubah}(h]h ]h"]h$]h&]uh1jhj"Subeh}(h]h ]h"]h$]h&]uh1jhj=ShMhjtRubeh}(h]h ]h"]h$]h&]uh1jhjXRubjC)}(h**Description**h]jq)}(hjcSh]h Description}(hjeShhhNhNubah}(h]h ]h"]h$]h&]uh1jphjaSubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjXRubjC)}(hOn action being one of: + OF_RECONFIG_ATTACH_NODE + OF_RECONFIG_DETACH_NODE, + OF_RECONFIG_ADD_PROPERTY + OF_RECONFIG_REMOVE_PROPERTY, + OF_RECONFIG_UPDATE_PROPERTYh]hOn action being one of: + OF_RECONFIG_ATTACH_NODE + OF_RECONFIG_DETACH_NODE, + OF_RECONFIG_ADD_PROPERTY + OF_RECONFIG_REMOVE_PROPERTY, + OF_RECONFIG_UPDATE_PROPERTY}(hjyShhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjXRubjC)}(h **Return**h]jq)}(hjSh]hReturn}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jphjSubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjXRubjC)}(h90 on success, a negative error value in case of an error.h]h90 on success, a negative error value in case of an error.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjXRubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )of_changeset_add_prop_string (C function)c.of_changeset_add_prop_stringhNtauh1hhj@hhhNhNubj)}(hhh](j)}(h{int of_changeset_add_prop_string (struct of_changeset *ocs, struct device_node *np, const char *prop_name, const char *str)h]j)}(hzint of_changeset_add_prop_string(struct of_changeset *ocs, struct device_node *np, const char *prop_name, const char *str)h](j)}(hinth]hint}(hjShhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjShhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj1)}(h h]h }(hjShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjShhhjShMubj)}(hof_changeset_add_prop_stringh]jE)}(hof_changeset_add_prop_stringh]hof_changeset_add_prop_string}(hjShhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjSubah}(h]h ](jjeh"]h$]h&]hhuh1jhjShhhjShMubj)}(hZ(struct of_changeset *ocs, struct device_node *np, const char *prop_name, const char *str)h](j)}(hstruct of_changeset *ocsh](j)}(hj"h]hstruct}(hj ThhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjTubj1)}(h h]h }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hj*ThhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj'Tubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj,TmodnameN classnameNjbje)}jh]jk)}j^jSsbc.of_changeset_add_prop_stringasbuh1hhjTubj1)}(h h]h }(hjJThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTubj)}(hjh]h*}(hjXThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubjE)}(hocsh]hocs}(hjeThhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjTubj)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hj~ThhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjzTubj1)}(h h]h }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjzTubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjThhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjTubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjTmodnameN classnameNjbje)}jh]jFTc.of_changeset_add_prop_stringasbuh1hhjzTubj1)}(h h]h }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjzTubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzTubjE)}(hnph]hnp}(hjThhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjzTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjTubj)}(hconst char *prop_nameh](j)}(hj\h]hconst}(hjThhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjTubj1)}(h h]h }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTubj)}(hcharh]hchar}(hj UhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjTubj1)}(h h]h }(hjUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTubj)}(hjh]h*}(hj%UhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubjE)}(h prop_nameh]h prop_name}(hj2UhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjTubj)}(hconst char *strh](j)}(hj\h]hconst}(hjKUhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjGUubj1)}(h h]h }(hjXUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGUubj)}(hcharh]hchar}(hjfUhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjGUubj1)}(h h]h }(hjtUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGUubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGUubjE)}(hstrh]hstr}(hjUhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjGUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjTubeh}(h]h ]h"]h$]h&]hhuh1jhjShhhjShMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjShhhjShMubah}(h]jSah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjShMhjShhubj>)}(hhh]jC)}(h$Add a string property to a changeseth]h$Add a string property to a changeset}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjUhhubah}(h]h ]h"]h$]h&]uh1j=hjShhhjShMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajUjbjUjcjdjeuh1j hhhj@hNhNubjg)}(hXv**Parameters** ``struct of_changeset *ocs`` changeset pointer ``struct device_node *np`` device node pointer ``const char *prop_name`` name of the property to be added ``const char *str`` pointer to null terminated string **Description** Create a string property and add it to a changeset. **Return** 0 on success, a negative error value in case of an error.h](jC)}(h**Parameters**h]jq)}(hjUh]h Parameters}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjUubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjUubj)}(hhh](j)}(h/``struct of_changeset *ocs`` changeset pointer h](j)}(h``struct of_changeset *ocs``h]j)}(hjUh]hstruct of_changeset *ocs}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjUubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjVhMhjVubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjVhMhjUubj)}(h/``struct device_node *np`` device node pointer h](j)}(h``struct device_node *np``h]j)}(hj3Vh]hstruct device_node *np}(hj5VhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1Vubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj-Vubj)}(hhh]jC)}(hdevice node pointerh]hdevice node pointer}(hjLVhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjHVhMhjIVubah}(h]h ]h"]h$]h&]uh1jhj-Vubeh}(h]h ]h"]h$]h&]uh1jhjHVhMhjUubj)}(h;``const char *prop_name`` name of the property to be added h](j)}(h``const char *prop_name``h]j)}(hjlVh]hconst char *prop_name}(hjnVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjVubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjfVubj)}(hhh]jC)}(h name of the property to be addedh]h name of the property to be added}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjVhMhjVubah}(h]h ]h"]h$]h&]uh1jhjfVubeh}(h]h ]h"]h$]h&]uh1jhjVhMhjUubj)}(h6``const char *str`` pointer to null terminated string h](j)}(h``const char *str``h]j)}(hjVh]hconst char *str}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjVubj)}(hhh]jC)}(h!pointer to null terminated stringh]h!pointer to null terminated string}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjVhMhjVubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jhjVhMhjUubeh}(h]h ]h"]h$]h&]uh1jhjUubjC)}(h**Description**h]jq)}(hjVh]h Description}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjVubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjUubjC)}(h3Create a string property and add it to a changeset.h]h3Create a string property and add it to a changeset.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjUubjC)}(h **Return**h]jq)}(hjWh]hReturn}(hj WhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjWubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjUubjC)}(h90 on success, a negative error value in case of an error.h]h90 on success, a negative error value in case of an error.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjUubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j /of_changeset_add_prop_string_array (C function)$c.of_changeset_add_prop_string_arrayhNtauh1hhj@hhhNhNubj)}(hhh](j)}(hint of_changeset_add_prop_string_array (struct of_changeset *ocs, struct device_node *np, const char *prop_name, const char * const *str_array, size_t sz)h]j)}(hint of_changeset_add_prop_string_array(struct of_changeset *ocs, struct device_node *np, const char *prop_name, const char *const *str_array, size_t sz)h](j)}(hinth]hint}(hjLWhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjHWhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj1)}(h h]h }(hj[WhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjHWhhhjZWhMubj)}(h"of_changeset_add_prop_string_arrayh]jE)}(h"of_changeset_add_prop_string_arrayh]h"of_changeset_add_prop_string_array}(hjmWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiWubah}(h]h ](jjeh"]h$]h&]hhuh1jhjHWhhhjZWhMubj)}(hr(struct of_changeset *ocs, struct device_node *np, const char *prop_name, const char *const *str_array, size_t sz)h](j)}(hstruct of_changeset *ocsh](j)}(hj"h]hstruct}(hjWhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjWubj1)}(h h]h }(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hjWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjWubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjWmodnameN classnameNjbje)}jh]jk)}j^joWsb$c.of_changeset_add_prop_string_arrayasbuh1hhjWubj1)}(h h]h }(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWubj)}(hjh]h*}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubjE)}(hocsh]hocs}(hjWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjWubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubj)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hjWhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjWubj1)}(h h]h }(hjXhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjXhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjXubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjXmodnameN classnameNjbje)}jh]jW$c.of_changeset_add_prop_string_arrayasbuh1hhjWubj1)}(h h]h }(hj7XhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWubj)}(hjh]h*}(hjEXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubjE)}(hnph]hnp}(hjRXhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjWubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubj)}(hconst char *prop_nameh](j)}(hj\h]hconst}(hjkXhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjgXubj1)}(h h]h }(hjxXhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjgXubj)}(hcharh]hchar}(hjXhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjgXubj1)}(h h]h }(hjXhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjgXubj)}(hjh]h*}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgXubjE)}(h prop_nameh]h prop_name}(hjXhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjgXubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubj)}(hconst char *const *str_arrayh](j)}(hj\h]hconst}(hjXhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjXubj1)}(h h]h }(hjXhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubj)}(hcharh]hchar}(hjXhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjXubj1)}(h h]h }(hjXhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubj)}(hjh]h*}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubj)}(hj\h]hconst}(hj YhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjXubj1)}(h h]h }(hjYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubj)}(hjh]h*}(hj'YhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubjE)}(h str_arrayh]h str_array}(hj4YhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjXubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubj)}(h size_t szh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjPYhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjMYubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjRYmodnameN classnameNjbje)}jh]jW$c.of_changeset_add_prop_string_arrayasbuh1hhjIYubj1)}(h h]h }(hjnYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjIYubjE)}(hszh]hsz}(hj|YhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjIYubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubeh}(h]h ]h"]h$]h&]hhuh1jhjHWhhhjZWhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjDWhhhjZWhMubah}(h]j?Wah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjZWhMhjAWhhubj>)}(hhh]jC)}(h)Add a string list property to a changeseth]h)Add a string list property to a changeset}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjYhhubah}(h]h ]h"]h$]h&]uh1j=hjAWhhhjZWhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajYjbjYjcjdjeuh1j hhhj@hNhNubjg)}(hX**Parameters** ``struct of_changeset *ocs`` changeset pointer ``struct device_node *np`` device node pointer ``const char *prop_name`` name of the property to be added ``const char * const *str_array`` pointer to an array of null terminated strings ``size_t sz`` number of string array elements **Description** Create a string list property and add it to a changeset. **Return** 0 on success, a negative error value in case of an error.h](jC)}(h**Parameters**h]jq)}(hjYh]h Parameters}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjYubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjYubj)}(hhh](j)}(h/``struct of_changeset *ocs`` changeset pointer h](j)}(h``struct of_changeset *ocs``h]j)}(hjYh]hstruct of_changeset *ocs}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjYubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjYhMhjYubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjYhMhjYubj)}(h/``struct device_node *np`` device node pointer h](j)}(h``struct device_node *np``h]j)}(hj Zh]hstruct device_node *np}(hj"ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjZubj)}(hhh]jC)}(hdevice node pointerh]hdevice node pointer}(hj9ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj5ZhMhj6Zubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhj5ZhMhjYubj)}(h;``const char *prop_name`` name of the property to be added h](j)}(h``const char *prop_name``h]j)}(hjYZh]hconst char *prop_name}(hj[ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWZubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjSZubj)}(hhh]jC)}(h name of the property to be addedh]h name of the property to be added}(hjrZhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjnZhMhjoZubah}(h]h ]h"]h$]h&]uh1jhjSZubeh}(h]h ]h"]h$]h&]uh1jhjnZhMhjYubj)}(hQ``const char * const *str_array`` pointer to an array of null terminated strings h](j)}(h!``const char * const *str_array``h]j)}(hjZh]hconst char * const *str_array}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjZubj)}(hhh]jC)}(h.pointer to an array of null terminated stringsh]h.pointer to an array of null terminated strings}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjZhMhjZubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhjZhMhjYubj)}(h.``size_t sz`` number of string array elements h](j)}(h ``size_t sz``h]j)}(hjZh]h size_t sz}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjZubj)}(hhh]jC)}(hnumber of string array elementsh]hnumber of string array elements}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjZhMhjZubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhjZhMhjYubeh}(h]h ]h"]h$]h&]uh1jhjYubjC)}(h**Description**h]jq)}(hj[h]h Description}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj[ubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjYubjC)}(h8Create a string list property and add it to a changeset.h]h8Create a string list property and add it to a changeset.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjYubjC)}(h **Return**h]jq)}(hj-[h]hReturn}(hj/[hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj+[ubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjYubjC)}(h90 on success, a negative error value in case of an error.h]h90 on success, a negative error value in case of an error.}(hjC[hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjYubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ,of_changeset_add_prop_u32_array (C function)!c.of_changeset_add_prop_u32_arrayhNtauh1hhj@hhhNhNubj)}(hhh](j)}(hint of_changeset_add_prop_u32_array (struct of_changeset *ocs, struct device_node *np, const char *prop_name, const u32 *array, size_t sz)h]j)}(hint of_changeset_add_prop_u32_array(struct of_changeset *ocs, struct device_node *np, const char *prop_name, const u32 *array, size_t sz)h](j)}(hinth]hint}(hjr[hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjn[hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj1)}(h h]h }(hj[hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjn[hhhj[hMubj)}(hof_changeset_add_prop_u32_arrayh]jE)}(hof_changeset_add_prop_u32_arrayh]hof_changeset_add_prop_u32_array}(hj[hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj[ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjn[hhhj[hMubj)}(hf(struct of_changeset *ocs, struct device_node *np, const char *prop_name, const u32 *array, size_t sz)h](j)}(hstruct of_changeset *ocsh](j)}(hj"h]hstruct}(hj[hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj[ubj1)}(h h]h }(hj[hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[ubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hj[hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj[ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj[modnameN classnameNjbje)}jh]jk)}j^j[sb!c.of_changeset_add_prop_u32_arrayasbuh1hhj[ubj1)}(h h]h }(hj[hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[ubj)}(hjh]h*}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubjE)}(hocsh]hocs}(hj\hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj[ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[ubj)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hj!\hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj\ubj1)}(h h]h }(hj.\hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj?\hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj<\ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjA\modnameN classnameNjbje)}jh]j[!c.of_changeset_add_prop_u32_arrayasbuh1hhj\ubj1)}(h h]h }(hj]\hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\ubj)}(hjh]h*}(hjk\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubjE)}(hnph]hnp}(hjx\hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[ubj)}(hconst char *prop_nameh](j)}(hj\h]hconst}(hj\hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj\ubj1)}(h h]h }(hj\hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\ubj)}(hcharh]hchar}(hj\hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj\ubj1)}(h h]h }(hj\hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\ubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubjE)}(h prop_nameh]h prop_name}(hj\hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[ubj)}(hconst u32 *arrayh](j)}(hj\h]hconst}(hj\hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj\ubj1)}(h h]h }(hj\hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\ubh)}(hhh]jE)}(hu32h]hu32}(hj ]hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ]ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj]modnameN classnameNjbje)}jh]j[!c.of_changeset_add_prop_u32_arrayasbuh1hhj\ubj1)}(h h]h }(hj*]hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\ubj)}(hjh]h*}(hj8]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubjE)}(harrayh]harray}(hjE]hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[ubj)}(h size_t szh](h)}(hhh]jE)}(hsize_th]hsize_t}(hja]hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj^]ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjc]modnameN classnameNjbje)}jh]j[!c.of_changeset_add_prop_u32_arrayasbuh1hhjZ]ubj1)}(h h]h }(hj]hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZ]ubjE)}(hszh]hsz}(hj]hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZ]ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj[ubeh}(h]h ]h"]h$]h&]hhuh1jhjn[hhhj[hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjj[hhhj[hMubah}(h]je[ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj[hMhjg[hhubj>)}(hhh]jC)}(h9Add a property of 32 bit integers property to a changeseth]h9Add a property of 32 bit integers property to a changeset}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj]hhubah}(h]h ]h"]h$]h&]uh1j=hjg[hhhj[hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj]jbj]jcjdjeuh1j hhhj@hNhNubjg)}(hX**Parameters** ``struct of_changeset *ocs`` changeset pointer ``struct device_node *np`` device node pointer ``const char *prop_name`` name of the property to be added ``const u32 *array`` pointer to an array of 32 bit integers ``size_t sz`` number of array elements **Description** Create a property of 32 bit integers and add it to a changeset. **Return** 0 on success, a negative error value in case of an error.h](jC)}(h**Parameters**h]jq)}(hj]h]h Parameters}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj]ubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM hj]ubj)}(hhh](j)}(h/``struct of_changeset *ocs`` changeset pointer h](j)}(h``struct of_changeset *ocs``h]j)}(hj]h]hstruct of_changeset *ocs}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM hj]ubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj ^hM hj^ubah}(h]h ]h"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]uh1jhj ^hM hj]ubj)}(h/``struct device_node *np`` device node pointer h](j)}(h``struct device_node *np``h]j)}(hj1^h]hstruct device_node *np}(hj3^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/^ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM hj+^ubj)}(hhh]jC)}(hdevice node pointerh]hdevice node pointer}(hjJ^hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjF^hM hjG^ubah}(h]h ]h"]h$]h&]uh1jhj+^ubeh}(h]h ]h"]h$]h&]uh1jhjF^hM hj]ubj)}(h;``const char *prop_name`` name of the property to be added h](j)}(h``const char *prop_name``h]j)}(hjj^h]hconst char *prop_name}(hjl^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjh^ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM hjd^ubj)}(hhh]jC)}(h name of the property to be addedh]h name of the property to be added}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj^hM hj^ubah}(h]h ]h"]h$]h&]uh1jhjd^ubeh}(h]h ]h"]h$]h&]uh1jhj^hM hj]ubj)}(h<``const u32 *array`` pointer to an array of 32 bit integers h](j)}(h``const u32 *array``h]j)}(hj^h]hconst u32 *array}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj^ubj)}(hhh]jC)}(h&pointer to an array of 32 bit integersh]h&pointer to an array of 32 bit integers}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj^hMhj^ubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jhj^hMhj]ubj)}(h'``size_t sz`` number of array elements h](j)}(h ``size_t sz``h]j)}(hj^h]h size_t sz}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj^ubj)}(hhh]jC)}(hnumber of array elementsh]hnumber of array elements}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj^hMhj^ubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jhj^hMhj]ubeh}(h]h ]h"]h$]h&]uh1jhj]ubjC)}(h**Description**h]jq)}(hj_h]h Description}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj_ubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj]ubjC)}(h?Create a property of 32 bit integers and add it to a changeset.h]h?Create a property of 32 bit integers and add it to a changeset.}(hj-_hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj]ubjC)}(h **Return**h]jq)}(hj>_h]hReturn}(hj@_hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj<_ubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj]ubjC)}(h90 on success, a negative error value in case of an error.h]h90 on success, a negative error value in case of an error.}(hjT_hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j 'of_changeset_add_prop_bool (C function)c.of_changeset_add_prop_boolhNtauh1hhj@hhhNhNubj)}(hhh](j)}(hhint of_changeset_add_prop_bool (struct of_changeset *ocs, struct device_node *np, const char *prop_name)h]j)}(hgint of_changeset_add_prop_bool(struct of_changeset *ocs, struct device_node *np, const char *prop_name)h](j)}(hinth]hint}(hj_hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj_hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM,ubj1)}(h h]h }(hj_hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj_hhhj_hM,ubj)}(hof_changeset_add_prop_boolh]jE)}(hof_changeset_add_prop_boolh]hof_changeset_add_prop_bool}(hj_hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj_ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj_hhhj_hM,ubj)}(hI(struct of_changeset *ocs, struct device_node *np, const char *prop_name)h](j)}(hstruct of_changeset *ocsh](j)}(hj"h]hstruct}(hj_hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj_ubj1)}(h h]h }(hj_hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj_ubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hj_hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj_ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj_modnameN classnameNjbje)}jh]jk)}j^j_sbc.of_changeset_add_prop_boolasbuh1hhj_ubj1)}(h h]h }(hj_hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj_ubj)}(hjh]h*}(hj `hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubjE)}(hocsh]hocs}(hj`hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj_ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubj)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hj2`hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj.`ubj1)}(h h]h }(hj?`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.`ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjP`hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjM`ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjR`modnameN classnameNjbje)}jh]j_c.of_changeset_add_prop_boolasbuh1hhj.`ubj1)}(h h]h }(hjn`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.`ubj)}(hjh]h*}(hj|`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.`ubjE)}(hnph]hnp}(hj`hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj.`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubj)}(hconst char *prop_nameh](j)}(hj\h]hconst}(hj`hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj`ubj1)}(h h]h }(hj`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`ubj)}(hcharh]hchar}(hj`hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj`ubj1)}(h h]h }(hj`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`ubj)}(hjh]h*}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubjE)}(h prop_nameh]h prop_name}(hj`hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubeh}(h]h ]h"]h$]h&]hhuh1jhj_hhhj_hM,ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj{_hhhj_hM,ubah}(h]jv_ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj_hM,hjx_hhubj>)}(hhh]jC)}(hKAdd a boolean property (i.e. a property without any values) to a changeset.h]hKAdd a boolean property (i.e. a property without any values) to a changeset.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM,hj ahhubah}(h]h ]h"]h$]h&]uh1j=hjx_hhhj_hM,ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj(ajbj(ajcjdjeuh1j hhhj@hNhNubjg)}(hX>**Parameters** ``struct of_changeset *ocs`` changeset pointer ``struct device_node *np`` device node pointer ``const char *prop_name`` name of the property to be added **Description** Create a boolean property and add it to a changeset. **Return** 0 on success, a negative error value in case of an error.h](jC)}(h**Parameters**h]jq)}(hj2ah]h Parameters}(hj4ahhhNhNubah}(h]h ]h"]h$]h&]uh1jphj0aubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM0hj,aubj)}(hhh](j)}(h/``struct of_changeset *ocs`` changeset pointer h](j)}(h``struct of_changeset *ocs``h]j)}(hjQah]hstruct of_changeset *ocs}(hjSahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOaubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM/hjKaubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hjjahhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjfahM/hjgaubah}(h]h ]h"]h$]h&]uh1jhjKaubeh}(h]h ]h"]h$]h&]uh1jhjfahM/hjHaubj)}(h/``struct device_node *np`` device node pointer h](j)}(h``struct device_node *np``h]j)}(hjah]hstruct device_node *np}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM0hjaubj)}(hhh]jC)}(hdevice node pointerh]hdevice node pointer}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjahM0hjaubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jhjahM0hjHaubj)}(h;``const char *prop_name`` name of the property to be added h](j)}(h``const char *prop_name``h]j)}(hjah]hconst char *prop_name}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM1hjaubj)}(hhh]jC)}(h name of the property to be addedh]h name of the property to be added}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjahM1hjaubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jhjahM1hjHaubeh}(h]h ]h"]h$]h&]uh1jhj,aubjC)}(h**Description**h]jq)}(hjah]h Description}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjaubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM3hj,aubjC)}(h4Create a boolean property and add it to a changeset.h]h4Create a boolean property and add it to a changeset.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM2hj,aubjC)}(h **Return**h]jq)}(hj%bh]hReturn}(hj'bhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj#bubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM4hj,aubjC)}(h90 on success, a negative error value in case of an error.h]h90 on success, a negative error value in case of an error.}(hj;bhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM5hj,aubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j ,of_changeset_update_prop_string (C function)!c.of_changeset_update_prop_stringhNtauh1hhj@hhhNhNubj)}(hhh](j)}(h~int of_changeset_update_prop_string (struct of_changeset *ocs, struct device_node *np, const char *prop_name, const char *str)h]j)}(h}int of_changeset_update_prop_string(struct of_changeset *ocs, struct device_node *np, const char *prop_name, const char *str)h](j)}(hinth]hint}(hjjbhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjfbhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMWubj1)}(h h]h }(hjybhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfbhhhjxbhMWubj)}(hof_changeset_update_prop_stringh]jE)}(hof_changeset_update_prop_stringh]hof_changeset_update_prop_string}(hjbhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjbubah}(h]h ](jjeh"]h$]h&]hhuh1jhjfbhhhjxbhMWubj)}(hZ(struct of_changeset *ocs, struct device_node *np, const char *prop_name, const char *str)h](j)}(hstruct of_changeset *ocsh](j)}(hj"h]hstruct}(hjbhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjbubj1)}(h h]h }(hjbhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjbubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hjbhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjbubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjbmodnameN classnameNjbje)}jh]jk)}j^jbsb!c.of_changeset_update_prop_stringasbuh1hhjbubj1)}(h h]h }(hjbhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjbubj)}(hjh]h*}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubjE)}(hocsh]hocs}(hjchhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjbubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubj)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hjchhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjcubj1)}(h h]h }(hj&chhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj7chhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4cubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj9cmodnameN classnameNjbje)}jh]jb!c.of_changeset_update_prop_stringasbuh1hhjcubj1)}(h h]h }(hjUchhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubj)}(hjh]h*}(hjcchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubjE)}(hnph]hnp}(hjpchhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjcubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubj)}(hconst char *prop_nameh](j)}(hj\h]hconst}(hjchhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjcubj1)}(h h]h }(hjchhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubj)}(hcharh]hchar}(hjchhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjcubj1)}(h h]h }(hjchhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubj)}(hjh]h*}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubjE)}(h prop_nameh]h prop_name}(hjchhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjcubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubj)}(hconst char *strh](j)}(hj\h]hconst}(hjchhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjcubj1)}(h h]h }(hjchhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubj)}(hcharh]hchar}(hjdhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjcubj1)}(h h]h }(hjdhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubj)}(hjh]h*}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubjE)}(hstrh]hstr}(hj*dhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjcubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubeh}(h]h ]h"]h$]h&]hhuh1jhjfbhhhjxbhMWubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjbbhhhjxbhMWubah}(h]j]bah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjxbhMWhj_bhhubj>)}(hhh]jC)}(h+Add a string property update to a changeseth]h+Add a string property update to a changeset}(hjTdhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMWhjQdhhubah}(h]h ]h"]h$]h&]uh1j=hj_bhhhjxbhMWubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajldjbjldjcjdjeuh1j hhhj@hNhNubjg)}(hX**Parameters** ``struct of_changeset *ocs`` changeset pointer ``struct device_node *np`` device node pointer ``const char *prop_name`` name of the property to be updated ``const char *str`` pointer to null terminated string **Description** Create a string property to be updated and add it to a changeset. **Return** 0 on success, a negative error value in case of an error.h](jC)}(h**Parameters**h]jq)}(hjvdh]h Parameters}(hjxdhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjtdubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM[hjpdubj)}(hhh](j)}(h/``struct of_changeset *ocs`` changeset pointer h](j)}(h``struct of_changeset *ocs``h]j)}(hjdh]hstruct of_changeset *ocs}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMYhjdubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjdhMYhjdubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jhjdhMYhjdubj)}(h/``struct device_node *np`` device node pointer h](j)}(h``struct device_node *np``h]j)}(hjdh]hstruct device_node *np}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMZhjdubj)}(hhh]jC)}(hdevice node pointerh]hdevice node pointer}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjdhMZhjdubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jhjdhMZhjdubj)}(h=``const char *prop_name`` name of the property to be updated h](j)}(h``const char *prop_name``h]j)}(hjeh]hconst char *prop_name}(hj ehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM[hjeubj)}(hhh]jC)}(h"name of the property to be updatedh]h"name of the property to be updated}(hj ehhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjehM[hjeubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1jhjehM[hjdubj)}(h6``const char *str`` pointer to null terminated string h](j)}(h``const char *str``h]j)}(hj@eh]hconst char *str}(hjBehhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>eubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM\hj:eubj)}(hhh]jC)}(h!pointer to null terminated stringh]h!pointer to null terminated string}(hjYehhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjUehM\hjVeubah}(h]h ]h"]h$]h&]uh1jhj:eubeh}(h]h ]h"]h$]h&]uh1jhjUehM\hjdubeh}(h]h ]h"]h$]h&]uh1jhjpdubjC)}(h**Description**h]jq)}(hj{eh]h Description}(hj}ehhhNhNubah}(h]h ]h"]h$]h&]uh1jphjyeubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM^hjpdubjC)}(hACreate a string property to be updated and add it to a changeset.h]hACreate a string property to be updated and add it to a changeset.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM]hjpdubjC)}(h **Return**h]jq)}(hjeh]hReturn}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jphjeubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM_hjpdubjC)}(h90 on success, a negative error value in case of an error.h]h90 on success, a negative error value in case of an error.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM`hjpdubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j )of_overlay_notifier_register (C function)c.of_overlay_notifier_registerhNtauh1hhj@hhhNhNubj)}(hhh](j)}(h)}(hhh]jC)}(h(Register notifier for overlay operationsh]h(Register notifier for overlay operations}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjfhhubah}(h]h ]h"]h$]h&]uh1j=hjehhhjehKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajfjbjfjcjdjeuh1j hhhj@hNhNubjg)}(hX**Parameters** ``struct notifier_block *nb`` Notifier block to register **Description** Register for notification on overlay operations on device tree nodes. The reported actions defined by **of_reconfig_change**. The notifier callback furthermore receives a pointer to the affected device tree node. Note that a notifier callback is not supposed to store pointers to a device tree node or its content beyond **OF_OVERLAY_POST_REMOVE** corresponding to the respective node it received.h](jC)}(h**Parameters**h]jq)}(hjfh]h Parameters}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjfubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjfubj)}(hhh]j)}(h9``struct notifier_block *nb`` Notifier block to register h](j)}(h``struct notifier_block *nb``h]j)}(hjfh]hstruct notifier_block *nb}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjfubj)}(hhh]jC)}(hNotifier block to registerh]hNotifier block to register}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjfhKhjfubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhjfhKhjfubah}(h]h ]h"]h$]h&]uh1jhjfubjC)}(h**Description**h]jq)}(hj#gh]h Description}(hj%ghhhNhNubah}(h]h ]h"]h$]h&]uh1jphj!gubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjfubjC)}(hRegister for notification on overlay operations on device tree nodes. The reported actions defined by **of_reconfig_change**. The notifier callback furthermore receives a pointer to the affected device tree node.h](hfRegister for notification on overlay operations on device tree nodes. The reported actions defined by }(hj9ghhhNhNubjq)}(h**of_reconfig_change**h]hof_reconfig_change}(hjAghhhNhNubah}(h]h ]h"]h$]h&]uh1jphj9gubhX. The notifier callback furthermore receives a pointer to the affected device tree node.}(hj9ghhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjfubjC)}(hNote that a notifier callback is not supposed to store pointers to a device tree node or its content beyond **OF_OVERLAY_POST_REMOVE** corresponding to the respective node it received.h](hlNote that a notifier callback is not supposed to store pointers to a device tree node or its content beyond }(hjZghhhNhNubjq)}(h**OF_OVERLAY_POST_REMOVE**h]hOF_OVERLAY_POST_REMOVE}(hjbghhhNhNubah}(h]h ]h"]h$]h&]uh1jphjZgubh2 corresponding to the respective node it received.}(hjZghhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjfubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j +of_overlay_notifier_unregister (C function) c.of_overlay_notifier_unregisterhNtauh1hhj@hhhNhNubj)}(hhh](j)}(h>int of_overlay_notifier_unregister (struct notifier_block *nb)h]j)}(h=int of_overlay_notifier_unregister(struct notifier_block *nb)h](j)}(hinth]hint}(hjghhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjghhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKubj1)}(h h]h }(hjghhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjghhhjghKubj)}(hof_overlay_notifier_unregisterh]jE)}(hof_overlay_notifier_unregisterh]hof_overlay_notifier_unregister}(hjghhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjgubah}(h]h ](jjeh"]h$]h&]hhuh1jhjghhhjghKubj)}(h(struct notifier_block *nb)h]j)}(hstruct notifier_block *nbh](j)}(hj"h]hstruct}(hjghhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjgubj1)}(h h]h }(hjghhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjgubh)}(hhh]jE)}(hnotifier_blockh]hnotifier_block}(hjghhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjgubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjgmodnameN classnameNjbje)}jh]jk)}j^jgsb c.of_overlay_notifier_unregisterasbuh1hhjgubj1)}(h h]h }(hjhhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjgubj)}(hjh]h*}(hj$hhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubjE)}(hnbh]hnb}(hj1hhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjgubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubah}(h]h ]h"]h$]h&]hhuh1jhjghhhjghKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjghhhjghKubah}(h]jgah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjghKhjghhubj>)}(hhh]jC)}(h*Unregister notifier for overlay operationsh]h*Unregister notifier for overlay operations}(hj[hhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjXhhhubah}(h]h ]h"]h$]h&]uh1j=hjghhhjghKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajshjbjshjcjdjeuh1j hhhj@hNhNubjg)}(hL**Parameters** ``struct notifier_block *nb`` Notifier block to unregisterh](jC)}(h**Parameters**h]jq)}(hj}hh]h Parameters}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj{hubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjwhubj)}(hhh]j)}(h:``struct notifier_block *nb`` Notifier block to unregisterh](j)}(h``struct notifier_block *nb``h]j)}(hjhh]hstruct notifier_block *nb}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjhubj)}(hhh]jC)}(hNotifier block to unregisterh]hNotifier block to unregister}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjhubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1jhjhhKhjhubah}(h]h ]h"]h$]h&]uh1jhjwhubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !of_overlay_fdt_apply (C function)c.of_overlay_fdt_applyhNtauh1hhj@hhhNhNubj)}(hhh](j)}(hzint of_overlay_fdt_apply (const void *overlay_fdt, u32 overlay_fdt_size, int *ret_ovcs_id, const struct device_node *base)h]j)}(hyint of_overlay_fdt_apply(const void *overlay_fdt, u32 overlay_fdt_size, int *ret_ovcs_id, const struct device_node *base)h](j)}(hinth]hint}(hjhhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMubj1)}(h h]h }(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhhjihMubj)}(hof_overlay_fdt_applyh]jE)}(hof_overlay_fdt_applyh]hof_overlay_fdt_apply}(hjihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhhjihMubj)}(ha(const void *overlay_fdt, u32 overlay_fdt_size, int *ret_ovcs_id, const struct device_node *base)h](j)}(hconst void *overlay_fdth](j)}(hj\h]hconst}(hj3ihhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj/iubj1)}(h h]h }(hj@ihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/iubj)}(hvoidh]hvoid}(hjNihhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj/iubj1)}(h h]h }(hj\ihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/iubj)}(hjh]h*}(hjjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/iubjE)}(h overlay_fdth]h overlay_fdt}(hjwihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj/iubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+iubj)}(hu32 overlay_fdt_sizeh](h)}(hhh]jE)}(hu32h]hu32}(hjihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjimodnameN classnameNjbje)}jh]jk)}j^jisbc.of_overlay_fdt_applyasbuh1hhjiubj1)}(h h]h }(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjiubjE)}(hoverlay_fdt_sizeh]hoverlay_fdt_size}(hjihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+iubj)}(hint *ret_ovcs_idh](j)}(hinth]hint}(hjihhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjiubj1)}(h h]h }(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjiubj)}(hjh]h*}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubjE)}(h ret_ovcs_idh]h ret_ovcs_id}(hjjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+iubj)}(hconst struct device_node *baseh](j)}(hj\h]hconst}(hjjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjjubj1)}(h h]h }(hj)jhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjjubj)}(hj"h]hstruct}(hj7jhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjjubj1)}(h h]h }(hjDjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjUjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjRjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjWjmodnameN classnameNjbje)}jh]jic.of_overlay_fdt_applyasbuh1hhjjubj1)}(h h]h }(hjsjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjjubj)}(hjh]h*}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubjE)}(hbaseh]hbase}(hjjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+iubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhjihMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhhjihMubah}(h]jhah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjihMhjhhhubj>)}(hhh]jC)}(h%Create and apply an overlay changeseth]h%Create and apply an overlay changeset}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhhjihMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjjbjjjcjdjeuh1j hhhj@hNhNubjg)}(hX3**Parameters** ``const void *overlay_fdt`` pointer to overlay FDT ``u32 overlay_fdt_size`` number of bytes in **overlay_fdt** ``int *ret_ovcs_id`` pointer for returning created changeset id ``const struct device_node *base`` pointer for the target node to apply overlay **Description** Creates and applies an overlay changeset. See of_overlay_apply() for important behavior information. On error return, the changeset may be partially applied. This is especially likely if an OF_OVERLAY_POST_APPLY notifier returns an error. In this case the caller should call of_overlay_remove() with the value in ***ret_ovcs_id**. **Return** 0 on success, or a negative error number. ***ret_ovcs_id** is set to the value of overlay changeset id, which can be passed to of_overlay_remove() to remove the overlay.h](jC)}(h**Parameters**h]jq)}(hjjh]h Parameters}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjjubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjjubj)}(hhh](j)}(h3``const void *overlay_fdt`` pointer to overlay FDT h](j)}(h``const void *overlay_fdt``h]j)}(hjjh]hconst void *overlay_fdt}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjjubj)}(hhh]jC)}(hpointer to overlay FDTh]hpointer to overlay FDT}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjkhMhjkubah}(h]h ]h"]h$]h&`]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjkhMhjjubj)}(h<``u32 overlay_fdt_size`` number of bytes in **overlay_fdt** h](j)}(h``u32 overlay_fdt_size``h]j)}(hj2kh]hu32 overlay_fdt_size}(hj4khhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0kubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhj,kubj)}(hhh]jC)}(h"number of bytes in **overlay_fdt**h](hnumber of bytes in }(hjKkhhhNhNubjq)}(h**overlay_fdt**h]h overlay_fdt}(hjSkhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjKkubeh}(h]h ]h"]h$]h&]uh1jBhjGkhMhjHkubah}(h]h ]h"]h$]h&]uh1jhj,kubeh}(h]h ]h"]h$]h&]uh1jhjGkhMhjjubj)}(h@``int *ret_ovcs_id`` pointer for returning created changeset id h](j)}(h``int *ret_ovcs_id``h]j)}(hjykh]hint *ret_ovcs_id}(hj{khhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwkubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjskubj)}(hhh]jC)}(h*pointer for returning created changeset idh]h*pointer for returning created changeset id}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjkhMhjkubah}(h]h ]h"]h$]h&]uh1jhjskubeh}(h]h ]h"]h$]h&]uh1jhjkhMhjjubj)}(hP``const struct device_node *base`` pointer for the target node to apply overlay h](j)}(h"``const struct device_node *base``h]j)}(hjkh]hconst struct device_node *base}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjkubj)}(hhh]jC)}(h,pointer for the target node to apply overlayh]h,pointer for the target node to apply overlay}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjkhMhjkubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jhjkhMhjjubeh}(h]h ]h"]h$]h&]uh1jhjjubjC)}(h**Description**h]jq)}(hjkh]h Description}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjkubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjjubjC)}(h)Creates and applies an overlay changeset.h]h)Creates and applies an overlay changeset.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjjubjC)}(h:See of_overlay_apply() for important behavior information.h]h:See of_overlay_apply() for important behavior information.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjjubjC)}(hOn error return, the changeset may be partially applied. This is especially likely if an OF_OVERLAY_POST_APPLY notifier returns an error. In this case the caller should call of_overlay_remove() with the value in ***ret_ovcs_id**.h](hOn error return, the changeset may be partially applied. This is especially likely if an OF_OVERLAY_POST_APPLY notifier returns an error. In this case the caller should call of_overlay_remove() with the value in }(hj!lhhhNhNubjq)}(h***ret_ovcs_id**h]h *ret_ovcs_id}(hj)lhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj!lubh.}(hj!lhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjjubjC)}(h **Return**h]jq)}(hjDlh]hReturn}(hjFlhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjBlubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjjubjC)}(h0 on success, or a negative error number. ***ret_ovcs_id** is set to the value of overlay changeset id, which can be passed to of_overlay_remove() to remove the overlay.h](h+0 on success, or a negative error number. }(hjZlhhhNhNubjq)}(h***ret_ovcs_id**h]h *ret_ovcs_id}(hjblhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjZlubho is set to the value of overlay changeset id, which can be passed to of_overlay_remove() to remove the overlay.}(hjZlhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjjubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_overlay_remove (C function)c.of_overlay_removehNtauh1hhj@hhhNhNubj)}(hhh](j)}(h$int of_overlay_remove (int *ovcs_id)h]j)}(h#int of_overlay_remove(int *ovcs_id)h](j)}(hinth]hint}(hjlhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjlhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMubj1)}(h h]h }(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlhhhjlhMubj)}(hof_overlay_removeh]jE)}(hof_overlay_removeh]hof_overlay_remove}(hjlhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjlubah}(h]h ](jjeh"]h$]h&]hhuh1jhjlhhhjlhMubj)}(h(int *ovcs_id)h]j)}(h int *ovcs_idh](j)}(hinth]hint}(hjlhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjlubj1)}(h h]h }(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlubj)}(hjh]h*}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubjE)}(hovcs_idh]hovcs_id}(hjmhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjlubah}(h]h ]h"]h$]h&]hhuh1jhjlhhhjlhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjlhhhjlhMubah}(h]jlah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjlhMhjlhhubj>)}(hhh]jC)}(h$Revert and free an overlay changeseth]h$Revert and free an overlay changeset}(hj+mhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhj(mhhubah}(h]h ]h"]h$]h&]uh1j=hjlhhhjlhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajCmjbjCmjcjdjeuh1j hhhj@hNhNubjg)}(hXJ**Parameters** ``int *ovcs_id`` Pointer to overlay changeset id **Description** Removes an overlay if it is permissible. **ovcs_id** was previously returned by of_overlay_fdt_apply(). If an error occurred while attempting to revert the overlay changeset, then an attempt is made to re-apply any changeset entry that was reverted. If an error occurs on re-apply then the state of the device tree can not be determined, and any following attempt to apply or remove an overlay changeset will be refused. A non-zero return value will not revert the changeset if error is from: - parameter checks - overlay changeset pre-remove notifier - overlay changeset entry revert If an error is returned by an overlay changeset pre-remove notifier then no further overlay changeset pre-remove notifier will be called. If more than one notifier returns an error, then the last notifier error to occur is returned. A non-zero return value will revert the changeset if error is from: - overlay changeset entry notifier - overlay changeset post-remove notifier If an error is returned by an overlay changeset post-remove notifier then no further overlay changeset post-remove notifier will be called. **Return** 0 on success, or a negative error number. ***ovcs_id** is set to zero after reverting the changeset, even if a subsequent error occurs.h](jC)}(h**Parameters**h]jq)}(hjMmh]h Parameters}(hjOmhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjKmubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjGmubj)}(hhh]j)}(h1``int *ovcs_id`` Pointer to overlay changeset id h](j)}(h``int *ovcs_id``h]j)}(hjlmh]h int *ovcs_id}(hjnmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjmubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjfmubj)}(hhh]jC)}(hPointer to overlay changeset idh]hPointer to overlay changeset id}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjmhMhjmubah}(h]h ]h"]h$]h&]uh1jhjfmubeh}(h]h ]h"]h$]h&]uh1jhjmhMhjcmubah}(h]h ]h"]h$]h&]uh1jhjGmubjC)}(h**Description**h]jq)}(hjmh]h Description}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjmubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjGmubjC)}(hhRemoves an overlay if it is permissible. **ovcs_id** was previously returned by of_overlay_fdt_apply().h](h*Removes an overlay if it is permissible. }(hjmhhhNhNubjq)}(h **ovcs_id**h]hovcs_id}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjmubh3 was previously returned by of_overlay_fdt_apply().}(hjmhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjGmubjC)}(hX=If an error occurred while attempting to revert the overlay changeset, then an attempt is made to re-apply any changeset entry that was reverted. If an error occurs on re-apply then the state of the device tree can not be determined, and any following attempt to apply or remove an overlay changeset will be refused.h]hX=If an error occurred while attempting to revert the overlay changeset, then an attempt is made to re-apply any changeset entry that was reverted. If an error occurs on re-apply then the state of the device tree can not be determined, and any following attempt to apply or remove an overlay changeset will be refused.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjGmubj)}(hhh]j)}(hA non-zero return value will not revert the changeset if error is from: - parameter checks - overlay changeset pre-remove notifier - overlay changeset entry revert h](j)}(hGA non-zero return value will not revert the changeset if error is from:h]hGA non-zero return value will not revert the changeset if error is from:}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjmubj)}(hhh]j))}(hhh](j))}(hparameter checksh]jC)}(hj nh]hparameter checks}(hj nhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhj nubah}(h]h ]h"]h$]h&]uh1j)hjnubj))}(h%overlay changeset pre-remove notifierh]jC)}(hj#nh]h%overlay changeset pre-remove notifier}(hj%nhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhj!nubah}(h]h ]h"]h$]h&]uh1j)hjnubj))}(hoverlay changeset entry revert h]jC)}(hoverlay changeset entry reverth]hoverlay changeset entry revert}(hj=nhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjnhMhj9nubah}(h]h ]h"]h$]h&]uh1j)hjnubeh}(h]h ]h"]h$]h&]j*-uh1j)hjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjnhMhjmubah}(h]h ]h"]h$]h&]uh1jhjGmubjC)}(hIf an error is returned by an overlay changeset pre-remove notifier then no further overlay changeset pre-remove notifier will be called.h]hIf an error is returned by an overlay changeset pre-remove notifier then no further overlay changeset pre-remove notifier will be called.}(hjjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjGmubjC)}(h^If more than one notifier returns an error, then the last notifier error to occur is returned.h]h^If more than one notifier returns an error, then the last notifier error to occur is returned.}(hjynhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjGmubj)}(hhh]j)}(hA non-zero return value will revert the changeset if error is from: - overlay changeset entry notifier - overlay changeset post-remove notifier h](j)}(hCA non-zero return value will revert the changeset if error is from:h]hCA non-zero return value will revert the changeset if error is from:}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjnubj)}(hhh]j))}(hhh](j))}(h overlay changeset entry notifierh]jC)}(hjnh]h overlay changeset entry notifier}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjnubah}(h]h ]h"]h$]h&]uh1j)hjnubj))}(h'overlay changeset post-remove notifier h]jC)}(h&overlay changeset post-remove notifierh]h&overlay changeset post-remove notifier}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjnhMhjnubah}(h]h ]h"]h$]h&]uh1j)hjnubeh}(h]h ]h"]h$]h&]j*jWnuh1j)hjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjGmubjC)}(hIf an error is returned by an overlay changeset post-remove notifier then no further overlay changeset post-remove notifier will be called.h]hIf an error is returned by an overlay changeset post-remove notifier then no further overlay changeset post-remove notifier will be called.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjGmubjC)}(h **Return**h]jq)}(hjnh]hReturn}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjnubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjGmubjC)}(h0 on success, or a negative error number. ***ovcs_id** is set to zero after reverting the changeset, even if a subsequent error occurs.h](h+0 on success, or a negative error number. }(hjohhhNhNubjq)}(h ***ovcs_id**h]h*ovcs_id}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jphjoubhQ is set to zero after reverting the changeset, even if a subsequent error occurs.}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjGmubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j "of_overlay_remove_all (C function)c.of_overlay_remove_allhNtauh1hhj@hhhNhNubj)}(hhh](j)}(h int of_overlay_remove_all (void)h]j)}(hint of_overlay_remove_all(void)h](j)}(hinth]hint}(hjTohhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjPohhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMubj1)}(h h]h }(hjcohhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPohhhjbohMubj)}(hof_overlay_remove_allh]jE)}(hof_overlay_remove_allh]hof_overlay_remove_all}(hjuohhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjqoubah}(h]h ](jjeh"]h$]h&]hhuh1jhjPohhhjbohMubj)}(h(void)h]j)}(hvoidh]j)}(hvoidh]hvoid}(hjohhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]noemphhhuh1jhjoubah}(h]h ]h"]h$]h&]hhuh1jhjPohhhjbohMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjLohhhjbohMubah}(h]jGoah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjbohMhjIohhubj>)}(hhh]jC)}(h(Reverts and frees all overlay changesetsh]h(Reverts and frees all overlay changesets}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjohhubah}(h]h ]h"]h$]h&]uh1j=hjIohhhjbohMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajojbjojcjdjeuh1j hhhj@hNhNubjg)}(h**Parameters** ``void`` no arguments **Description** Removes all overlays from the system in the correct order. **Return** 0 on success, or a negative error numberh](jC)}(h**Parameters**h]jq)}(hjoh]h Parameters}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jphjoubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjoubj)}(hhh]j)}(h``void`` no arguments h](j)}(h``void``h]j)}(hjoh]hvoid}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjoubj)}(hhh]jC)}(h no argumentsh]h no arguments}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjphKhjpubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjphKhjoubah}(h]h ]h"]h$]h&]uh1jhjoubjC)}(h**Description**h]jq)}(hj7ph]h Description}(hj9phhhNhNubah}(h]h ]h"]h$]h&]uh1jphj5pubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjoubjC)}(h:Removes all overlays from the system in the correct order.h]h:Removes all overlays from the system in the correct order.}(hjMphhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjoubjC)}(h **Return**h]jq)}(hj^ph]hReturn}(hj`phhhNhNubah}(h]h ]h"]h$]h&]uh1jphj\pubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjoubjC)}(h(0 on success, or a negative error numberh]h(0 on success, or a negative error number}(hjtphhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjoubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj@hhhNhNubeh}(h] overlay-and-dynamic-dt-functionsah ]h"] overlay and dynamic dt functionsah$]h&]uh1hhhhhhhhK0ubeh}(h](devicetree-kernel-apiheh ]h"](devicetree kernel api devicetreeeh$]h&]uh1hhhhhhhhKexpect_referenced_by_name}jphsexpect_referenced_by_id}hhsubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjperror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}h]hasnameids}(jphjpjpjjjgj@j@jpjpu nametypes}(jpjpjjj@jpuh}(hhjphjghj jj jjjjjj"j'j j j j js jx jUjZj,j1jjjjjjjLjQjjjjjC"jH"j$j$jk'jp'jR*jW*j,j,j /j/j1j1jG4jL4j6j7jO:jT:j"=j'=j>j>j Cj%CjEjEjGjGjJjJjoLjtLjMjMjPjPjsVjxVjYjYj]j]jV_j[_j`j`jcjcjgjgjljljpjpjbrjgrjtjtjwjwjmyjryj{j{jUjZjjj(j-jjj:j?jjjkjpjjjjj&j+jjƚjjj@jEjjjjj+j0jjjjjjj̴jѴjj jjjjjjj jjjjjjjjRjWjj"jjjAjFjjjjjjjjj}jj5j:jjjjj8j=j{jjjjmjrjjjjjyj~j j%j.j3j9j>jjjjjPjUjjj j j j j"j'jjjjj5j:jTjYj@jmjjjjj_!jd!j$j$j''j,'jF)jK)j*j*j,j,j.j.j1j1j4j4jz7j7jt;jy;j<j<j>j>jpj@j7@j<@jBjBjPjCPjSjSj?WjDWje[jj[jv_j{_j]bjbbjejejgjgjhjhjljljGojLou footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages]hsystem_message)}(hhh]jC)}(hhh]h0Hyperlink target "devicetree" is not referenced.}hj,qsbah}(h]h ]h"]h$]h&]uh1jBhj)qubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehnjlineKuh1j'quba transformerN include_log] decorationNhhub.