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.chMBubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj hhhj hMBubj)}(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 hMBubj)}(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 hMBubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj hhhj hMBubah}(h]j ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj hMBhj 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.chMBhj hhubah}(h]h ]h"]h$]h&]uh1j=hj hhhj hMBubeh}(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.chMFhj 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.chMDhj ubj)}(hhh]jC)}(hNode to check for availabilityh]hNode to check for availability}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj hMDhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMDhj 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.chMFhj 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.chMFhj 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.chMfubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj| hhhj hMfubj)}(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 hMfubj)}(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 hMfubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjx hhhj hMfubah}(h]js ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj hMfhju 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.chMfhjWhhubah}(h]h ]h"]h$]h&]uh1j=hju hhhj hMfubeh}(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.chMjhjvubj)}(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.chMhhjubj)}(hhh]jC)}(hNode to check for endiannessh]hNode to check for endianness}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhhjubah}(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.chMjhjvubjC)}(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.chMjhjvubjC)}(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.chMnhjvubh 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.chMmhj)ubah}(h]h ]h"]h$]h&]uh1j'hj;hMmhjvubeh}(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.chM hjubj)}(hhh]jC)}(h parent nodeh]h parent node}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj5hM hj6ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj5hM hjubj)}(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.chM2hjubj)}(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.chM1hjubjC)}(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.chM0hjubjC)}(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.chM3hjubjC)}(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.chM4hjubeh}(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.chMXubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMXubh)}(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_childasbuh1hhjhhhjhMXubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMXubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMXubj)}(hof_get_compatible_childh]jE)}(hjh]hof_get_compatible_child}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMXubj)}(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&]hhuh1jhjhhhjhMXubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMXubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMXhjhhubj>)}(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.chMXhj,!hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMXubeh}(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.chMYhjj!ubj)}(hhh]jC)}(h parent nodeh]h parent node}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj!hMYhj!ubah}(h]h ]h"]h$]h&]uh1jhjj!ubeh}(h]h ]h"]h$]h&]uh1jhj!hMYhjg!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.chMZhj!ubj)}(hhh]jC)}(hcompatible stringh]hcompatible string}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj!hMZhj!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj!hMZhjg!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.chM[hjK!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.chMqubj1)}(h h]h }(hj^"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjL"hhhj]"hMqubh)}(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]"hMqubj1)}(h h]h }(hj"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjL"hhhj]"hMqubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjL"hhhj]"hMqubj)}(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]"hMqubj)}(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]"hMqubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjH"hhhj]"hMqubah}(h]jC"ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj]"hMqhjE"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.chMqhj#hhubah}(h]h ]h"]h$]h&]uh1j=hjE"hhhj]"hMqubeh}(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.chMuhj#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.chMrhj#ubj)}(hhh]jC)}(h parent nodeh]h parent node}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj$hMrhj$ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jhj$hMrhj#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.chMshj7$ubj)}(hhh]jC)}(hchild name to look for.h]hchild name to look for.}(hjV$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjR$hMshjS$ubah}(h]h ]h"]h$]h&]uh1jhj7$ubeh}(h]h ]h"]h$]h&]uh1jhjR$hMshj#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.chMuhj#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.chMthj#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.chMvhj#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.chMwhj#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.Qh](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.chM hj,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.chMChj0ubj)}(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.chMDhj1ubj)}(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.chMAhj#1ubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhj"1hMDhj1ubj)}(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.chMEhjA1ubj)}(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.chMbhju3ubj)}(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.chMchj3ubj)}(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&]uh1jhj3hMchj3ubj)}(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.chMdhj3ubj)}(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&]uh1jBhj3hMdhj3ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jhj3hMdhj3ubeh}(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.chMfhju3ubjC)}(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.chMfhju3ubeh}(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)}(hz(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)}(h _out_argsh]h _out_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`);h](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](hgThis function is useful to parse lists of phandles and their arguments. Returns 0 on success and fills }(hjsBhhhNhNubjq)}(h **_out_args**h]h _out_args}(hj{BhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjsBubh, 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}(hjBhhhNhNubah}(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)}(hVCaller is responsible to call of_node_put() on the returned **_out_args->np** pointer.h](hnp**h]h _out_args->np}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjBubh pointer.}(hjBhhhNhNubeh}(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)}(hjCh]hargs}(hjChhhNhNubah}(h]h ](xrefj\c-typeeh"]h$]h&]uh1jhjCubah}(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&]uh1jBhj&ChMhjAubeh}(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}(hjQChhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjMChhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hj`ChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjMChhhj_ChMubj)}(hof_count_phandle_with_argsh]jE)}(hof_count_phandle_with_argsh]hof_count_phandle_with_args}(hjrChhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjnCubah}(h]h ](jjeh"]h$]h&]hhuh1jhjMChhhj_ChMubj)}(hM(const struct device_node *np, const char *list_name, const char *cells_name)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}(hjChhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjCubj1)}(h h]h }(hjChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjCubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjChhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjCubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjCmodnameN classnameNjbje)}jh]jk)}j^jtCsbc.of_count_phandle_with_argsasbuh1hhjCubj1)}(h h]h }(hjChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjCubj)}(hjh]h*}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubjE)}(hnph]hnp}(hjDhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjCubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjCubj)}(hconst char *list_nameh](j)}(hj\h]hconst}(hjDhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjDubj1)}(h h]h }(hj(DhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDubj)}(hcharh]hchar}(hj6DhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjDubj1)}(h h]h }(hjDDhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDubj)}(hjh]h*}(hjRDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubjE)}(h list_nameh]h list_name}(hj_DhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjDubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjCubj)}(hconst char *cells_nameh](j)}(hj\h]hconst}(hjxDhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjtDubj1)}(h h]h }(hjDhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjtDubj)}(hcharh]hchar}(hjDhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjtDubj1)}(h h]h }(hjDhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjtDubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtDubjE)}(h cells_nameh]h cells_name}(hjDhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjtDubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjCubeh}(h]h ]h"]h$]h&]hhuh1jhjMChhhj_ChMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjIChhhj_ChMubah}(h]jDCah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj_ChMhjFChhubj>)}(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=hjFChhhj_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)}(hjEh]h Parameters}(hj EhhhNhNubah}(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.chMhjEubj)}(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'Eh]hconst struct device_node *np}(hj)EhhhNhNubah}(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.chMhj!Eubj)}(hhh]jC)}(h/pointer to a device tree node containing a listh]h/pointer to a device tree node containing a list}(hj@EhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj)}(hhh]jC)}(hAdd a property to a nodeh]hAdd a property to a node}(hjIGhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjFGhhubah}(h]h ]h"]h$]h&]uh1j=hjFhhhj'FhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajaGjbjaGjcjdjeuh1j hhhhhNhNubjg)}(hn**Parameters** ``struct device_node *np`` Caller's Device Node ``struct property *prop`` Property to addh](jC)}(h**Parameters**h]jq)}(hjkGh]h Parameters}(hjmGhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjiGubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjeGubj)}(hhh](j)}(h0``struct device_node *np`` Caller's Device Node h](j)}(h``struct device_node *np``h]j)}(hjGh]hstruct device_node *np}(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)}(hCaller's Device Nodeh]hCaller’s Device Node}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjGhMhjGubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1jhjGhMhjGubj)}(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&]uh1jhjGhMhjGubeh}(h]h ]h"]h$]h&]uh1jhjeGubeh}(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}(hjHhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjHhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hj,HhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjHhhhj+HhMubj)}(hof_remove_propertyh]jE)}(hof_remove_propertyh]hof_remove_property}(hj>HhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj:Hubah}(h]h ](jjeh"]h$]h&]hhuh1jhjHhhhj+HhMubj)}(h/(struct device_node *np, struct property *prop)h](j)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hjZHhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjVHubj1)}(h h]h }(hjgHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVHubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjxHhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjuHubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjzHmodnameN classnameNjbje)}jh]jk)}j^j@Hsbc.of_remove_propertyasbuh1hhjVHubj1)}(h h]h }(hjHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVHubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVHubjE)}(hnph]hnp}(hjHhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjVHubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjRHubj)}(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]jHc.of_remove_propertyasbuh1hhjHubj1)}(h h]h }(hjIhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjHubj)}(hjh]h*}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubjE)}(hproph]hprop}(hj#IhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjHubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjRHubeh}(h]h ]h"]h$]h&]hhuh1jhjHhhhj+HhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjHhhhj+HhMubah}(h]jHah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj+HhMhjHhhubj>)}(hhh]jC)}(hRemove a property from a node.h]hRemove a property from a node.}(hjMIhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjJIhhubah}(h]h ]h"]h$]h&]uh1j=hjHhhhj+HhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajeIjbjeIjcjdjeuh1j 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)}(hjoIh]h Parameters}(hjqIhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjmIubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM#hjiIubj)}(hhh](j)}(h0``struct device_node *np`` Caller's Device Node h](j)}(h``struct device_node *np``h]j)}(hjIh]hstruct device_node *np}(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.chM hjIubj)}(hhh]jC)}(hCaller's Device Nodeh]hCaller’s Device Node}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjIhM hjIubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjIhM hjIubj)}(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.chM!hjIubj)}(hhh]jC)}(hProperty to removeh]hProperty to remove}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjIhM!hjIubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjIhM!hjIubeh}(h]h ]h"]h$]h&]uh1jhjiIubjC)}(h**Description**h]jq)}(hjJh]h Description}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjJubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM#hjiIubjC)}(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.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM"hjiIubeh}(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}(hjGJhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjCJhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjVJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjCJhhhjUJhMubj)}(hof_alias_get_idh]jE)}(hof_alias_get_idh]hof_alias_get_id}(hjhJhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjdJubah}(h]h ](jjeh"]h$]h&]hhuh1jhjCJhhhjUJhMubj)}(h0(const struct device_node *np, const char *stem)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjJhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjJubj1)}(h h]h }(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJubj)}(hj"h]hstruct}(hjJhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjJubj1)}(h h]h }(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJubh)}(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^jjJsbc.of_alias_get_idasbuh1hhjJubj1)}(h h]h }(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubjE)}(hnph]hnp}(hjJhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjJubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|Jubj)}(hconst char *stemh](j)}(hj\h]hconst}(hjKhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj Kubj1)}(h h]h }(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj Kubj)}(hcharh]hchar}(hj,KhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj Kubj1)}(h h]h }(hj:KhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj Kubj)}(hjh]h*}(hjHKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj KubjE)}(hstemh]hstem}(hjUKhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj Kubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|Jubeh}(h]h ]h"]h$]h&]hhuh1jhjCJhhhjUJhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj?JhhhjUJhMubah}(h]j:Jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjUJhMhj)}(hhh]jC)}(h&Get alias id for the given device_nodeh]h&Get alias id for the given device_node}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj|Khhubah}(h]h ]h"]h$]h&]uh1j=hj)}(hhh]jC)}(h'Get highest alias id for the given stemh]h'Get highest alias id for the given stem}(hjKMhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjHMhhubah}(h]h ]h"]h$]h&]uh1j=hjLhhhjLhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajcMjbjcMjcjdjeuh1j 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)}(hjmMh]h Parameters}(hjoMhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjkMubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjgMubj)}(hhh]j)}(h/``const char *stem`` Alias stem to be examined h](j)}(h``const char *stem``h]j)}(hjMh]hconst char *stem}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjMubj)}(hhh]jC)}(hAlias stem to be examinedh]hAlias stem to be examined}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjMhMhjMubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jhjMhMhjMubah}(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&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjgMubjC)}(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.chMhjgMubeh}(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}(hj NhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjNhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj1)}(h h]h }(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNhhhjNhMubj)}(hof_console_checkh]jE)}(hof_console_checkh]hof_console_check}(hj,NhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj(Nubah}(h]h ](jjeh"]h$]h&]hhuh1jhjNhhhjNhMubj)}(h5(const struct device_node *dn, char *name, int index)h](j)}(hconst struct device_node *dnh](j)}(hj\h]hconst}(hjHNhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjDNubj1)}(h h]h }(hjUNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDNubj)}(hj"h]hstruct}(hjcNhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjDNubj1)}(h h]h }(hjpNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDNubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjNhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj~Nubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjNmodnameN classnameNjbje)}jh]jk)}j^j.Nsbc.of_console_checkasbuh1hhjDNubj1)}(h h]h }(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDNubj)}(hjh]h*}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDNubjE)}(hdnh]hdn}(hjNhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjDNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@Nubj)}(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&]noemphhhuh1jhj@Nubj)}(h int indexh](j)}(hinth]hint}(hjOhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjOubj1)}(h h]h }(hj%OhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjOubjE)}(hindexh]hindex}(hj3OhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjOubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@Nubeh}(h]h ]h"]h$]h&]hhuh1jhjNhhhjNhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjNhhhjNhMubah}(h]jMah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjNhMhjNhhubj>)}(hhh]jC)}(h#Test and setup console for DT setuph]h#Test and setup console for DT setup}(hj]OhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjZOhhubah}(h]h ]h"]h$]h&]uh1j=hjNhhhjNhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajuOjbjuOjcjdjeuh1j 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)}(hjOh]h Parameters}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj}Oubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjyOubj)}(hhh](j)}(h8``const struct device_node *dn`` Pointer to device node h](j)}(h ``const struct device_node *dn``h]j)}(hjOh]hconst struct device_node *dn}(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)}(hPointer to device nodeh]hPointer to device node}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjOhMhjOubah}(h]h ]h"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]uh1jhjOhMhjOubj)}(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&]uh1jhjOhMhjOubj)}(h2``int index`` Index to use for preferred console. h](j)}(h ``int index``h]j)}(hjPh]h int index}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hj Pubj)}(hhh]jC)}(h#Index to use for preferred console.h]h#Index to use for preferred console.}(hj)PhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj%PhM hj&Pubah}(h]h ]h"]h$]h&]uh1jhj Pubeh}(h]h ]h"]h$]h&]uh1jhj%PhM hjOubeh}(h]h ]h"]h$]h&]uh1jhjyOubjC)}(h**Description**h]jq)}(hjKPh]h Description}(hjMPhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjIPubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjyOubjC)}(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.}(hjaPhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjyOubjC)}(h **Return**h]jq)}(hjrPh]hReturn}(hjtPhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjpPubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjyOubjC)}(h;TRUE if console successfully setup. Otherwise return FALSE.h]h;TRUE if console successfully setup. Otherwise return FALSE.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjyOubeh}(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.chMpubj1)}(h h]h }(hjPhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPhhhjPhMpubj)}(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&]hhuh1jhjPhhhjPhMpubj)}(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 }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubj)}(hj"h]hstruct}(hjQhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjPubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj-QhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj*Qubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj/QmodnameN classnameNjbje)}jh]jk)}j^jPsb c.of_map_idasbuh1hhjPubj1)}(h h]h }(hjMQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubj)}(hjh]h*}(hj[QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubjE)}(hnph]hnp}(hjhQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hu32 idh](h)}(hhh]jE)}(hu32h]hu32}(hjQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjQmodnameN classnameNjbje)}jh]jIQ c.of_map_idasbuh1hhj}Qubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj}QubjE)}(hidh]hid}(hjQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj}Qubeh}(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*}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubjE)}(hmap_nameh]hmap_name}(hj RhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hconst char *cells_nameh](j)}(hj\h]hconst}(hj&RhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj"Rubj1)}(h h]h }(hj3RhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"Rubj)}(hcharh]hchar}(hjARhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj"Rubj1)}(h h]h }(hjORhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"Rubj)}(hjh]h*}(hj]RhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"RubjE)}(h cells_nameh]h cells_name}(hjjRhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj"Rubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hconst char *map_mask_nameh](j)}(hj\h]hconst}(hjRhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjRubj1)}(h h]h }(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubj)}(hcharh]hchar}(hjRhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjRubj1)}(h h]h }(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubj)}(hjh]h*}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubjE)}(h map_mask_nameh]h map_mask_name}(hjRhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjRubeh}(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^ reftargetjSmodnameN classnameNjbje)}jh]jIQ c.of_map_idasbuh1hhjRubj1)}(h h]h }(hjShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubj)}(hjh]h*}(hj*ShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubj)}(hj\h]hconst}(hj7ShhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjRubj1)}(h h]h }(hjDShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubj)}(hjh]h*}(hjRShhhNhNubah}(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}(hjxShhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjtSubj1)}(h h]h }(hjShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjtSubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hjShhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjSubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjSmodnameN classnameNjbje)}jh]jIQ c.of_map_idasbuh1hhjtSubj1)}(h h]h }(hjShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjtSubj)}(hjh]h*}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtSubjE)}(hargh]harg}(hjShhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjtSubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubeh}(h]h ]h"]h$]h&]hhuh1jhjPhhhjPhMpubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjPhhhjPhMpubah}(h]jPah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjPhMphjPhhubj>)}(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.chMphjShhubah}(h]h ]h"]h$]h&]uh1j=hjPhhhjPhMpubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajTjbjTjcjdjeuh1j 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)}(hjTh]h Parameters}(hjThhhNhNubah}(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.chMthjTubj)}(hhh](j)}(h;``const struct device_node *np`` root complex device node. h](j)}(h ``const struct device_node *np``h]j)}(hj:Th]hconst struct device_node *np}(hj` 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&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjUubj)}(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 ](jCj\c-typeeh"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]refdocjC refdomainj\reftypetype refexplicitrefwarnjbj!Cj$Cof_phandle_argsuh1hhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMyhjUubh 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}(hj VhhhNhNubah}(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&]uh1jBhjUhMyhjUubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$ ]h&]uh1jhjUhMhj1Tubeh}(h]h ]h"]h$]h&]uh1jhjTubjC)}(h**Description**h]jq)}(hj8Vh]h Description}(hj:VhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj6Vubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjTubjC)}(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.}(hjNVhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjTubjC)}(h **Return**h]jq)}(hj_Vh]hReturn}(hjaVhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj]Vubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjTubjC)}(h10 on success or a standard error code on failure.h]h10 on success or a standard error code on failure.}(hjuVhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjTubeh}(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&]uh1jhjVhhhW/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&]uh1j0hjVhhhjVhM 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&]hhuh1jhjVhhhjVhM 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 }(hj WhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubh)}(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^jVsbc.of_map_iommu_idasbuh1hhjVubj1)}(h h]h }(hj:WhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubj)}(hjh]h*}(hjHWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubjE)}(hnph]hnp}(hjUWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjVubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubj)}(hu32 idh](h)}(hhh]jE)}(hu32h]hu32}(hjqWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjnWubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjsWmodnameN classnameNjbje)}jh]j6Wc.of_map_iommu_idasbuh1hhjjWubj1)}(h h]h }(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjjWubjE)}(hidh]hid}(hjWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjjWubeh}(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]j6Wc.of_map_iommu_idasbuh1hhjWubj1)}(h h]h }(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWubj)}(hjh]h*}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubjE)}(hargh]harg}(hj XhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjWubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubeh}(h]h ]h"]h$]h&]hhuh1jhjVhhhjVhM ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjVhhhjVhM ubah}(h]jVah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjVhM hjVhhubj>)}(hhh]jC)}(h+Translate an ID using "iommu-map" bindings.h]h/Translate an ID using “iommu-map” bindings.}(hj7XhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hj4Xhhubah}(h]h ]h"]h$]h&]uh1j=hjVhhhjVhM ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajOXjbjOXjcjdjeuh1j 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)}(hjYXh]h Parameters}(hj[XhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjWXubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjSXubj)}(hhh](j)}(h;``const struct device_node *np`` root complex device node. h](j)}(h ``const struct device_node *np``h]j)}(hjxXh]hconst struct device_node *np}(hjzXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvXubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjrXubj)}(hhh]jC)}(hroot complex device node.h]hroot complex device node.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjXhM hjXubah}(h]h ]h"]h$]h&]uh1jhjrXubeh}(h]h ]h"]h$]h&]uh1jhjXhM hjoXubj)}(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 hjoXubj)}(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 }(hjYhhhNhNubh)}(h2:c:type:`struct of_phandle_args `h]j)}(hjYh]hstruct of_phandle_args}(hjYhhhNhNubah}(h]h ](jCj\c-typeeh"]h$]h&]uh1jhj Yubah}(h]h ]h"]h$]h&]refdocjC refdomainj\reftypetype refexplicitrefwarnjbj!Cj$Cof_phandle_argsuh1hhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjYubh for the result. On success, }(hjYhhhNhNubjq)}(h**arg->args_count**h]harg->args_count}(hj0YhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjYubh9 will be set to the number of output specifier cells and }(hjYhhhNhNubjq)}(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}(hjBYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjYubhV holds a reference to the target node that the caller must release with of_node_put().}(hjYhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhj+YhM hjYubah}(h]h ]h"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]uh1jhjYhM! hjoXubeh}(h]h ]h"]h$]h&]uh1jhjSXubjC)}(h**Description**h]jq)}(hjnYh]h Description}(hjpYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjlYubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM# hjSXubjC)}(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”.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM" hjSXubjC)}(h **Return**h]jq)}(hjYh]hReturn}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjYubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM% hjSXubjC)}(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& hjSXubeh}(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.chM0 ubj1)}(h h]h }(hjYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjYhhhjYhM0 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&]hhuh1jhjYhhhjYhM0 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}(hjZhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjZubj1)}(h h]h }(hj$ZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubj)}(hj"h]hstruct}(hj2ZhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjZubj1)}(h h]h }(hj?ZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjPZhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjMZubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjRZmodnameN classnameNjbje)}jh]jk)}j^jYsbc.of_map_msi_idasbuh1hhjZubj1)}(h h]h }(hjpZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubj)}(hjh]h*}(hj~ZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubjE)}(hnph]hnp}(hjZhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubj)}(hu32 idh](h)}(hhh]jE)}(hu32h]hu32}(hjZhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjZmodnameN classnameNjbje)}jh]jlZc.of_map_msi_idasbuh1hhjZubj1)}(h h]h }(hjZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubjE)}(hidh]hid}(hjZhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubj)}(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}(hj [hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj[ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj [modnameN classnameNjbje)}jh]jlZc.of_map_msi_idasbuh1hhjZubj1)}(h h]h }(hj([hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubj)}(hjh]h*}(hj6[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubj)}(hj\h]hconst}(hjC[hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjZubj1)}(h h]h }(hjP[hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubj)}(hjh]h*}(hj^[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubjE)}(h filter_nph]h filter_np}(hjk[hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubj)}(hstruct of_phandle_args *argh](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)}(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]jlZc.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&]noemphhhuh1jhjZubeh}(h]h ]h"]h$]h&]hhuh1jhjYhhhjYhM0 ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjYhhhjYhM0 ubah}(h]jYah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjYhM0 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.chM0 hj\hhubah}(h]h ]h"]h$]h&]uh1j=hjYhhhjYhM0 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.chM4 hj!\ubj)}(hhh](j)}(h;``const struct device_node *np`` root complex device node. h](j)}(h ``const struct device_node *np``h]j)}(hjF\h]hconst struct device_node *np}(hjH\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD\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)}(hroot complex device node.h]hroot complex device node.}(hj_\hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj[\hM1 hj\\ubah}(h]h ]h"]h$]h&]uh1jhj@\ubeh}(h]h ]h"]h$]h&]uh1jhj[\hM1 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&]uh1jhj}\ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM3 hjy\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.}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM2 hj\ubah}(h]h ]h"]h$]h&]uh1jhjy\ubeh}(h]h ]h"]h$]h&]uh1jhj\hM3 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.chM6 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.chM4 hj\ubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jhj\hM6 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.chM< 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 ](jCj\c-typeeh"]h$]h&]uh1jhj&]ubah}(h]h ]h"]h$]h&]refdocjC refdomainj\reftypetype refexplicitrefwarnjbj!Cj$Cof_phandle_argsuh1hhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM7 hj]ubh for the result. On success, }(hj]hhhNhNubjq)}(h**arg->args_count**h]harg->args_count}(hjJ]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}(hj\]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&]uh1jBhjE]hM7 hj]ubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jhj]hM< hj=\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.chM> 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”.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM= 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.chMA 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}(hj1^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}(hjO^hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjL^ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjQ^modnameN classnameNjbje)}jh]jk)}j^j^sbc.of_node_initasbuh1hhj-^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)}(hnodeh]hnode}(hj^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)}(hj0_h]h Description}(hj2_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 }(hjF_hhhNhNubjq)}(h**node**h]hnode}(hjN_hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjF_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().}(hjF_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}(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_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_hhhj_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_hhhj_hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj_hhhj_hMubah}(h]jz_ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj_hMhj|_hhubj>)}(hhh]jC)}(h5Test root of device tree for a given compatible valueh]h5Test root of device tree for a given compatible value}(hj1`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\jajI`jbjI`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)}(hjS`h]h Parameters}(hjU`hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjQ`ubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjM`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)}(hjr`h]hconst char *compat}(hjt`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp`ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjl`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.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj`hMhj`ubah}(h]h ]h"]h$]h&]uh1jhjl`ubeh}(h]h ]h"]h$]h&]uh1jhj`hMhji`ubah}(h]h ]h"]h$]h&]uh1jhjM`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.hhMhjM`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.hhMhjM`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 }(hjahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`hhhj`hMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjahhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjaubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjamodnameN classnameNjbje)}jh]jk)}j^of_parse_phandlesbc.of_parse_phandleasbuh1hhj`hhhj`hMubj1)}(h h]h }(hj2ahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`hhhj`hMubj)}(hjh]h*}(hj@ahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`hhhj`hMubj)}(hof_parse_phandleh]jE)}(hj/ah]hof_parse_phandle}(hjQahhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjMaubah}(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}(hjlahhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhaubj1)}(h h]h }(hjyahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhaubj)}(hj"h]hstruct}(hjahhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjhaubj1)}(h h]h }(hjahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhaubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjahhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjaubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjamodnameN classnameNjbje)}jh]j-ac.of_parse_phandleasbuh1hhjhaubj1)}(h h]h }(hjahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhaubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhaubjE)}(hnph]hnp}(hjahhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjhaubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdaubj)}(hconst char *phandle_nameh](j)}(hj\h]hconst}(hjahhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjaubj1)}(h h]h }(hjbhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjaubj)}(hcharh]hchar}(hjbhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjaubj1)}(h h]h }(hj bhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjaubj)}(hjh]h*}(hj.bhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubjE)}(h phandle_nameh]h phandle_name}(hj;bhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjaubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdaubj)}(h int indexh](j)}(hinth]hint}(hjTbhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjPbubj1)}(h h]h }(hjbbhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPbubjE)}(hindexh]hindex}(hjpbhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPbubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdaubeh}(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}(hjbhhhNhNubah}(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=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)}(hjch]hconst char *phandle_name}(hjchhhNhNubah}(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.hhMhjcubj)}(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&]uh1jBhj)chMhj*cubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1jhj)chMhjbubj)}(h[``int index`` For properties holding a table of phandles, this is the index into the table h](j)}(h ``int index``h]j)}(hjMch]h int index}(hjOchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKcubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjGcubj)}(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}(hjfchhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjccubah}(h]h ]h"]h$]h&]uh1jhjGcubeh}(h]h ]h"]h$]h&]uh1jhjbchMhjbubeh}(h]h ]h"]h$]h&]uh1jhjbubjC)}(h **Return**h]jq)}(hjch]hReturn}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jphjcubah}(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.}(hjchhhNhNubah}(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}(hj dhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjdubj1)}(h h]h }(hjdhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubj)}(hj"h]hstruct}(hj&dhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjdubj1)}(h h]h }(hj3dhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjDdhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjAdubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjFdmodnameN classnameNjbje)}jh]jk)}j^jcsbc.of_parse_phandle_with_argsasbuh1hhjdubj1)}(h h]h }(hjddhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubj)}(hjh]h*}(hjrdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubjE)}(hnph]hnp}(hjdhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjdubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubj)}(hconst char *list_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*}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubjE)}(h list_nameh]h list_name}(hjdhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjdubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubj)}(hconst char *cells_nameh](j)}(hj\h]hconst}(hjdhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjdubj1)}(h h]h }(hjehhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubj)}(hcharh]hchar}(hjehhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjdubj1)}(h h]h }(hjehhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubj)}(hjh]h*}(hj,ehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubjE)}(h cells_nameh]h cells_name}(hj9ehhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjdubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubj)}(h int indexh](j)}(hinth]hint}(hjRehhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjNeubj1)}(h h]h }(hj`ehhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNeubjE)}(hindexh]hindex}(hjnehhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjNeubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubj)}(h struct of_phandle_args *out_argsh](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)}(hof_phandle_argsh]hof_phandle_args}(hjehhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjeubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjemodnameN classnameNjbje)}jh]j`dc.of_parse_phandle_with_argsasbuh1hhjeubj1)}(h h]h }(hjehhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjeubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubjE)}(hout_argsh]hout_args}(hjehhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjeubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubeh}(h]h ]h"]h$]h&]hhuh1jhjchhhjchM)ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjchhhjchM)ubah}(h]jcah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjchM)hjchhubj>)}(hhh]jC)}(h(Find a node pointed by phandle in a listh]h(Find a node pointed by phandle in a list}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM)hjfhhubah}(h]h ]h"]h$]h&]uh1j=hjchhhjchM)ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj fjbj fjcjdjeuh1j 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)}(hj*fh]h Parameters}(hj,fhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj(fubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM-hj$fubj)}(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)}(hjIfh]hconst struct device_node *np}(hjKfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGfubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM*hjCfubj)}(hhh]jC)}(h/pointer to a device tree node containing a listh]h/pointer to a device tree node containing a list}(hjbfhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj^fhM*hj_fubah}(h]h ]h"]h$]h&]uh1jhjCfubeh}(h]h ]h"]h$]h&]uh1jhj^fhM*hj@fubj)}(h=``const char *list_name`` property name that contains a list h](j)}(h``const char *list_name``h]j)}(hjfh]hconst char *list_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+hj|fubj)}(hhh]jC)}(h"property name that contains a listh]h"property name that contains a list}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjfhM+hjfubah}(h]h ]h"]h$]h&]uh1jhj|fubeh}(h]h ]h"]h$]h&]uh1jhjfhM+hj@fubj)}(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,hj@fubj)}(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}(hj ghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj ghM-hj gubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhj ghM-hj@fubj)}(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&]uh1jhj+gubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM.hj'gubj)}(hhh]jC)}(h?optional pointer to output arguments structure (will be filled)h]h?optional pointer to output arguments structure (will be filled)}(hjFghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjBghM.hjCgubah}(h]h ]h"]h$]h&]uh1jhj'gubeh}(h]h ]h"]h$]h&]uh1jhjBghM.hj@fubeh}(h]h ]h"]h$]h&]uh1jhj$fubjC)}(h**Description**h]jq)}(hjhgh]h Description}(hjjghhhNhNubah}(h]h ]h"]h$]h&]uh1jphjfgubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM0hj$fubjC)}(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.}(hj~ghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM/hj$fubjC)}(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.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM3hj$fubjC)}(h Example::h]hExample:}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM6hj$fubjB)}(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.hhM8hj$fubjC)}(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 ](jCj\c-typeeh"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]refdocjC refdomainj\reftypetype refexplicitrefwarnjbj!Cj$Cargsuh1hhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMDhjgubh);}(hjghhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhjghMDhj$fubeh}(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}(hjhhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhhX/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&]uh1j0hjhhhhj,hhMYubj)}(h of_parse_phandle_with_fixed_argsh]jE)}(h of_parse_phandle_with_fixed_argsh]h of_parse_phandle_with_fixed_args}(hj?hhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj;hubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhhj,hhMYubj)}(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}(hj[hhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjWhubj1)}(h h]h }(hjhhhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWhubj)}(hj"h]hstruct}(hjvhhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjWhubj1)}(h h]h }(hjhhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWhubh)}(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]jk)}j^jAhsb"c.of_parse_phandle_with_fixed_argsasbuh1hhjWhubj1)}(h h]h }(hjhhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWhubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWhubjE)}(hnph]hnp}(hjhhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjWhubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjShubj)}(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}(hjihhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhubj1)}(h h]h }(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhubj)}(hjh]h*}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubjE)}(h list_nameh]h list_name}(hj,ihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjShubj)}(hint cell_counth](j)}(hinth]hint}(hjEihhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjAiubj1)}(h h]h }(hjSihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjAiubjE)}(h cell_counth]h cell_count}(hjaihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjAiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjShubj)}(h int indexh](j)}(hinth]hint}(hjzihhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjviubj1)}(h h]h }(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjviubjE)}(hindexh]hindex}(hjihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjviubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjShubj)}(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}(hjjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjShubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhj,hhMYubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhhj,hhMYubah}(h]jhah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj,hhMYhjhhhubj>)}(hhh]jC)}(h(Find a node pointed by phandle in a listh]h(Find a node pointed by phandle in a list}(hj0jhhhNhNubah}(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=hjhhhhj,hhMYubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajHjjbjHjjcjdjeuh1j 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)}(hjRjh]h Parameters}(hjTjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjPjubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM]hjLjubj)}(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)}(hjqjh]hconst struct device_node *np}(hjsjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjojubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMZhjkjubj)}(hhh]jC)}(h/pointer to a device tree node containing a listh]h/pointer to a device tree node containing a list}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjjhMZhjjubah}(h]h ]h"]h$]h&]uh1jhjkjubeh}(h]h ]h"]h$]h&]uh1jhjjhMZhjhjubj)}(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[hjhjubj)}(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\hjhjubj)}(h.``int index`` index of a phandle to parse out h](j)}(h ``int index``h]j)}(hjkh]h int index}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM]hjkubj)}(hhh]jC)}(hindex of a phandle to parse outh]hindex of a phandle to parse out}(hj5khhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj1khM]hj2kubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jhj1khM]hjhjubj)}(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)}(hjUkh]h struct of_phandle_args *out_args}(hjWkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSkubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM^hjOkubj)}(hhh]jC)}(h?optional pointer to output arguments structure (will be filled)h]h?optional pointer to output arguments structure (will be filled)}(hjnkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjjkhM^hjkkubah}(h]h ]h"]h$]h&]uh1jhjOkubeh}(h]h ]h"]h$]h&]uh1jhjjkhM^hjhjubeh}(h]h ]h"]h$]h&]uh1jhjLjubjC)}(h**Description**h]jq)}(hjkh]h Description}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjkubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM`hjLjubjC)}(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_hjLjubjC)}(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.hhMchjLjubjC)}(h Example::h]hExample:}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMfhjLjubjB)}(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.hhMhhjLjubjC)}(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}(hjlhhhNhNubah}(h]h ](jCj\c-typeeh"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]refdocjC refdomainj\reftypetype refexplicitrefwarnjbj!Cj$Cargsuh1hhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMrhjkubh);}(hjkhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhjlhMrhjLjubeh}(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}(hjFlhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjBlhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjUlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBlhhhjTlhMubj)}(h#of_parse_phandle_with_optional_argsh]jE)}(h#of_parse_phandle_with_optional_argsh]h#of_parse_phandle_with_optional_args}(hjglhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjclubah}(h]h ](jjeh"]h$]h&]hhuh1jhjBlhhhjTlhMubj)}(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}(hjlhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjlubj1)}(h h]h }(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlubj)}(hj"h]hstruct}(hjlhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjlubj1)}(h h]h }(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlubh)}(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^jilsb%c.of_parse_phandle_with_optional_argsasbuh1hhjlubj1)}(h h]h }(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlubj)}(hjh]h*}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubjE)}(hnph]hnp}(hjlhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{lubj)}(hconst char *list_nameh](j)}(hj\h]hconst}(hjmhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj mubj1)}(h h]h }(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj mubj)}(hcharh]hchar}(hj+mhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj mubj1)}(h h]h }(hj9mhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj mubj)}(hjh]h*}(hjGmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj mubjE)}(h list_nameh]h list_name}(hjTmhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj mubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{lubj)}(hconst char *cells_nameh](j)}(hj\h]hconst}(hjmmhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjimubj1)}(h h]h }(hjzmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjimubj)}(hcharh]hchar}(hjmhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjimubj1)}(h h]h }(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjimubj)}(hjh]h*}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjimubjE)}(h cells_nameh]h cells_name}(hjmhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjimubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{lubj)}(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&]noemphhhuh1jhj{lubj)}(h struct of_phandle_args *out_argsh](j)}(hj"h]hstruct}(hjmhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjmubj1)}(h h]h }(hj nhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hjnhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjnubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjnmodnameN classnameNjbje)}jh]jl%c.of_parse_phandle_with_optional_argsasbuh1hhjmubj1)}(h h]h }(hj;nhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubj)}(hjh]h*}(hjInhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubjE)}(hout_argsh]hout_args}(hjVnhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjmubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{lubeh}(h]h ]h"]h$]h&]hhuh1jhjBlhhhjTlhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj>lhhhjTlhMubah}(h]j9lah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjTlhMhj;lhhubj>)}(hhh]jC)}(h(Find a node pointed by phandle in a listh]h(Find a node pointed by phandle in a list}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj}nhhubah}(h]h ]h"]h$]h&]uh1j=hj;lhhhjTlhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajnjbjnjcjdjeuh1j 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)}(hjnh]h Parameters}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjnubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjnubj)}(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}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjohMhjoubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjohMhjnubj)}(hR``const char *cells_name`` property name that specifies phandles' arguments count h](j)}(h``const char *cells_name``h]j)}(hj3oh]hconst char *cells_name}(hj5ohhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1oubah}(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}(hjLohhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjHohMhjIoubah}(h]h ]h"]h$]h&]uh1jhj-oubeh}(h]h ]h"]h$]h&]uh1jhjHohMhjnubj)}(h.``int index`` index of a phandle to parse out h](j)}(h ``int index``h]j)}(hjloh]h int index}(hjnohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjoubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjfoubj)}(hhh]jC)}(hindex of a phandle to parse outh]hindex of a phandle to parse out}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjohMhjoubah}(h]h ]h"]h$]h&]uh1jhjfoubeh}(h]h ]h"]h$]h&]uh1jhjohMhjnubj)}(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.hhMhjoubj)}(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&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjohMhjnubeh}(h]h ]h"]h$]h&]uh1jhjnubjC)}(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.hhMhjnubjC)}(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.hhMhjnubjC)}(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.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjnubeh}(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}(hj4phhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj0phhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjBphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0phhhjAphMubj)}(hof_phandle_args_equalh]jE)}(hof_phandle_args_equalh]hof_phandle_args_equal}(hjTphhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPpubah}(h]h ](jjeh"]h$]h&]hhuh1jhj0phhhjAphMubj)}(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}(hjpphhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjlpubj1)}(h h]h }(hj}phhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlpubj)}(hj"h]hstruct}(hjphhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjlpubj1)}(h h]h }(hjphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlpubh)}(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^jVpsbc.of_phandle_args_equalasbuh1hhjlpubj1)}(h h]h }(hjphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlpubj)}(hjh]h*}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlpubjE)}(ha1h]ha1}(hjphhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjlpubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjhpubj)}(h const struct of_phandle_args *a2h](j)}(hj\h]hconst}(hjphhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjpubj1)}(h h]h }(hj qhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjpubj)}(hj"h]hstruct}(hjqhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjpubj1)}(h h]h }(hj%qhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjpubh)}(hhh]jE)}(hof_phandle_argsh]hof_phandle_args}(hj6qhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj3qubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj8qmodnameN classnameNjbje)}jh]jpc.of_phandle_args_equalasbuh1hhjpubj1)}(h h]h }(hjTqhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjpubj)}(hjh]h*}(hjbqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubjE)}(ha2h]ha2}(hjoqhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjpubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjhpubeh}(h]h ]h"]h$]h&]hhuh1jhj0phhhjAphMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj,phhhjAphMubah}(h]j'pah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjAphMhj)phhubj>)}(hhh]jC)}(hCompare two of_phandle_argsh]hCompare two of_phandle_args}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjqhhubah}(h]h ]h"]h$]h&]uh1j=hj)phhhjAphMubeh}(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)}(hjrh]h const struct of_phandle_args *a2}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj rubj)}(hhh]jC)}(h!Second of_phandle_args to compareh]h!Second of_phandle_args to compare}(hj,rhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj(rhMhj)rubah}(h]h ]h"]h$]h&]uh1jhj rubeh}(h]h ]h"]h$]h&]uh1jhj(rhMhjqubeh}(h]h ]h"]h$]h&]uh1jhjqubjC)}(h **Return**h]jq)}(hjNrh]hReturn}(hjPrhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjLrubah}(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.}(hjdrhhhNhNubah}(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}(hjrhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjrhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjrhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjrhhhjrhMubj)}(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&]hhuh1jhjrhhhjrhMubj)}(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}(hj shhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjsubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj smodnameN classnameNjbje)}jh]jk)}j^jrsbc.of_property_count_u8_elemsasbuh1hhjrubj1)}(h h]h }(hj)shhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjrubj)}(hjh]h*}(hj7shhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubjE)}(hnph]hnp}(hjDshhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjrubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjrubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hj]shhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjYsubj1)}(h h]h }(hjjshhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjYsubj)}(hcharh]hchar}(hjxshhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjYsubj1)}(h h]h }(hjshhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjYsubj)}(hjh]h*}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYsubjE)}(hpropnameh]hpropname}(hjshhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjYsubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjrubeh}(h]h ]h"]h$]h&]hhuh1jhjrhhhjrhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjrhhhjrhMubah}(h]jrah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjrhMhjrhhubj>)}(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=hjrhhhjrhMubeh}(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)}(hj th]hconst struct device_node *np}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhj tubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjtubj)}(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%thhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj!thMhj"tubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhj!thMhjtubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjEth]hconst char *propname}(hjGthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCtubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj?tubj)}(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&]uh1jBhjZthMhj[tubah}(h]h ]h"]h$]h&]uh1jhj?tubeh}(h]h ]h"]h$]h&]uh1jhjZthMhjtubeh}(h]h ]h"]h$]h&]uh1jhjsubjC)}(h**Description**h]jq)}(hjth]h Description}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jphj~tubah}(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.}(hjthhhNhNubah}(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}(hj uhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj uubah}(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}(hj)uhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj%uubj1)}(h h]h }(hj6uhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj%uubj)}(hj"h]hstruct}(hjDuhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj%uubj1)}(h h]h }(hjQuhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj%uubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjbuhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj_uubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjdumodnameN classnameNjbje)}jh]jk)}j^jusbc.of_property_count_u16_elemsasbuh1hhj%uubj1)}(h h]h }(hjuhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj%uubj)}(hjh]h*}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%uubjE)}(hnph]hnp}(hjuhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj%uubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj!uubj)}(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&]noemphhhuh1jhj!uubeh}(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}(hj$vhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj!vhhubah}(h]h ]h"]h$]h&]uh1j=hjthhhjthMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjvh]hconst char *propname}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjvubj)}(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&]uh1jhjvubeh}(h]h ]h"]h$]h&]uh1jhjvhMhj\vubeh}(h]h ]h"]h$]h&]uh1jhj@vubjC)}(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.hhMhj@vubjC)}(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.hhMhj@vubjC)}(h **Return**h]jq)}(hjwh]hReturn}(hjwhhhNhNubah}(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.hhMhj@vubjC)}(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.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj@vubeh}(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}(hjEwhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjAwhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjTwhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjAwhhhjSwhMubj)}(hof_property_count_u32_elemsh]jE)}(hof_property_count_u32_elemsh]hof_property_count_u32_elems}(hjfwhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjbwubah}(h]h ](jjeh"]h$]h&]hhuh1jhjAwhhhjSwhMubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjwhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj~wubj1)}(h h]h }(hjwhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj~wubj)}(hj"h]hstruct}(hjwhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj~wubj1)}(h h]h }(hjwhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj~wubh)}(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^jhwsbc.of_property_count_u32_elemsasbuh1hhj~wubj1)}(h h]h }(hjwhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj~wubj)}(hjh]h*}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~wubjE)}(hnph]hnp}(hjwhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj~wubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjzwubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjxhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj xubj1)}(h h]h }(hjxhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj xubj)}(hcharh]hchar}(hj*xhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj xubj1)}(h h]h }(hj8xhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj xubj)}(hjh]h*}(hjFxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj xubjE)}(hpropnameh]hpropname}(hjSxhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj xubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjzwubeh}(h]h ]h"]h$]h&]hhuh1jhjAwhhhjSwhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj=whhhjSwhMubah}(h]j8wah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjSwhMhj:whhubj>)}(hhh]jC)}(h.Count the number of u32 elements in a propertyh]h.Count the number of u32 elements in a property}(hj}xhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjzxhhubah}(h]h ]h"]h$]h&]uh1j=hj:whhhjSwhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajxjbjxjcjdjeuh1j 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)}(hjxh]h Parameters}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjxubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjxubj)}(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.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj yhMhj yubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1jhj yhMhjxubeh}(h]h ]h"]h$]h&]uh1jhjxubjC)}(h**Description**h]jq)}(hj2yh]h Description}(hj4yhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj0yubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjxubjC)}(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.}(hjHyhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjxubjC)}(h **Return**h]jq)}(hjYyh]hReturn}(hj[yhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjWyubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjxubjC)}(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.}(hjoyhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjxubeh}(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}(hjyhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjyhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyhhhjyhMubj)}(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&]hhuh1jhjyhhhjyhMubj)}(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 }(hjzhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubh)}(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]jk)}j^jysbc.of_property_count_u64_elemsasbuh1hhjyubj1)}(h h]h }(hj4zhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubj)}(hjh]h*}(hjBzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubjE)}(hnph]hnp}(hjOzhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjhzhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjdzubj1)}(h h]h }(hjuzhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdzubj)}(hcharh]hchar}(hjzhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjdzubj1)}(h h]h }(hjzhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdzubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdzubjE)}(hpropnameh]hpropname}(hjzhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjdzubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubeh}(h]h ]h"]h$]h&]hhuh1jhjyhhhjyhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjyhhhjyhMubah}(h]jyah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjyhMhjyhhubj>)}(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=hjyhhhjyhMubeh}(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)}(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.}(hj0{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)}(hjP{h]hconst char *propname}(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$name of the property to be searched.h]h$name of the property to be searched.}(hji{hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhje{hMhjf{ubah}(h]h ]h"]h$]h&]uh1jhjJ{ubeh}(h]h ]h"]h$]h&]uh1jhje{hMhj{ubeh}(h]h ]h"]h$]h&]uh1jhjzubjC)}(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.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}(hj4|hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj0|ubj1)}(h h]h }(hjA|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0|ubj)}(hj"h]hstruct}(hjO|hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj0|ubj1)}(h h]h }(hj\|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0|ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjm|hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjj|ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjo|modnameN classnameNjbje)}jh]jk)}j^j|sbc.of_property_read_string_arrayasbuh1hhj0|ubj1)}(h h]h }(hj|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0|ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0|ubjE)}(hnph]hnp}(hj|hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj0|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}(hj9}hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj}ubj1)}(h h]h }(hjG}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj}ubj)}(hjh]h*}(hjU}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj)}(hjh]h*}(hjb}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubjE)}(hout_strsh]hout_strs}(hjo}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}(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_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&]uh1jBhj7~hMhj8~ubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1jhj7~hMhj~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}(hj]~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjY~ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjU~ubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjt~hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjp~hMhjq~ubah}(h]h ]h"]h$]h&]uh1jhjU~ubeh}(h]h ]h"]h$]h&]uh1jhjp~hMhj~ubj)}(h;``const char **out_strs`` output array of string pointers. h](j)}(h``const char **out_strs``h]j)}(hj~h]hconst char **out_strs}(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 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&]uh1jhj~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)}(hjh]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.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.}(hjhhhNhNubah}(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}(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}ubjC)}(hKIf **out_strs** is NULL, the number of strings in the property is returned.h](hIf }(hjEhhhNhNubjq)}(h **out_strs**h]hout_strs}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjEubh< is NULL, the number of strings in the property is returned.}(hjEhhhNhNubeh}(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}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhM 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&]hhuh1jhjhhhjhM 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*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hj7hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *propnameh](j)}(hj\h]hconst}(hjPhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjLubj1)}(h h]h }(hj]hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjLubj)}(hcharh]hchar}(hjkhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjLubj1)}(h h]h }(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjLubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubjE)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjLubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj~hhhjhM ubah}(h]jyah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhM hj{hhubj>)}(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=hj{hhhjhM ubeh}(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. **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&]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)}(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.hhM 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)}(hj8h]hconst char *propname}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM hj2ubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjMhM hjNubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhjMhM hjubeh}(h]h ]h"]h$]h&]uh1jhjڀubjC)}(h**Description**h]jq)}(hjsh]h Description}(hjuhhhNhNubah}(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.hhMhjڀubjC)}(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.}(hjhhhNhNubah}(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)}(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)}(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.hhMhjڀubeh}(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}(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 }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjہhhhjhMubj)}(hof_property_read_string_indexh]jE)}(hof_property_read_string_indexh]hof_property_read_string_index}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjہhhhjhMubj)}(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 }(hj)hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hj7hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjDhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjUhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjRubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjWmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_property_read_string_indexasbuh1hhjubj1)}(h h]h }(hjuhhhNhNubah}(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}(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 }(hj҂hhhNhNubah}(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&]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&]noemphhhuh1jhjubj)}(hconst char **outputh](j)}(hj\h]hconst}(hj;hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj7ubj1)}(h h]h }(hjHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubj)}(hcharh]hchar}(hjVhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj7ubj1)}(h h]h }(hjdhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubj)}(hjh]h*}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjE)}(houtputh]houtput}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjہhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjׁhhhjhMubah}(h]jҁah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjԁhhubj>)}(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=hjԁhhhjhMubeh}(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. ``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)}(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.hhM!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&]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&]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)}(hj0h]hconst char *propname}(hj2hhhNhNubah}(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)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjEhM hjFubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jhjEhM hjubj)}(h9``int index`` index of the string in the list of strings h](j)}(h ``int index``h]j)}(hjih]h int index}(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.hhM!hjcubj)}(hhh]jC)}(h*index of the string in the list of stringsh]h*index of the string in the list of strings}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj~hM!hjubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]uh1jhj~hM!hjubj)}(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)}(hjh]hconst char **output}(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)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM#hjubeh}(h]h ]h"]h$]h&]uh1jhj҃ubjC)}(h**Description**h]jq)}(hjބh]h Description}(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.hhM%hj҃ubjC)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM$hj҃ubjC)}(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&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM)hj҃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.hhM+hj҃ubjC)}(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.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM)hj҃ubeh}(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}(hjYhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjUhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM8ubj1)}(h h]h }(hjghhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUhhhjfhM8ubj)}(hof_property_presenth]jE)}(hof_property_presenth]hof_property_present}(hjyhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjuubah}(h]h ](jjeh"]h$]h&]hhuh1jhjUhhhjfhM8ubj)}(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}(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_presentasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(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}(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 }(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hjfhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjUhhhjfhM8ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjQhhhjfhM8ubah}(h]jLah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjfhM8hjNhhubj>)}(hhh]jC)}(h'Test if a property is present in a nodeh]h'Test if a property is present in a node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM8hjhhubah}(h]h ]h"]h$]h&]uh1j=hjNhhhjfhM8ubeh}(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)}(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.hhM9hjˆubj)}(hhh]jC)}(h'device node to search for the property.h]h'device node to search for the property.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM9hjubah}(h]h ]h"]h$]h&]uh1jhjˆubeh}(h]h ]h"]h$]h&]uh1jhjhM9hjȆ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}(hj hhhNhNubah}(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&]uh1jBhjhM:hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM:hjȆubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjEh]h Description}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjCubah}(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.}(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)}(hjlh]hReturn}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjjubah}(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.}(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_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}(hj҇hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj·ubah}(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}(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]jk)}j^jԇsbc.of_property_read_u8_arrayasbuh1hhjubj1)}(h h]h }(hjGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjbhhhNhNubah}(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&]uh1jhjwubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjwubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjwubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjwubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubjE)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjwubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu8 *out_valuesh](h)}(hhh]jE)}(hu8h]hu8}(hjۈhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj؈ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj݈modnameN classnameNjbje)}jh]jCc.of_property_read_u8_arrayasbuh1hhjԈubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjԈubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjԈubjE)}(h out_valuesh]h out_values}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjԈubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t szh](h)}(hhh]jE)}(hsize_th]hsize_t}(hj0hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj-ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj2modnameN classnameNjbje)}jh]jCc.of_property_read_u8_arrayasbuh1hhj)ubj1)}(h h]h }(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj)ubjE)}(hszh]hsz}(hj\hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(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.}(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=hjhhhjhMHubeh}(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. ``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.hhMLhjubj)}(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)}(hjljh]hconst struct device_node *np}(hjɉhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjʼnubah}(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&]uh1jBhj܉hMJhj݉ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj܉hMJhjubj)}(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&]uh1jhjhMKhjubj)}(hP``u8 *out_values`` pointer to return value, modified only if return value is 0. h](j)}(h``u8 *out_values``h]j)}(hj9h]hu8 *out_values}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMLhj3ubj)}(hhh]jC)}(h;`` h](j)}(h"dts entry of array should be like:h]h"dts entry of array should be like:}(hjيhhhNhNubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMShjՊubj)}(hhh]jC)}(h)``property = /bits/ 8 <0x50 0x60 0x70>;``h]j)}(hjh]h%property = /bits/ 8 <0x50 0x60 0x70>;}(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.hhMRhjubah}(h]h ]h"]h$]h&]uh1jhjՊubeh}(h]h ]h"]h$]h&]uh1jhjhMShjҊubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(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.hhMUhjubjC)}(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.hhMWhjubjC)}(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.hhMUhjubeh}(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}(hjkhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjghhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhubj1)}(h h]h }(hjzhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjghhhjyhMhubj)}(hof_property_read_u16_arrayh]jE)}(hof_property_read_u16_arrayh]hof_property_read_u16_array}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjghhhjyhMhubj)}(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}(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}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjދubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_property_read_u16_arrayasbuh1hhjubj1)}(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}(hj5hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj1ubj1)}(h h]h }(hjBhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1ubj)}(hcharh]hchar}(hjPhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj1ubj1)}(h h]h }(hj^hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1ubj)}(hjh]h*}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubjE)}(hpropnameh]hpropname}(hjyhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj1ubeh}(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]jc.of_property_read_u16_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}(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]jc.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&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjghhhjyhMhubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjchhhjyhMhubah}(h]j^ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjyhMhhj`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.}(hj@hhhNhNubah}(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=hj`hhhjyhMhubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajXjbjXjcjdjeuh1j 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)}(hjbh]h Parameters}(hjdhhhNhNubah}(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.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.hhMjhj{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&]uh1jBhjhMjhjubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1jhjhMjhjxubj)}(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.}(hjӍhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjύhMkhjЍubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjύhMkhjxubj)}(hQ``u16 *out_values`` pointer to return value, modified only if return value is 0. h](j)}(h``u16 *out_values``h]j)}(hjh]hu16 *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)}(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.hhMrhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMshjubah}(h]h ]h"]h$]h&]uh1jhj\ubjC)}(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.}(hjώhhhNhNubah}(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&]uh1jphjގubah}(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_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}(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 }(hj4hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj!hhhj3hMubj)}(hof_property_read_u32_arrayh]jE)}(hof_property_read_u32_arrayh]hof_property_read_u32_array}(hjFhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjBubah}(h]h ](jjeh"]h$]h&]hhuh1jhj!hhhj3hMubj)}(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}(hjbhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj^ubj1)}(h h]h }(hjohhhNhNubah}(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^jHsbc.of_property_read_u32_arrayasbuh1hhj^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&]noemphhhuh1jhjZubj)}(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}(hj3hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubj)}(hu32 *out_valuesh](h)}(hhh]jE)}(hu32h]hu32}(hjOhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjLubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjQmodnameN classnameNjbje)}jh]jc.of_property_read_u32_arrayasbuh1hhjHubj1)}(h h]h }(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjHubj)}(hjh]h*}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubjE)}(h out_valuesh]h out_values}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjHubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubj)}(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]jc.of_property_read_u32_arrayasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hszh]hsz}(hjАhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubeh}(h]h ]h"]h$]h&]hhuh1jhj!hhhj3hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj3hMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj3hMhjhhubj>)}(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.}(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=hjhhhj3hMubeh}(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)}(hj;h]hconst struct device_node *np}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj5ubj)}(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&]uh1jBhjPhMhjQubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhjPhMhj2ubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjth]hconst char *propname}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjnubj)}(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&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjhMhj2ubj)}(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)}(h)}(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.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjnhhubah}(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. ``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)}(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.}(hj˔hhhNhNubah}(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)}(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.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&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hQ``u64 *out_values`` pointer to return value, modified only if return value is 0. h](j)}(h``u64 *out_values``h]j)}(hj$h]hu64 *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.hhMhjubj)}(hhh]jC)}(h)}(hhh]jC)}(hHolds a changeset entryh]hHolds a changeset entry}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMihjRhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj hMubeh}(h]h ](j\structeh"]h$]h&]j`j\jajmjbjmjcjdjeuh1j 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}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjuubh:}(hjuhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMmhjqubjB)}(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; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMohjqubjC)}(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.hhMwhjqubj)}(hhh](j)}(h$``node`` list_head for the log list h](j)}(h``node``h]j)}(hj–h]hnode}(hjĖhhhNhNubah}(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}(hjۖhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjזhMlhjؖubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjזhMlhjubj)}(h``action`` notifier action h](j)}(h ``action``h]j)}(hjh]haction}(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.hhMmhjubj)}(hhh]jC)}(hnotifier actionh]hnotifier action}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMmhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMmhjubj)}(h+``np`` pointer to the device node affected h](j)}(h``np``h]j)}(hj4h]hnp}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(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}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjIhMnhjJubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhjIhMnhjubj)}(h*``prop`` pointer to the property affected h](j)}(h``prop``h]j)}(hjmh]hprop}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMohjgubj)}(hhh]jC)}(h pointer to the property affectedh]h pointer to the property affected}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMohjubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjhMohjubj)}(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.hhMohjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMohjubeh}(h]h ]h"]h$]h&]uh1jhjqubeh}(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.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}(hjhhhNhNubah}(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}(hj'hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj#hhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMxubj1)}(h h]h }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj#hhhj4hMxubj)}(h of_changeseth]jE)}(hj!h]h of_changeset}(hjGhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjCubah}(h]h ](jjeh"]h$]h&]hhuh1jhj#hhhj4hMxubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj4hMxubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj4hMxhjhhubj>)}(hhh]jC)}(hchangeset tracker structureh]hchangeset tracker structure}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjfhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj4hMxubeh}(h]h ](j\structeh"]h$]h&]j`j\jajjbjjcjdjeuh1j 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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubjB)}(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.hhMhjubjC)}(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.hhMhjubj)}(hhh]j)}(h/``entries`` list_head for the changeset entriesh](j)}(h ``entries``h]j)}(hj֘h]hentries}(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#list_head for the changeset entriesh]h#list_head for the changeset entries}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjИubeh}(h]h ]h"]h$]h&]uh1jhjhMhj͘ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(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}(hjWhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjShhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj1)}(h h]h }(hjehhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjShhhjdhMubj)}(h$of_device_is_system_power_controllerh]jE)}(h$of_device_is_system_power_controllerh]h$of_device_is_system_power_controller}(hjwhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjsubah}(h]h ](jjeh"]h$]h&]hhuh1jhjShhhjdhMubj)}(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 }(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^jysb&c.of_device_is_system_power_controllerasbuh1hhjubj1)}(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&]hhuh1jhjShhhjdhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjOhhhjdhMubah}(h]jJah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjdhMhjLhhubj>)}(hhh]jC)}(h9Tells if system-power-controller is found for device_nodeh]h9Tells if system-power-controller is found for device_node}(hj1hhhNhNubah}(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=hjLhhhjdhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajIjbjIjcjdjeuh1j 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)}(hjSh]h Parameters}(hjUhhhNhNubah}(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.hhMhjMubj)}(hhh]j)}(hB``const struct device_node *np`` Pointer to the given device_node h](j)}(h ``const struct device_node *np``h]j)}(hjrh]hconst struct device_node *np}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjlubj)}(hhh]jC)}(h Pointer to the given device_nodeh]h Pointer to the given device_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjlubeh}(h]h ]h"]h$]h&]uh1jhjhMhjiubah}(h]h ]h"]h$]h&]uh1jhjMubjC)}(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.hhMhjMubjC)}(htrue if present false otherwiseh]htrue if present false otherwise}(hjÚhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjMubeh}(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}(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_have_populated_dth]jE)}(hof_have_populated_dth]hof_have_populated_dt}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h(void)h]j)}(hvoidh]j)}(hvoidh]hvoid}(hj.hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj*ubah}(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)}(h#Has DT been populated by bootloaderh]h#Has DT been populated by bootloader}(hjXhhhNhNubah}(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=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajpjbjpjcjdjeuh1j 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)}(hjzh]h Parameters}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjxubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjtubj)}(hhh]j)}(h``void`` no arguments h](j)}(h``void``h]j)}(hjh]hvoid}(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.hhKhjubj)}(hhh]jC)}(h no argumentsh]h no arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjtubjC)}(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.hhKhjtubjC)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjtubeh}(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 }(hj'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj&hK$ubj)}(hof_property_read_boolh]jE)}(hof_property_read_boolh]hof_property_read_bool}(hj9hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj5ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj&hK$ubj)}(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&]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_read_boolasbuh1hhjQubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubjE)}(hnph]hnp}(hjɜhhhNhNubah}(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&]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 }(hj hhhNhNubah}(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&]noemphhhuh1jhjMubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj&hK$ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj&hK$ubah}(h]j ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj&hK$hjhhubj>)}(hhh]jC)}(hFind a propertyh]hFind a property}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK$hjMhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj&hK$ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajhjbjhjcjdjeuh1j 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)}(hjrh]h Parameters}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jphjpubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK(hjlubj)}(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.chK%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&]uh1jBhjhK%hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK%hjubj)}(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&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK&hjĝ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&]uh1jBhjߝhK&hjubah}(h]h ]h"]h$]h&]uh1jhjĝubeh}(h]h ]h"]h$]h&]uh1jhjߝhK&hjubeh}(h]h ]h"]h$]h&]uh1jhjlubjC)}(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.chK(hjlubjC)}(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'hjlubjC)}(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.chK*hjlubjC)}(h,true if the property exists false otherwise.h]h,true if the property exists false otherwise.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK+hjlubeh}(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}(hjqhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjmhhh[/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&]uh1j0hjmhhhj~hK>ubj)}(hof_graph_is_presenth]jE)}(hof_graph_is_presenth]hof_graph_is_present}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjmhhhj~hK>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}(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}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jsbc.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}(hj!hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjmhhhj~hK>ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjihhhj~hK>ubah}(h]jdah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj~hK>hjfhhubj>)}(hhh]jC)}(hcheck graph's presenceh]hcheck graph’s presence}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK>hjHhhubah}(h]h ]h"]h$]h&]uh1j=hjfhhhj~hK>ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajcjbjcjcjdjeuh1j 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)}(hjmh]h Parameters}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jphjkubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKBhjgubj)}(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)}(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.chK?hjubj)}(hhh]jC)}(h,pointer to device_node containing graph porth]h,pointer to device_node containing graph port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK?hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK?hjubah}(h]h ]h"]h$]h&]uh1jhjgubjC)}(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.chKAhjgubjC)}(hMTrue if **node** has a port or ports (with a port) sub-node, false otherwise.h](hTrue if }(hjݟhhhNhNubjq)}(h**node**h]hnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjݟubh= has a port or ports (with a port) sub-node, false otherwise.}(hjݟhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKAhjgubeh}(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&]uh1j0hjhhhj,hKRubj)}(hof_property_count_elems_of_sizeh]jE)}(hof_property_count_elems_of_sizeh]hof_property_count_elems_of_size}(hj?hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj;ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj,hKRubj)}(hC(const struct device_node *np, const char *propname, int elem_size)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hj[hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjWubj1)}(h h]h }(hjhhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWubj)}(hj"h]hstruct}(hjvhhhNhNubah}(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]jk)}j^jAsb!c.of_property_count_elems_of_sizeasbuh1hhjWubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubjE)}(hnph]hnp}(hjϠhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjWubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjSubj)}(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&]noemphhhuh1jhjSubj)}(h int elem_sizeh](j)}(hinth]hint}(hjEhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjAubj1)}(h h]h }(hjShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjAubjE)}(h elem_sizeh]h elem_size}(hjahhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjAubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjSubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj,hKRubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj,hKRubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj,hKRhjhhubj>)}(hhh]jC)}(h*Count the number of elements in a propertyh]h*Count the number of elements in a property}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKRhjhhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj,hKRubeh}(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)}(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.chKThjơ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&]uh1jBhjhKThjubah}(h]h ]h"]h$]h&]uh1jhjơubeh}(h]h ]h"]h$]h&]uh1jhjhKThjá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.chKUhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKUhjáubj)}(h1``int elem_size`` size of the individual element h](j)}(h``int elem_size``h]j)}(hj>h]h int elem_size}(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.chKVhj8ubj)}(hhh]jC)}(hsize of the individual elementh]hsize of the individual element}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjShKVhjTubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhjShKVhjáubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjyh]h Description}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjwubah}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKWhjubjC)}(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.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 }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhKubj)}(hof_property_read_u8_indexh]jE)}(hof_property_read_u8_indexh]hof_property_read_u8_index}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(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}(hj"hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hj"h]hstruct}(hj=hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj[hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjXubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj]modnameN classnameNjbje)}jh]jk)}j^jsbc.of_property_read_u8_indexasbuh1hhjubj1)}(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&]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}(hjʣhhhNhNubah}(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}(hjhhhNhNubah}(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&]uh1jDhj ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jwc.of_property_read_u8_indexasbuh1hhjubj1)}(h h]h }(hj-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hindexh]hindex}(hj;hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u8 *out_valueh](h)}(hhh]jE)}(hu8h]hu8}(hjWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjTubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjYmodnameN classnameNjbje)}jh]jwc.of_property_read_u8_indexasbuh1hhjPubj1)}(h h]h }(hjuhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubjE)}(h out_valueh]h out_value}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjݢhhhjhKubah}(h]jآah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhKhjڢhhubj>)}(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=hjڢhhhjhKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajҤjbjҤjcjdjeuh1j 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)}(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.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)}(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.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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(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.chKhj.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&]uh1jBhjIhKhjJubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhjIhKhjubj)}(h4``u32 index`` index of the u8 in the list of values h](j)}(h ``u32 index``h]j)}(hjmh]h u32 index}(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.chKhjgubj)}(hhh]jC)}(h%index of the u8 in the list of valuesh]h%index of the u8 in the list of values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(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.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&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhj֤ubjC)}(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.chKhj֤ubjC)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj֤ubjC)}(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.chKhj֤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.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.}(hj-hhhNhNubah}(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_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}(hj\hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjXhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKubj1)}(h h]h }(hjkhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXhhhjjhKubj)}(hof_property_read_u16_indexh]jE)}(hof_property_read_u16_indexh]hof_property_read_u16_index}(hj}hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjyubah}(h]h ](jjeh"]h$]h&]hhuh1jhjXhhhjjhKubj)}(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}(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^jsbc.of_property_read_u16_indexasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(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}(hj&hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj"ubj1)}(h h]h }(hj3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"ubj)}(hcharh]hchar}(hjAhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj"ubj1)}(h h]h }(hjOhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"ubj)}(hjh]h*}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubjE)}(hpropnameh]hpropname}(hjjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj"ubeh}(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]jc.of_property_read_u16_indexasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu16 *out_valueh](h)}(hhh]jE)}(hu16h]hu16}(hjΧhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj˧ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjЧmodnameN classnameNjbje)}jh]jc.of_property_read_u16_indexasbuh1hhjǧubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjǧubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjǧubjE)}(h out_valueh]h out_value}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjǧubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjXhhhjjhKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjThhhjjhKubah}(h]jOah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjjhKhjQhhubj>)}(hhh]jC)}(h0Find and read a u16 from a multi-value property.h]h0Find and read a u16 from a multi-value property.}(hj1hhhNhNubah}(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=hjQhhhjjhKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajIjbjIjcjdjeuh1j 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)}(hjSh]h Parameters}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjQubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjMubj)}(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)}(hjrh]hconst struct device_node *np}(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.chKhjlubj)}(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&]uh1jhjlubeh}(h]h ]h"]h$]h&]uh1jhjhKhjiubj)}(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.}(hjĨhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjiubj)}(h5``u32 index`` index of the u16 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.chKhjިubj)}(hhh]jC)}(h&index of the u16 in the list of valuesh]h&index of the u16 in the list of values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjިubeh}(h]h ]h"]h$]h&]uh1jhjhKhjiubj)}(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.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj2hKhj3ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj2hKhjiubeh}(h]h ]h"]h$]h&]uh1jhjMubjC)}(h**Description**h]jq)}(hjXh]h Description}(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.chKhjMubjC)}(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.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjMubjC)}(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.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjMubjC)}(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.chKhjMubjC)}(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.chKhjMubeh}(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}(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 }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjϩhhhjhKubj)}(hof_property_read_u32_indexh]jE)}(hof_property_read_u32_indexh]hof_property_read_u32_index}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjϩhhhjhKubj)}(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&]uh1jhj ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hj"h]hstruct}(hj+hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj 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^jsbc.of_property_read_u32_indexasbuh1hhj ubj1)}(h h]h }(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(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)}(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]jec.of_property_read_u32_indexasbuh1hhjubj1)}(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)}(hu32 *out_valueh](h)}(hhh]jE)}(hu32h]hu32}(hjEhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjBubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjGmodnameN classnameNjbje)}jh]jec.of_property_read_u32_indexasbuh1hhj>ubj1)}(h h]h }(hjchhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>ubj)}(hjh]h*}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubjE)}(h out_valueh]h out_value}(hj~hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjϩhhhjhKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj˩hhhjhKubah}(h]jƩah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhKhjȩhhubj>)}(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=hjȩhhhjhKubeh}(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)}(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.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)}(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.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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(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&]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.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj7hKhj8ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj7hKhjubj)}(h5``u32 index`` index of the u32 in the list of values h](j)}(h ``u32 index``h]j)}(hj[h]h u32 index}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjUubj)}(hhh]jC)}(h&index of the u32 in the list of valuesh]h&index of the u32 in the list of values}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjphKhjqubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjphKhjubj)}(hG``u32 *out_value`` pointer to return value, modified only if no error. h](j)}(h``u32 *out_value``h]j)}(hjh]hu32 *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&]uh1jhjhKhjubeh}(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:17: ./drivers/of/property.chKhjīubjC)}(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.chKhjīubjC)}(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.}(hjhhhNhNubah}(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)}(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.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_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}(hjJhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjFhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKubj1)}(h h]h }(hjYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjFhhhjXhKubj)}(hof_property_read_u64_indexh]jE)}(hof_property_read_u64_indexh]hof_property_read_u64_index}(hjkhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjgubah}(h]h ](jjeh"]h$]h&]hhuh1jhjFhhhjXhKubj)}(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}(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^ reftargetj­modnameN classnameNjbje)}jh]jk)}j^jmsbc.of_property_read_u64_indexasbuh1hhjubj1)}(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}(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 }(hj=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hjXhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 indexh](h)}(hhh]jE)}(hu32h]hu32}(hjthhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjqubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjvmodnameN classnameNjbje)}jh]jܭc.of_property_read_u64_indexasbuh1hhjmubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubjE)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjmubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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]jܭc.of_property_read_u64_indexasbuh1hhjubj1)}(h h]h }(hjڮhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(h out_valueh]h out_value}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjFhhhjXhKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjBhhhjXhKubah}(h]j=ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjXhKhj?hhubj>)}(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=hj?hhhjXhKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj7jbj7jcjdjeuh1j 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)}(hjAh]h Parameters}(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.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)}(hj`h]hconst struct device_node *np}(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.chKhjZubj)}(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.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjuhKhjvubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhjuhKhjWubj)}(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&]uh1jhjhKhjWubj)}(h5``u32 index`` index of the u64 in the list of values h](j)}(h ``u32 index``h]j)}(hjүh]h u32 index}(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&index of the u64 in the list of valuesh]h&index of the u64 in the list of values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhj̯ubeh}(h]h ]h"]h$]h&]uh1jhjhMhjWubj)}(hG``u64 *out_value`` pointer to return value, modified only if no error. h](j)}(h``u64 *out_value``h]j)}(hj h]hu64 *out_value}(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.chMhjubj)}(hhh]jC)}(h3pointer to return value, modified only if no error.h]h3pointer to return value, modified only if no error.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj hMhj!ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhjWubeh}(h]h ]h"]h$]h&]uh1jhj;ubjC)}(h**Description**h]jq)}(hjFh]h Description}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjDubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj;ubjC)}(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.}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj;ubjC)}(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.}(hjkhhhNhNubah}(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)}(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.chMhj;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.chMhj;ubeh}(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 }(hjаhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjϰhMubj)}(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&]uh1jDhjްubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjϰhMubj)}(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}(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^jsb$c.of_property_read_variable_u8_arrayasbuh1hhjubj1)}(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)}(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]jS$c.of_property_read_variable_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}(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}(hj@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj=ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjBmodnameN classnameNjbje)}jh]jS$c.of_property_read_variable_u8_arrayasbuh1hhj9ubj1)}(h h]h }(hj^hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9ubjE)}(hsz_minh]hsz_min}(hjlhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj9ubeh}(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]jS$c.of_property_read_variable_u8_arrayasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hsz_maxh]hsz_max}(hjhhhNhNubah}(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`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.}(hj޲hhhNhNubah}(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=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. ``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)}(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)}(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}(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.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.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj4hM hj5ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj4hM hjubj)}(h>``const char *propname`` name of the property to be searched. h](j)}(h``const char *propname``h]j)}(hjXh]hconst char *propname}(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$name of the property to be searched.h]h$name of the property to be searched.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjmhM!hjnubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjmhM!hjubj)}(h,``u8 *out_values`` pointer to found values. h](j)}(h``u8 *out_values``h]j)}(hjh]hu8 *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.chM"hjubj)}(hhh]jC)}(hpointer to found values.h]hpointer to found values.}(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_min`` minimum number of array elements to read h](j)}(h``size_t sz_min``h]j)}(hjʳh]h size_t sz_min}(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#hjijubj)}(hhh]jC)}(h(minimum number of array elements to readh]h(minimum number of array elements to read}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj߳hM#hjubah}(h]h ]h"]h$]h&]uh1jhjijubeh}(h]h ]h"]h$]h&]uh1jhj߳hM#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)}(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.chM&hjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM&hjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hj?h]h Description}(hjAhhhNhNubah}(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(hjubjC)}(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.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM'hjubj)}(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:}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM,hjgubj)}(hhh]jC)}(h)``property = /bits/ 8 <0x50 0x60 0x70>;``h]j)}(hjh]h%property = /bits/ 8 <0x50 0x60 0x70>;}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM+hjzubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjyhM,hjdubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(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.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.chM0hjubjC)}(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.chM.hjubeh}(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}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMOubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj hMOubj)}(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&]hhuh1jhjhhhj hMOubj)}(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}(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 sb%c.of_property_read_variable_u16_arrayasbuh1hhj6ubj1)}(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}(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}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjõubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubj)}(hu16 *out_valuesh](h)}(hhh]jE)}(hu16h]hu16}(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_u16_arrayasbuh1hhj ubj1)}(h h]h }(hjEhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(h out_valuesh]h out_values}(hj`hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubj)}(h size_t sz_minh](h)}(hhh]jE)}(hsize_th]hsize_t}(hj|hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjyubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj~modnameN classnameNjbje)}jh]j%c.of_property_read_variable_u16_arrayasbuh1hhjuubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjuubjE)}(hsz_minh]hsz_min}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjuubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubj)}(h size_t sz_maxh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjĶhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjƶmodnameN classnameNjbje)}jh]j%c.of_property_read_variable_u16_arrayasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hsz_maxh]hsz_max}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj hMOubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj hMOubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj hMOhjhhubj>)}(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=hjhhhj hMOubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj2jbj2jcjdjeuh1j 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)}(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.chMShj6ubj)}(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&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMRhjUubj)}(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&]uh1jBhjphMRhjqubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjphMRhjRubj)}(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.chMShjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMShjRubj)}(h-``u16 *out_values`` pointer to found values. 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&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMThjǷubj)}(hhh]jC)}(hpointer to found values.h]hpointer to found values.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMThjubah}(h]h ]h"]h$]h&]uh1jhjǷubeh}(h]h ]h"]h$]h&]uh1jhjhMThjRubj)}(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.chMUhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMUhjRubj)}(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}(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.chMXhj9ubj)}(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.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMVhjUubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhjThMXhjRubeh}(h]h ]h"]h$]h&]uh1jhj6ubjC)}(h**Description**h]jq)}(hj{h]h Description}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjyubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMZhj6ubjC)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMYhj6ubj)}(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^hjubah}(h]h ]h"]h$]h&]uh1jhj6ubjC)}(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`hj6ubjC)}(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.chMbhj6ubjC)}(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.chM`hj6ubeh}(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}(hj9hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj5hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hjHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5hhhjGhMubj)}(h#of_property_read_variable_u32_arrayh]jE)}(h#of_property_read_variable_u32_arrayh]h#of_property_read_variable_u32_array}(hjZhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjVubah}(h]h ](jjeh"]h$]h&]hhuh1jhj5hhhjGhMubj)}(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}(hjvhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjrubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjrubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjrubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjrubh)}(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\sb%c.of_property_read_variable_u32_arrayasbuh1hhjrubj1)}(h h]h }(hjϹhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjrubj)}(hjh]h*}(hjݹhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjrubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjnubj)}(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}(hjGhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjnubj)}(hu32 *out_valuesh](h)}(hhh]jE)}(hu32h]hu32}(hjchhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj`ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjemodnameN classnameNjbje)}jh]j˹%c.of_property_read_variable_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)}(h out_valuesh]h out_values}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjnubj)}(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 }(hjֺhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hsz_minh]hsz_min}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjnubj)}(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]j˹%c.of_property_read_variable_u32_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&]noemphhhuh1jhjnubeh}(h]h ]h"]h$]h&]hhuh1jhj5hhhjGhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj1hhhjGhMubah}(h]j,ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjGhMhj.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.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjShhubah}(h]h ]h"]h$]h&]uh1j=hj.hhhjGhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajnjbjnjcjdjeuh1j 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)}(hjxh]h Parameters}(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.chMhjrubj)}(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)}(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.chMhjʻ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&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjʻubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h4``u32 *out_values`` pointer to return found values. h](j)}(h``u32 *out_values``h]j)}(hj h]hu32 *out_values}(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)}(hpointer to return found values.h]hpointer to return found values.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h;``size_t sz_min`` minimum number of array elements to read h](j)}(h``size_t sz_min``h]j)}(hjBh]h size_t sz_min}(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)}(h(minimum number of array elements to readh]h(minimum number of array elements to read}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjWhMhjXubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhjWhMhjubj)}(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}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjuubj)}(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.chMhjubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjrubjC)}(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.chMhjrubjC)}(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.}(hjͼhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjrubjC)}(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.}(hjܼhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjrubjC)}(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.chMhjrubjC)}(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.chMhjrubeh}(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}(hj2hhhNhNubah}(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 }(hjAhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.hhhj@hMubj)}(hof_property_read_u64h]jE)}(hof_property_read_u64h]hof_property_read_u64}(hjShhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjOubah}(h]h ](jjeh"]h$]h&]hhuh1jhj.hhhj@hMubj)}(hD(const struct device_node *np, const char *propname, u64 *out_value)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^jUsbc.of_property_read_u64asbuh1hhjkubj1)}(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&]noemphhhuh1jhjgubj)}(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*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hj@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubj)}(hu64 *out_valueh](h)}(hhh]jE)}(hu64h]hu64}(hj\hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjYubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj^modnameN classnameNjbje)}jh]jĽc.of_property_read_u64asbuh1hhjUubj1)}(h h]h }(hjzhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubjE)}(h out_valueh]h out_value}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubeh}(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.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=hj'hhhj@hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj׾jbj׾jcjdjeuh1j 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&]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)}(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)}(hj9h]hconst char *propname}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj3ubj)}(hhh]jC)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjNhMhjOubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jhjNhMhjubj)}(hP``u64 *out_value`` pointer to return value, modified only if return value is 0. h](j)}(h``u64 *out_value``h]j)}(hjrh]hu64 *out_value}(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)}(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.}(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=hjhhhj6hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj]jbj]jcjdjeuh1j 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)}(hjgh]h Parameters}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jphjeubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjaubj)}(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&]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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj}ubj)}(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&]uh1jBhj hMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhj}ubj)}(h;``size_t sz_min`` minimum number of array elements to read h](j)}(h``size_t sz_min``h]j)}(hj1h]h size_t sz_min}(hj3hhhNhNubah}(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(minimum number of array elements to readh]h(minimum number of array elements to read}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjFhMhjGubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhjFhMhj}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)}(hjjh]h size_t sz_max}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjdubj)}(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.chMhjubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jhjhMhj}ubeh}(h]h ]h"]h$]h&]uh1jhjaubjC)}(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.chMhjaubjC)}(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.chMhjaubjC)}(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.chMhjaubjC)}(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.chMhjaubjC)}(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.chMhjaubeh}(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}(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/hMubj)}(hof_property_read_stringh]jE)}(hof_property_read_stringh]hof_property_read_string}(hjBhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj>ubah}(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&]uh1jhjZubj1)}(h h]h }(hjkhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubj)}(hj"h]hstruct}(hjyhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjZubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubh)}(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^jDsbc.of_property_read_stringasbuh1hhjZubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubj)}(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&]noemphhhuh1jhjVubj)}(hconst char **out_stringh](j)}(hj\h]hconst}(hjHhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjDubj1)}(h h]h }(hjUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDubj)}(hcharh]hchar}(hjchhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjDubj1)}(h h]h }(hjqhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubjE)}(h out_stringh]h out_string}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjDubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubeh}(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)}(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.chMhj7ubj)}(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&]uh1jBhjRhMhjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhMhjubj)}(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)}(hjvh]hconst char **out_string}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjpubj)}(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&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(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&]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.}(hj hhhNhNubah}(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}(hj<hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj8hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM#ubj1)}(h h]h }(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj8hhhjJhM#ubj)}(hof_property_match_stringh]jE)}(hof_property_match_stringh]hof_property_match_string}(hj]hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjYubah}(h]h ](jjeh"]h$]h&]hhuh1jhj8hhhjJhM#ubj)}(hH(const struct device_node *np, const char *propname, const char *string)h](j)}(hconst struct device_node *nph](j)}(hj\h]hconst}(hjyhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjuubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjuubj)}(hj"h]hstruct}(hjhhhNhNubah}(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]jk)}j^j_sbc.of_property_match_stringasbuh1hhjuubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjuubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjuubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjqubj)}(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 }(hj/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hjJhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjqubj)}(hconst char *stringh](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)}(hcharh]hchar}(hj~hhhNhNubah}(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)}(hstringh]hstring}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj_ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjqubeh}(h]h ]h"]h$]h&]hhuh1jhj8hhhjJhM#ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj4hhhjJhM#ubah}(h]j/ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjJhM#hj1hhubj>)}(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=hj1hhhjJhM#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$hj ubj)}(hhh]jC)}(h7pointer to the node containing the string list propertyh]h7pointer to the node containing the string list property}(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)}(h3``const char *propname`` string list property name h](j)}(h``const char *propname``h]j)}(hjKh]hconst char *propname}(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.chM%hjEubj)}(hhh]jC)}(hstring list property nameh]hstring list property name}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj`hM%hjaubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhj`hM%hj ubj)}(hN``const char *string`` pointer to the string to search for in the string list h](j)}(h``const char *string``h]j)}(hjh]hconst char *string}(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)}(h6pointer to the string to search for in the string listh]h6pointer to the string to search for in the string list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM&hjubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(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&]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}(hj+hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj'hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMMubj1)}(h h]h }(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj'hhhj9hMMubj)}(hof_property_read_string_helperh]jE)}(hof_property_read_string_helperh]hof_property_read_string_helper}(hjLhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjHubah}(h]h ](jjeh"]h$]h&]hhuh1jhj'hhhj9hMMubj)}(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}(hjhhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjdubj1)}(h h]h }(hjuhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjdubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubh)}(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^jNsb c.of_property_read_string_helperasbuh1hhjdubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjdubeh}(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*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hpropnameh]hpropname}(hj9hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj`ubj)}(hconst char **out_strsh](j)}(hj\h]hconst}(hjRhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjNubj1)}(h h]h }(hj_hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubj)}(hcharh]hchar}(hjmhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjNubj1)}(h h]h }(hj{hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubjE)}(hout_strsh]hout_strs}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjNubeh}(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}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj`ubeh}(h]h ]h"]h$]h&]hhuh1jhj'hhhj9hMMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj#hhhj9hMMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj9hMMhj hhubj>)}(hhh]jC)}(h,Utility helper for parsing string propertiesh]h,Utility helper for parsing string properties}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMMhjGhhubah}(h]h ]h"]h$]h&]uh1j=hj hhhj9hMMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajbjbjbjcjdjeuh1j 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)}(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:17: ./drivers/of/property.chMQhjfubj)}(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.chMNhjubj)}(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&]uh1jBhjhMNhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMNhjubj)}(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&]uh1jhjhMOhjubj)}(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&]uh1jhjhMPhjubj)}(h0``size_t sz`` number of array elements to read. h](j)}(h ``size_t sz``h]j)}(hj6h]h size_t sz}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMQhj0ubj)}(hhh]jC)}(h!number of array elements to read.h]h!number of array elements to read.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjKhMQhjLubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhjKhMQhjubj)}(hB``int skip`` Number of strings to skip over at beginning of list. h](j)}(h ``int skip``h]j)}(hjoh]hint skip}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMRhjiubj)}(hhh]jC)}(h4Number of strings to skip over at beginning of list.h]h4Number of strings to skip over at beginning of list.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMRhjubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1jhjhMRhjubeh}(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:17: ./drivers/of/property.chMThjfubjC)}(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.chMShjfubeh}(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&]uh1jDhj ubah}(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}(hj,hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj(ubj1)}(h h]h }(hj9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj(ubj)}(hj"h]hstruct}(hjGhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj(ubj1)}(h h]h }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj(ubh)}(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^jsbc.of_graph_parse_endpointasbuh1hhj(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$ubj)}(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]jc.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&]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%parse common endpoint node propertiesh]h%parse common endpoint node properties}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj7hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajRjbjRjcjdjeuh1j 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)}(hj\h]h Parameters}(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.chMhjVubj)}(hhh](j)}(hC``const struct device_node *node`` pointer to endpoint device_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&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjuubj)}(hhh]jC)}(hpointer to endpoint device_nodeh]hpointer to endpoint device_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jhjhMhjrubj)}(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&]uh1jhjhMhjrubeh}(h]h ]h"]h$]h&]uh1jhjVubjC)}(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.chMhjVubjC)}(h/The caller should hold a reference to **node**.h](h&The caller should hold a reference to }(hjhhhNhNubjq)}(h**node**h]hnode}(hj hhhNhNubah}(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.chMhjVubeh}(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}(hjFhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjBhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj1)}(h h]h }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBhhhjShMubh)}(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_graph_get_port_by_idsbc.of_graph_get_port_by_idasbuh1hhjBhhhjShMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBhhhjShMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBhhhjShMubj)}(hof_graph_get_port_by_idh]jE)}(hjh]hof_graph_get_port_by_id}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjBhhhjShMubj)}(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]jc.of_graph_get_port_by_idasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj hhhNhNubah}(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}(hj3hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj0ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj5modnameN classnameNjbje)}jh]jc.of_graph_get_port_by_idasbuh1hhj,ubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,ubjE)}(hidh]hid}(hj_hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjBhhhjShMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj>hhhjShMubah}(h]j9ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjShMhj;hhubj>)}(hhh]jC)}(h get the port matching a given idh]h get the port matching a given id}(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=hj;hhhjShMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j 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)}(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.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.}(hjThhhNhNubah}(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}(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_next_portsbc.of_graph_get_next_portasbuh1hhjhhhjhMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hof_graph_get_next_porth]jE)}(hjh]hof_graph_get_next_port}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(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 }(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}(hj6hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj3ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj8modnameN classnameNjbje)}jh]jc.of_graph_get_next_portasbuh1hhjubj1)}(h h]h }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hparenth]hparent}(hjohhhNhNubah}(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_graph_get_next_portasbuh1hhjubj1)}(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&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj{hhhjhMubah}(h]jvah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjxhhubj>)}(hhh]jC)}(hget next port node.h]hget next port node.}(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=hjxhhhjhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj!jbj!jcjdjeuh1j 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)}(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.chMhj%ubj)}(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)}(hjJh]h const struct device_node *parent}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjDubj)}(hhh]jC)}(h7pointer to the parent device node, or parent ports nodeh]h7pointer to the parent device node, or parent ports node}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj_hMhj`ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhj_hMhjAubj)}(hF``struct device_node *prev`` previous port 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.chMhj}ubj)}(hhh]jC)}(h(previous port node, or NULL to get firsth]h(previous port node, or NULL to get first}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jhjhMhjAubeh}(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)}(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.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)}(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 }(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.chMhj%ubeh}(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}(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_next_port_endpointsb!c.of_graph_get_next_port_endpointasbuh1hhjJhhhj[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_next_port_endpointh]jE)}(hjh]hof_graph_get_next_port_endpoint}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjJhhhj[hM 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]j!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}(hj:hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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]j!c.of_graph_get_next_port_endpointasbuh1hhjOubj1)}(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&]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)}(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=hjChhhj[hM 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&]uh1jBhj*hM hj+ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj*hM hj ubj)}(hJ``struct device_node *prev`` previous endpoint node, or NULL to get first h](j)}(h``struct device_node *prev``h]j)}(hjNh]hstruct device_node *prev}(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,previous endpoint node, or NULL to get firsth]h,previous endpoint node, or NULL to get first}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjchMhjdubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhjchMhj ubeh}(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)}(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 }(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_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 }(hj hhhNhNubah}(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}(hj?hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj;ubah}(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}(hjZhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjVubj1)}(h h]h }(hjghhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubj)}(hj"h]hstruct}(hjuhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjVubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubh)}(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_endpointasbuh1hhjVubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubjE)}(hparenth]hparent}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjVubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjRubj)}(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 }(hj!hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hprevh]hprev}(hj<hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjRubeh}(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}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM&hjchhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhM&ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj~jbj~jcjdjeuh1j 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)}(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)}(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'hjubj)}(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&]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)}(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(hjubeh}(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.chM*hjubjC)}(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 }(hj1hhhNhNubjq)}(h**prev**h]hprev}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj1ubh node is decremented.}(hj1hhhNhNubeh}(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_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}(hjrhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjnhhh[/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&]uh1j0hjnhhhjhM_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_endpoint_by_regssbc.of_graph_get_endpoint_by_regsasbuh1hhjnhhhjhM_ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjnhhhjhM_ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnhhhjhM_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&]hhuh1jhjnhhhjhM_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}(hj%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj"ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj'modnameN classnameNjbje)}jh]jc.of_graph_get_endpoint_by_regsasbuh1hhjubj1)}(h h]h }(hjChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjQhhhNhNubah}(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}(hjwhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjsubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjsubjE)}(hport_regh]hport_reg}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjsubeh}(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&]hhuh1jhjnhhhjhM_ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjjhhhjhM_ubah}(h]jeah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhM_hjghhubj>)}(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=hjghhhjhM_ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj jbj jcjdjeuh1j 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)}(hj3h]h const struct device_node *parent}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(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}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjHhM`hjIubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jhjHhM`hj*ubj)}(hL``int port_reg`` identifier (value of reg property) of the parent port node h](j)}(h``int port_reg``h]j)}(hjlh]h int port_reg}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMahjfubj)}(hhh]jC)}(h:identifier (value of reg property) of the parent port nodeh]h:identifier (value of reg property) of the parent port node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMahjubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhjhMahj*ubj)}(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.chMbhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMbhj*ubeh}(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}(hj%hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj!hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMzubj1)}(h h]h }(hj3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj!hhhj2hMzubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjDhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjAubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjFmodnameN classnameNjbje)}jh]jk)}j^of_graph_get_remote_endpointsbc.of_graph_get_remote_endpointasbuh1hhj!hhhj2hMzubj1)}(h h]h }(hjehhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj!hhhj2hMzubj)}(hjh]h*}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhj2hMzubj)}(hof_graph_get_remote_endpointh]jE)}(hjbh]hof_graph_get_remote_endpoint}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhj!hhhj2hMzubj)}(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]j`c.of_graph_get_remote_endpointasbuh1hhjubj1)}(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&]hhuh1jhj!hhhj2hMzubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj2hMzubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj2hMzhjhhubj>)}(hhh]jC)}(hget remote endpoint nodeh]hget remote endpoint node}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMzhj8hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj2hMzubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajSjbjSjcjdjeuh1j 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)}(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~hjWubj)}(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)}(hj|h]hconst struct device_node *node}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM{hjvubj)}(hhh]jC)}(h'pointer to a local endpoint device_nodeh]h'pointer to a local endpoint device_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhM{hjubah}(h]h ]h"]h$]h&]uh1jhjvubeh}(h]h ]h"]h$]h&]uh1jhjhM{hjsubah}(h]h ]h"]h$]h&]uh1jhjWubjC)}(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}hjWubjC)}(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}hjWubeh}(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&]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 hhhjhMubh)}(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_graph_get_port_parentsbc.of_graph_get_port_parentasbuh1hhj hhhjhMubj1)}(h h]h }(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj hhhjhMubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhjhMubj)}(hof_graph_get_port_parenth]jE)}(hjKh]hof_graph_get_port_parent}(hjmhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhjhMubj)}(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]jIc.of_graph_get_port_parentasbuh1hhjubj1)}(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&]hhuh1jhj hhhjhMubeh}(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}(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\jaj!jbj!jcjdjeuh1j 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)}(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.chMhj%ubj)}(hhh]j)}(hE``struct device_node *node`` pointer to a local endpoint device_node h](j)}(h``struct device_node *node``h]j)}(hjJh]hstruct device_node *node}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjDubj)}(hhh]jC)}(h'pointer to a local endpoint device_nodeh]h'pointer to a local endpoint device_node}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj_hMhj`ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhj_hMhjAubah}(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`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 }(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.chMhj%ubeh}(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*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hof_graph_get_remote_port_parenth]jE)}(hjh]hof_graph_get_remote_port_parent}(hj;hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj7ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(h (const struct device_node *node)h]j)}(hconst struct device_node *nodeh](j)}(hj\h]hconst}(hjVhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjRubj1)}(h h]h }(hjchhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubj)}(hj"h]hstruct}(hjqhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjRubj1)}(h h]h }(hj~hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubh)}(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_port_parentasbuh1hhjRubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubjE)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjRubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubah}(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\jaj jbj jcjdjeuh1j 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)}(hj3h]hconst struct device_node *node}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(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}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjHhMhjIubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jhjHhMhj*ubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjnh]hReturn}(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.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 }(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.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}(hj$hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(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&]uh1jhj;ubj1)}(h h]h }(hjLhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;ubj)}(hj"h]hstruct}(hjZhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj;ubj1)}(h h]h }(hjghhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;ubh)}(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]jc.of_graph_get_remote_portasbuh1hhj;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&]noemphhhuh1jhj7ubah}(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}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj1hMhj2ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj1hMhjubah}(h]h ]h"]h$]h&]uh1jhjubjC)}(h **Return**h]jq)}(hjWh]hReturn}(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.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 }(hjmhhhNhNubjq)}(h**node**h]hnode}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjmubh$. Use of_node_put() on it when done.}(hjmhhhNhNubeh}(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}(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^ reftargetjBmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_graph_get_endpoint_countasbuh1hhjubj1)}(h h]h }(hj`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hj{hhhNhNubah}(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 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.chMhjhhubah}(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)}(hj!h]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.chMhjubjC)}(h%count of endpoint of this device nodeh]h%count of endpoint of this device node}(hj7hhhNhNubah}(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)}(h)}(hhh]jC)}(h0get the number of port in a device or ports nodeh]h0get the number of port in a device or ports node}(hjBhhhNhNubah}(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[hhhjthMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajZjbjZjcjdjeuh1j 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)}(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.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)}(hjh]hstruct 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.chMhj}ubj)}(hhh]jC)}(h#pointer to the device or ports nodeh]h#pointer to the device or ports node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jhjhMhjzubah}(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}(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_nodesbc.of_graph_get_remote_nodeasbuh1hhjhhhjhMubj1)}(h h]h }(hjChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hjh]h*}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hof_graph_get_remote_nodeh]jE)}(hj@h]hof_graph_get_remote_node}(hjbhhhNhNubah}(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}(hj}hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjyubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjyubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubh)}(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_nodeasbuh1hhjyubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubjE)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjuubj)}(hu32 porth](h)}(hhh]jE)}(hu32h]hu32}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj modnameN classnameNjbje)}jh]j>c.of_graph_get_remote_nodeasbuh1hhjubj1)}(h h]h }(hj)hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(hporth]hport}(hj7hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjuubj)}(h u32 endpointh](h)}(hhh]jE)}(hu32h]hu32}(hjShhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjUmodnameN classnameNjbje)}jh]j>c.of_graph_get_remote_nodeasbuh1hhjLubj1)}(h h]h }(hjqhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjLubjE)}(hendpointh]hendpoint}(hjhhhNhNubah}(h]h ]jQah"]h$4]h&]uh1jDhjLubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjuubeh}(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}(hj0hhhNhNubah}(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\jajHjbjHjcjdjeuh1j 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}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jphjPubh:}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjLubjB)}(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; };}hjmsbah}(h]h ]h"]h$]h&]hhuh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjLubjC)}(h **Members**h]jq)}(hj~h]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj|ubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjLubj)}(hhh](j)}(hO``port`` identifier (value of reg property) of a port this endpoint belongs to h](j)}(h``port``h]j)}(hjh]hport}(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)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(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&]uh1jhjhKhjubj)}(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&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhj ubj)}(hhh]jC)}(h'pointer to device_node of this endpointh]h'pointer to device_node of this endpoint}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhj%ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj$hKhjubeh}(h]h ]h"]h$]h&]uh1jhjLubeh}(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)}(hjch]hfor_each_endpoint_of_node}(hjmhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubah}(h]h ](jjeh"]h$]h&]hhuh1jhjehhh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKubah}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjahhhjhKubah}(h]j\ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhKhj^hhubj>)}(hhh]h}(h]h ]h"]h$]h&]uh1j=hj^hhhjhKubeh}(h]h ](j\macroeh"]h$]h&]j`j\jajjbjjcjdjeuh1j hhhhhNhNubjC)}(h-``for_each_endpoint_of_node (parent, child)``h]j)}(hjh]h)for_each_endpoint_of_node (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()}(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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK hj ubah}(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)}(hj,h]hchild}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(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)}(h3loop variable pointing to the current endpoint nodeh]h3loop variable pointing to the current endpoint node}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjAhK!hjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhK!hjubeh}(h]h ]h"]h$]h&]uh1jhjubjC)}(h**Description**h]jq)}(hjgh]h Description}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jphjeubah}(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.}(hj}hhhNhNubah}(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]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhK*hjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]uh1j=hjhhhjhK*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'hj hK*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)}(hj6h]hparent}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK+hj0ubj)}(hhh]jC)}(h+parent device or ports node containing porth]h+parent device or ports node containing port}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjKhK+hjLubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhjKhK+hj-ubj)}(h:``child`` loop variable pointing to the current port node h](j)}(h ``child``h]j)}(hjoh]hchild}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK,hjiubj)}(hhh]jC)}(h/loop variable pointing to the current port nodeh]h/loop variable pointing to the current port node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK,hjubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1jhjhK,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}(hj)hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj%ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj!hhh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK6ubah}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj<hK6ubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj<hK6hjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]uh1j=hjhhhj<hK6ubeh}(h]h ](j\macroeh"]h$]h&]j`j\jajUjbjUjcjdjeuh1j hhhhhNhNubjC)}(h3``for_each_of_graph_port_endpoint (parent, child)``h]j)}(hj[h]h/for_each_of_graph_port_endpoint (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.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}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK6hjqubah}(h]h ]h"]h$]h&]uh1j'hjhK6hhhhubjg)}(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)}(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 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&]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: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 }(hj9hhhNhNubjq)}(h **child**h]hchild}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj9ubh, you need to use return_ptr(}(hj9hhhNhNubjq)}(h **child**h]hchild}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jphj9ubh) or no_free_ptr(}(hj9hhhNhNubjq)}(h **child**h]hchild}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jphj9ubh) not to call __free() for it.}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK9hjubeh}(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}(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 }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubh)}(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_regionasbuh1hhjhhhjhMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hof_translate_dma_regionh]jE)}(hjh]hof_translate_dma_region}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj)}(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 }(hj%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj6hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj3ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj8modnameN classnameNjbje)}jh]jc.of_translate_dma_regionasbuh1hhjubj1)}(h h]h }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hdevh]hdev}(hjohhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst __be32 *proph](j)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(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_regionasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hproph]hprop}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(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*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hstarth]hstart}(hj4hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hsize_t *lengthh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjPhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjMubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjRmodnameN classnameNjbje)}jh]jc.of_translate_dma_regionasbuh1hhjIubj1)}(h h]h }(hjnhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjIubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubjE)}(hlengthh]hlength}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjIubeh}(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,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=hjhhhjhMubeh}(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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhjubj)}(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&]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)}(hpointer into array of cellsh]hpointer into array of cells}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjBhMhjCubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhjBhMhjubj)}(hC``phys_addr_t *start`` return value for the start of the DMA range h](j)}(h``phys_addr_t *start``h]j)}(hjfh]hphys_addr_t *start}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj{hMhj|ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hMhjubj)}(h@``size_t *length`` return value for the length of the DMA range h](j)}(h``size_t *length``h]j)}(hjh]hsize_t *length}(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,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&]uh1jhjubeh}(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}(hj@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj<ubah}(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}(hj\hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjXubj1)}(h h]h }(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjzhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjwubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj|modnameN classnameNjbje)}jh]jk)}j^jBsbc.of_property_read_regasbuh1hhjXubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjXubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjTubj)}(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&]noemphhhuh1jhjTubj)}(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]jc.of_property_read_regasbuh1hhjubj1)}(h h]h }(hj$hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(haddrh]haddr}(hj?hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjTubj)}(h u64 *sizeh](h)}(hhh]jE)}(hu64h]hu64}(hj[hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjXubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj]modnameN classnameNjbje)}jh]jc.of_property_read_regasbuh1hhjTubj1)}(h h]h }(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubjE)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjTubeh}(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)}(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=hjhhhj7hMubeh}(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)}(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:23: ./drivers/of/address.chMhjubj)}(hhh]j)}(h'``struct device_node *np`` device 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&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhj$ubj)}(hhh]jC)}(h device nodeh]h device node}(hjChhhNhNubah}(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&]uh1jhjubjC)}(h**Description**h]jq)}(hjeh]h Description}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jphjcubah}(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.}(hj{hhhNhNubah}(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.chMAubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMAubj)}(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&]hhuh1jhjhhhjhMAubj)}(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 }(hj%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hdevh]hdev}(hj@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int indexh](j)}(hinth]hint}(hjYhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjUubj1)}(h h]h }(hjghhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubjE)}(hindexh]hindex}(hjuhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct resource *rh](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]j!c.of_address_to_resourceasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hrh]hr}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMAubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhjhMAubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMAhjhhubj>)}(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.chMAhj hhubah}(h]h ]h"]h$]h&]uh1j=hjhhhjhMAubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj'jbj'jcjdjeuh1j 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)}(hj1h]h Parameters}(hj3hhhNhNubah}(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.chMEhj+ubj)}(hhh](j)}(h1``struct device_node *dev`` Caller's Device Node h](j)}(h``struct device_node *dev``h]j)}(hjPh]hstruct device_node *dev}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMBhjJubj)}(hhh]jC)}(hCaller's Device Nodeh]hCaller’s Device Node}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjehMBhjfubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jhjehMBhjGubj)}(h#``int index`` Index into the array 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.chMChjubj)}(hhh]jC)}(hIndex into the arrayh]hIndex into the array}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMChjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMChjGubj)}(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.chMDhjubj)}(hhh]jC)}(hPointer to resource arrayh]hPointer to resource array}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMDhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMDhjGubeh}(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.chMFhj+ubjC)}(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.chMEhj+ubjC)}(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}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMGhj+ubeh}(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}(hjQhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjMhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM`ubj1)}(h h]h }(hj`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjMhhhj_hM`ubh__iomem}(hjMhhhNhNubj1)}(h h]h }(hjrhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjMhhhj_hM`ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMhhhj_hM`ubj)}(hof_iomaph]jE)}(hof_iomaph]hof_iomap}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjMhhhj_hM`ubj)}(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^jsb 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}(hj;hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjMhhhj_hM`ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjIhhhj_hM`ubah}(h]jDah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj_hM`hjFhhubj>)}(hhh]jC)}(h1Maps the memory mapped IO for a given device_nodeh]h1Maps the memory mapped IO for a given device_node}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM`hjbhhubah}(h]h ]h"]h$]h&]uh1j=hjFhhhj_hM`ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj}jbj}jcjdjeuh1j 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)}(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.chMdhjubj)}(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.chMahjubj)}(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&]uh1jBhjhMahjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMahjubj)}(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.chMbhjubj)}(hhh]jC)}(hindex of the io rangeh]hindex of the io range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMbhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMbhjubeh}(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.chMdhjubjC)}(h&Returns a pointer to the mapped memoryh]h&Returns a pointer to the mapped memory}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMchjubeh}(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&]uh1jhj[hhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK ubj1)}(h h]h }(hjnhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[hhhjmhK ubj)}(hinth]hint}(hj|hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj[hhhjmhK ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[hhhjmhK ubj)}(hirq_of_parse_and_maph]jE)}(hirq_of_parse_and_maph]hirq_of_parse_and_map}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhj[hhhjmhK 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^jsbc.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}(hj*hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj&ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj&ubjE)}(hindexh]hindex}(hjFhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj[hhhjmhK ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjWhhhjmhK ubah}(h]jRah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjmhK hjThhubj>)}(hhh]jC)}(h0Parse and map an interrupt into linux virq spaceh]h0Parse and map an interrupt into linux virq space}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK hjmhhubah}(h]h ]h"]h$]h&]uh1j=hjThhhjmhK ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajjbjjcjdjeuh1j 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)}(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.chK$hjubj)}(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&]uh1jhjubjC)}(h**Description**h]jq)}(hj%h]h Description}(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.chK$hjubjC)}(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}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK#hjubeh}(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}(hjjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjfhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK7ubj1)}(h h]h }(hjxhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfhhhjwhK7ubh)}(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_irq_find_parentsbc.of_irq_find_parentasbuh1hhjfhhhjwhK7ubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfhhhjwhK7ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfhhhjwhK7ubj)}(hof_irq_find_parenth]jE)}(hjh]hof_irq_find_parent}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjfhhhjwhK7ubj)}(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 }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hchildh]hchild}(hj;hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjfhhhjwhK7ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjbhhhjwhK7ubah}(h]j]ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjwhK7hj_hhubj>)}(hhh]jC)}(h3Given a device node, find its interrupt parent nodeh]h3Given a device node, find its interrupt parent node}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK7hjbhhubah}(h]h ]h"]h$]h&]uh1j=hj_hhhjwhK7ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj}jbj}jcjdjeuh1j 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)}(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.chK;hjubj)}(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.chK8hjubj)}(hhh]jC)}(hpointer to device nodeh]hpointer to device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhK8hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK8hjubah}(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.chK:hjubjC)}(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:hjubeh}(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}(hj&hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj"hhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKubj1)}(h h]h }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"hhhj4hKubj)}(hof_irq_parse_rawh]jE)}(hof_irq_parse_rawh]hof_irq_parse_raw}(hjGhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjCubah}(h]h ](jjeh"]h$]h&]hhuh1jhj"hhhj4hKubj)}(h5(const __be32 *addr, struct of_phandle_args *out_irq)h](j)}(hconst __be32 *addrh](j)}(hj\h]hconst}(hjchhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj_ubj1)}(h h]h }(hjphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj_ubh)}(hhh]jE)}(h__be32h]h__be32}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj~ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]jk)}j^jIsbc.of_irq_parse_rawasbuh1hhj_ubj1)}(h h]h }(hjhhhNhNubah}(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&]noemphhhuh1jhj[ubj)}(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]jc.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}(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)}(h Low level interrupt tree parsingh]h Low level interrupt tree parsing}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjShhubah}(h]h ]h"]h$]h&]uh1j=hjhhhj4hKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajnjbjnjcjdjeuh1j 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)}(hjxh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjvubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjrubj)}(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)}(hjh]hconst __be32 *addr}(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)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(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&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjrubjC)}(h**Description**h]jq)}(hj h]h Description}(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.chKhjrubjC)}(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.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjrubjC)}(h **Return**h]jq)}(hj2h]hReturn}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj0ubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjrubjC)}(h+0 on success and a negative number on errorh]h+0 on success and a negative number on error}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjrubjC)}(h**Note**h]jq)}(hjYh]hNote}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjWubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjrubjC)}(h>refcount of node **out_irq->np** is increased by 1 on success.h](hrefcount of node }(hjohhhNhNubjq)}(h**out_irq->np**h]h out_irq->np}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjoubh is increased by 1 on success.}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjrubeh}(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}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj modnameN classnameNjbje)}jh]jk)}j^jsbc.of_irq_parse_oneasbuh1hhjubj1)}(h h]h }(hj+hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hdeviceh]hdevice}(hjFhhhNhNubah}(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&]uh1jhj[ubj1)}(h h]h }(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[ubjE)}(hindexh]hindex}(hj{hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj[ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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]j'c.of_irq_parse_oneasbuh1hhjubj1)}(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&]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)}(hj7h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj5ubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj1ubj)}(hhh](j)}(hL``struct device_node *device`` the device whose interrupt is to be resolved h](j)}(h``struct device_node *device``h]j)}(hjVh]hstruct device_node *device}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjPubj)}(hhh]jC)}(h,the device whose interrupt is to be resolvedh]h,the device whose interrupt is to be resolved}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjkhMhjlubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhjkhMhjMubj)}(h0``int index`` index of the interrupt to resolve 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.chMhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjMubj)}(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&]uh1jhjhMhjMubeh}(h]h ]h"]h$]h&]uh1jhj1ubjC)}(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.chMhj1ubjC)}(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.chMhj1ubjC)}(h**Note**h]jq)}(hj*h]hNote}(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.chMhj1ubjC)}(h>refcount of node **out_irq->np** is increased by 1 on success.h](hrefcount of node }(hj@hhhNhNubjq)}(h**out_irq->np**h]h out_irq->np}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj@ubh is increased by 1 on success.}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj1ubeh}(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}(hjhhhNhNubah}(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 }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj}hhhjhMubj)}(hof_irq_to_resourceh]jE)}(hof_irq_to_resourceh]hof_irq_to_resource}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhj}hhhjhMubj)}(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*}(hj hhhNhNubah}(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}(hj0hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj,ubj1)}(h h]h }(hj>hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,ubjE)}(hindexh]hindex}(hjLhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct resource *rh](j)}(hj"h]hstruct}(hjehhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjaubj1)}(h h]h }(hjrhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjaubh)}(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_resourceasbuh1hhjaubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjaubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubjE)}(hjh]hr}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjaubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj}hhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjyhhhjhMubah}(h]jtah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjvhhubj>)}(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=hjvhhhjhMubeh}(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}(hj hhhNhNubah}(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)}(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.chMhj ubj)}(hhh]jC)}(hpointer to device tree nodeh]hpointer to 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;hMhjubj)}(h*``int index`` zero-based index of the irq h](j)}(h ``int index``h]j)}(hj_h]h int index}(hjahhhNhNubah}(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.chMhjYubj)}(hhh]jC)}(hzero-based index of the irqh]hzero-based index of the irq}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjthMhjuubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jhjthMhjubj)}(hK``struct resource *r`` pointer to resource structure to return result into.h](j)}(h``struct resource *r``h]j)}(hjh]hstruct resource *r}(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)}(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&]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_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 }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj hMubj)}(h of_irq_geth]jE)}(h of_irq_geth]h of_irq_get}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj hMubj)}(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}(hjM hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjJ ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjO modnameN classnameNjbje)}jh]jk)}j^j sb c.of_irq_getasbuh1hhj+ ubj1)}(h h]h }(hjm 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)}(h int indexh](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj ubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubjE)}(hindexh]hindex}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj' ubeh}(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)}(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=hjhhhj hMubeh}(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}(hjA 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)}(hja h]h int index}(hjc 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)}(hzero-based index of the IRQh]hzero-based index of the IRQ}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjv hM hjw ubah}(h]h ]h"]h$]h&]uh1jhj[ ubeh}(h]h ]h"]h$]h&]uh1jhjv 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.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&]uh1jDhj9 ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj> modnameN classnameNjbje)}jh]jk)}j^j sbc.of_irq_get_bynameasbuh1hhj ubj1)}(h h]h }(hj\ hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubj)}(hjh]h*}(hjj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjE)}(hdevh]hdev}(hjw hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj 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&]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.chMChj 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}(hjA 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@hj9 ubj)}(hhh]jC)}(hpointer to device tree nodeh]hpointer to device tree node}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjT hM@hjU ubah}(h]h ]h"]h$]h&]uh1jhj9 ubeh}(h]h ]h"]h$]h&]uh1jhjT hM@hj6 ubj)}(h``const char *name`` IRQ name h](j)}(h``const char *name``h]j)}(hjx h]hconst char *name}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMAhjr ubj)}(hhh]jC)}(hIRQ nameh]hIRQ name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj hMAhj ubah}(h]h ]h"]h$]h&]uh1jhjr ubeh}(h]h ]h"]h$]h&]uh1jhj hMAhj6 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.chMChj 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.chMChj 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.chMWubj1)}(h h]h }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj hhhj hMWubj)}(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 hMWubj)}(h(struct device_node *dev)h]j)}(hstruct device_node *devh](j)}(hj"h]hstruct}(hj5 hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj1 ubj1)}(h h]h }(hjB hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1 ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjS hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjP ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjU modnameN classnameNjbje)}jh]jk)}j^j sbc.of_irq_countasbuh1hhj1 ubj1)}(h h]h }(hjs hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1 ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1 ubjE)}(hdevh]hdev}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj1 ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj- ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hMWubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj hhhj hMWubah}(h]j ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj hMWhj 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.chMWhj hhubah}(h]h ]h"]h$]h&]uh1j=hj hhhj hMWubeh}(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.chM[hj 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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMXhjubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjhM]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}(hjShhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjOhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMiubj1)}(h h]h }(hjbhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjOhhhjahMiubj)}(hof_irq_to_resource_tableh]jE)}(hof_irq_to_resource_tableh]hof_irq_to_resource_table}(hjthhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjpubah}(h]h ](jjeh"]h$]h&]hhuh1jhjOhhhjahMiubj)}(h<(struct device_node *dev, struct resource *res, int nr_irqs)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^jvsbc.of_irq_to_resource_tableasbuh1hhjubj1)}(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)}(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}(hj hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj"modnameN classnameNjbje)}jh]jc.of_irq_to_resource_tableasbuh1hhjubj1)}(h h]h }(hj>hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hresh]hres}(hjYhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int nr_irqsh](j)}(hinth]hint}(hjrhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjnubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjnubjE)}(hnr_irqsh]hnr_irqs}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjnubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjOhhhjahMiubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjKhhhjahMiubah}(h]jFah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjahMihjHhhubj>)}(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.chMihjhhubah}(h]h ]h"]h$]h&]uh1j=hjHhhhjahMiubeh}(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.chMmhjubj)}(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.chMjhjubj)}(hhh]jC)}(hpointer to device tree nodeh]hpointer to device tree node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMjhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMjhjubj)}(h7``struct resource *res`` array of resources to fill in h](j)}(h``struct resource *res``h]j)}(hj2h]hstruct resource *res}(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.chMkhj,ubj)}(hhh]jC)}(harray of resources to fill inh]harray of resources to fill in}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjGhMkhjHubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhjGhMkhjubj)}(hQ``int nr_irqs`` the number of IRQs (and upper bound for num of **res** elements) h](j)}(h``int nr_irqs``h]j)}(hjkh]h int nr_irqs}(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.chMlhjeubj)}(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 }(hjhhhNhNubjq)}(h**res**h]hres}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubh elements)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhjhMlhjubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1jhjhMlhjubeh}(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.chMnhjubjC)}(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.chMnhjubeh}(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_xlateasbuh1hhj hhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj1)}(h h]h }(hj4hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj hhhj3hMubj)}(h of_msi_xlateh]jE)}(hj0h]h of_msi_xlate}(hjFhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjBubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhj3hMubj)}(h<(struct device *dev, struct device_node **msi_np, u32 id_in)h](j)}(hstruct device *devh](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)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj|ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j.c.of_msi_xlateasbuh1hhj]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&]noemphhhuh1jhjYubj)}(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 }(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hmsi_nph]hmsi_np}(hj5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYubj)}(h u32 id_inh](h)}(hhh]jE)}(hu32h]hu32}(hjQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjNubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjSmodnameN classnameNjbje)}jh]j.c.of_msi_xlateasbuh1hhjJubj1)}(h h]h }(hjohhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJubjE)}(hid_inh]hid_in}(hj}hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjJubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj3hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhhhj3hMubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj3hMhjhhubj>)}(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=hjhhhj3hMubeh}(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.chM hjubj)}(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&]uh1jBhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(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)}(hj!h]hstruct device_node **msi_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.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.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM!hj7ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj6hM%hjubj)}(h``u32 id_in`` Device ID. h](j)}(h ``u32 id_in``h]j)}(hj[h]h u32 id_in}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM&hjUubj)}(hhh]jC)}(h Device ID.h]h Device ID.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjphM&hjqubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjphM&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&]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.chMeubj1)}(h h]h }(hj"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj!hMeubh)}(hhh]jE)}(h irq_domainh]h irq_domain}(hj3hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj0ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj5modnameN classnameNjbje)}jh]jk)}j^of_msi_get_domainsbc.of_msi_get_domainasbuh1hhjhhhj!hMeubj1)}(h h]h }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhj!hMeubj)}(hjh]h*}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj!hMeubj)}(hof_msi_get_domainh]jE)}(hjQh]hof_msi_get_domain}(hjshhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjoubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhj!hMeubj)}(hS(struct device *dev, const struct device_node *np, enum irq_domain_bus_token token)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]jOc.of_msi_get_domainasbuh1hhjubj1)}(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)}(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]jOc.of_msi_get_domainasbuh1hhjubj1)}(h h]h }(hjUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjphhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(henum irq_domain_bus_token tokenh](j)}(henumh]henum}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(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]jOc.of_msi_get_domainasbuh1hhjubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubjE)}(htokenh]htoken}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj!hMeubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj hhhj!hMeubah}(h]jah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj!hMehj hhubj>)}(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.chMehjhhubah}(h]h ]h"]h$]h&]uh1j=hj hhhj!hMeubeh}(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)}(hj h]h Parameters}(hj"hhhNhNubah}(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.chMihjubj)}(hhh](j)}(h@``struct device *dev`` device for which the domain is requested h](j)}(h``struct device *dev``h]j)}(hj?h]hstruct device *dev}(hjAhhhNhNubah}(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.chMfhj9ubj)}(hhh]jC)}(h(device for which the domain is requestedh]h(device for which the domain is requested}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjThMfhjUubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhjThMfhj6ubj)}(h9``const struct device_node *np`` device node for **dev** h](j)}(h ``const struct device_node *np``h]j)}(hjxh]hconst struct device_node *np}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMghjrubj)}(hhh]jC)}(hdevice node for **dev**h](hdevice node for }(hjhhhNhNubjq)}(h**dev**h]hdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjubeh}(h]h ]h"]h$]h&]uh1jBhjhMghjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jhjhMghj6ubj)}(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.chMhhjubj)}(hhh]jC)}(hbus type for this domainh]hbus type for this domain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhhj6ubeh}(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.chMjhjubjC)}(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.chMihjubjC)}(h **Return**h]jq)}(hj!h]hReturn}(hj#hhhNhNubah}(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.chMkhjubjC)}(h4the MSI domain for this device (or NULL on failure).h]h4the MSI domain for this device (or NULL on failure).}(hj7hhhNhNubah}(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_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}(hjfhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjbhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj1)}(h h]h }(hjuhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjbhhhjthMubj)}(hof_msi_configureh]jE)}(hof_msi_configureh]hof_msi_configure}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjbhhhjthMubj)}(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&]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_msi_configureasbuh1hhjubj1)}(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)}(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}(hj0hhhNhNubah}(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}(hjNhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjKubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjPmodnameN classnameNjbje)}jh]jc.of_msi_configureasbuh1hhjubj1)}(h h]h }(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hnph]hnp}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjbhhhjthMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj^hhhjthMubah}(h]jYah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjthMhj[hhubj>)}(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=hj[hhhjthMubeh}(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}(hj hhhNhNubah}(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)}(hj+h]hconst struct device_node *np}(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.chMhj%ubj)}(hhh]jC)}(hdevice node for that deviceh]hdevice node for that device}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjAubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj@hMhjubeh}(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}(hjhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(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&]hhuh1jhjhhhjhMubj)}(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*}(hj"hhhNhNubah}(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}(hjHhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjDubj1)}(h h]h }(hjUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjfhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjcubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjhmodnameN classnameNjbje)}jh]jk)}j^jsbc.of_fdt_unflatten_treeasbuh1hhjDubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubjE)}(hdadh]hdad}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjDubeh}(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]jc.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&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj}hhhjhMubah}(h]jxah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjhMhjzhhubj>)}(hhh]jC)}(h*create tree of device_nodes from flat blobh]h*create tree of device_nodes from flat blob}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjEhhubah}(h]h ]h"]h$]h&]uh1j=hjzhhhjhMubeh}(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)}(hjjh]h Parameters}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjhubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjdubj)}(hhh](j)}(h4``const unsigned long *blob`` Flat device tree blob h](j)}(h``const unsigned long *blob``h]j)}(hjh]hconst unsigned long *blob}(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)}(hFlat device tree blobh]hFlat device tree blob}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(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&]uh1jhjhMhjubj)}(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&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjdubjC)}(h**Description**h]jq)}(hj6h]h Description}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj4ubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjdubjC)}(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.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjdubjC)}(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:29: ./drivers/of/fdt.chMhjdubjC)}(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.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jBhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjdubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhhhhhNhNubeh}(h]core-functionsah ]h"]core functionsah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hDriver model functionsh]hDriver model functions}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK!ubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #of_driver_match_device (C function)c.of_driver_match_devicehNtauh1hhjhhhNhNubj)}(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 }(hj6hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hdevh]hdev}(hjQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst struct device_driver *drvh](j)}(hj\h]hconst}(hjjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjfubj1)}(h h]h }(hjwhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfubj)}(hj"h]hstruct}(hjhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjfubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfubh)}(hhh]jE)}(h device_driverh]h device_driver}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j2c.of_driver_match_deviceasbuh1hhjfubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubjE)}(hdrvh]hdrv}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjfubeh}(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 hhhjhNhNubjg)}(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)}(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:35: ./include/linux/of_device.hhKhj"ubj)}(hhh](j)}(h=``struct device *dev`` the device structure to match against h](j)}(h``struct device *dev``h]j)}(hjGh]hstruct device *dev}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKhjAubj)}(hhh]jC)}(h%the device structure to match againsth]h%the device structure to match against}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj\hKhj]ubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jhj\hKhj>ubj)}(hG``const struct device_driver *drv`` the device_driver structure to testh](j)}(h#``const struct device_driver *drv``h]j)}(hjh]hconst struct device_driver *drv}(hjhhhNhNubah}(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.hhKhjzubj)}(hhh]jC)}(h#the device_driver structure to testh]h#the device_driver structure to test}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]uh1jhjhKhj>ubeh}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_match_device (C function)c.of_match_devicehNtauh1hhjhhhNhNubj)}(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 }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhhhjhKubj)}(hjh]h*}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hof_match_deviceh]jE)}(hj2h]hof_match_device}(hjThhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPubah}(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}(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 of_device_idh]h of_device_id}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjmodnameN classnameNjbje)}jh]j0c.of_match_deviceasbuh1hhjkubj1)}(h h]h }(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubjE)}(hmatchesh]hmatches}(hjhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubj)}(hconst struct device *devh](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}(hj hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjubj1)}(h h]h }(hj" hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubh)}(hhh]jE)}(hdeviceh]hdevice}(hj3 hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj0 ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj5 modnameN classnameNjbje)}jh]j0c.of_match_deviceasbuh1hhjubj1)}(h h]h }(hjQ hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubj)}(hjh]h*}(hj_ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjE)}(hdevh]hdev}(hjl hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubeh}(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}(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=hjhhhjhKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj jbj jcjdjeuh1j hhhjhNhNubjg)}(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)}(hjK!h]h Description}(hjM!hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjI!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.}(hja!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&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j  of_dma_configure_id (C function)c.of_dma_configure_idhNtauh1hhjhhhNhNubj)}(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}(hj!hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj!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&]uh1j0hj!hhhj!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&]hhuh1jhj!hhhj!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 }(hjL"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;"ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj]"hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjZ"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)}(hnph]hnp}(hj"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&]hhuh1jhj!hhhj!hKEubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj!hhhj!hKEubah}(h]j!ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj!hKEhj!hhubj>)}(hhh]jC)}(hSetup DMA configurationh]hSetup DMA configuration}(hjd#hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKEhja#hhubah}(h]h ]h"]h$]h&]uh1j=hj!hhhj!hKEubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj|#jbj|#jcjdjeuh1j hhhjhNhNubjg)}(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)}(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.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#hKFhj#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#hKGhj#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.}(hj0$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,$hKIhj#ubj)}(h8``const u32 *id`` Optional const pointer value input id h](j)}(h``const u32 *id``h]j)}(hjQ$h]h const u32 *id}(hjS$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjO$ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKJhjK$ubj)}(hhh]jC)}(h%Optional const pointer value input idh]h%Optional const pointer value input id}(hjj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjf$hKJhjg$ubah}(h]h ]h"]h$]h&]uh1jhjK$ubeh}(h]h ]h"]h$]h&]uh1jhjf$hKJhj#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.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&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_device_modalias (C function)c.of_device_modaliashNtauh1hhjhhhNhNubj)}(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}(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)}(hdeviceh]hdevice}(hjP%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjM%ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjR%modnameN classnameNjbje)}jh]j$c.of_device_modaliasasbuh1hhj.%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)}(hdevh]hdev}(hj%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&]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)}(hstrh]hstr}(hj%hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj%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\jajU&jbjU&jcjdjeuh1j hhhjhNhNubjg)}(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}(hja&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.chKhjY&ubj)}(hhh](j)}(h&``struct device *dev`` Calling device 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.chKhjx&ubj)}(hhh]jC)}(hCalling deviceh]hCalling device}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj&hKhj&ubah}(h]h ]h"]h$]h&]uh1jhjx&ubeh}(h]h ]h"]h$]h&]uh1jhj&hKhju&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&hKhju&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'hKhju&ubeh}(h]h ]h"]h$]h&]uh1jhjY&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_device_uevent (C function)c.of_device_ueventhNtauh1hhjhhhNhNubj)}(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}(hjX'hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjT'hhhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKubj1)}(h h]h }(hjg'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjT'hhhjf'hKubj)}(hof_device_ueventh]jE)}(hof_device_ueventh]hof_device_uevent}(hjy'hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhju'ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjT'hhhjf'hKubj)}(h7(const struct device *dev, struct kobj_uevent_env *env)h](j)}(hconst struct device *devh](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)}(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_device_ueventasbuh1hhj'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 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^ reftargetjB(modnameN classnameNjbje)}jh]j'c.of_device_ueventasbuh1hhj(ubj1)}(h h]h }(hj^(hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj(ubj)}(hjh]h*}(hjl(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubjE)}(henvh]henv}(hjy(hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj'ubeh}(h]h ]h"]h$]h&]hhuh1jhjT'hhhjf'hKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjP'hhhjf'hKubah}(h]jK'ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjf'hKhjM'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=hjM'hhhjf'hKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj(jbj(jcjdjeuh1j hhhjhNhNubjg)}(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}(hj6)hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj3)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhj2)hKhj(ubeh}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j "of_device_make_bus_id (C function)c.of_device_make_bus_idhNtauh1hhjhhhNhNubj)}(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}(hjw)hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjs)hhhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMubj1)}(h h]h }(hj)hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjs)hhhj)hMubj)}(hof_device_make_bus_idh]jE)}(hof_device_make_bus_idh]hof_device_make_bus_id}(hj)hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj)ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjs)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.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&]hhuh1jhjs)hhhj)hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjo)hhhj)hMubah}(h]jj)ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj)hMhjl)hhubj>)}(hhh]jC)}(h0Use the device node data to assign a unique nameh]h0Use the device node data to assign a unique name}(hj7*hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMhj4*hhubah}(h]h ]h"]h$]h&]uh1j=hjl)hhhj)hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajO*jbjO*jcjdjeuh1j hhhjhNhNubjg)}(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)}(hjY*h]h Parameters}(hj[*hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjW*ubah}(h]h ]h"]h$]h&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMhjS*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)}(hjx*h]hstruct device *dev}(hjz*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv*ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMhjr*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}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj*hMhj*ubah}(h]h ]h"]h$]h&]uh1jhjr*ubeh}(h]h ]h"]h$]h&]uh1jhj*hMhjo*ubah}(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&]uh1jBhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMhjS*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.chMhjS*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_dev_auxdata (C struct)c.of_dev_auxdatahNtauh1hhjhhha/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_auxdataX}(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.hhKhj8+hhubah}(h]h ]h"]h$]h&]uh1j=hj*hhhj+hKubeh}(h]h ](j\structeh"]h$]h&]j`j\jajS+jbjS+jcjdjeuh1j hhhjhj*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&]uh1jphj[+ubh:}(hj[+hhhNhNubeh}(h]h ]h"]h$]h&]uh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjW+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; };}hjx+sbah}(h]h ]h"]h$]h&]hhuh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjW+ubjC)}(h **Members**h]jq)}(hj+h]hMembers}(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 hjW+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}(hj3,hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj/,hKhj0,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)}(hjS,h]h platform_data}(hjU,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ,ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjM,ubj)}(hhh]jC)}(h*platform_data to assign for matching nodesh]h*platform_data to assign for matching nodes}(hjl,hhhNhNubah}(h]h ]h"]h$]h&]uh1jBha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhji,ubah}(h]h ]h"]h$]h&]uh1jhjM,ubeh}(h]h ]h"]h$]h&]uh1jhjh,hKhj+ubeh}(h]h ]h"]h$]h&]uh1jhjW+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjhhhj*hNubjC)}(h**Description**h]jq)}(hj,h]h Description}(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.hhKhjhhubjC)}(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.hhKhjhhubjC)}(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.hhKhjhhubjC)}(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"hjhhubjC)}(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#hjhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #of_find_device_by_node (C function)c.of_find_device_by_nodehNtauh1hhjhhhNhNubj)}(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 }(hjJ-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-hhhj-hKubj)}(hjh]h*}(hjX-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-hhhj-hKubj)}(hof_find_device_by_nodeh]jE)}(hjG-h]hof_find_device_by_node}(hji-hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhje-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 }(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]jE-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&]noemphhhuh1jhj|-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 hhhjhNhNubjg)}(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)}(hjF.h]hstruct device_node *np}(hjH.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD.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&]uh1jBhj[.hKhj\.ubah}(h]h ]h"]h$]h&]uh1jhj@.ubeh}(h]h ]h"]h$]h&]uh1jhj[.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.}(hj.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&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_device_alloc (C function)c.of_device_allochNtauh1hhjhhhNhNubj)}(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}(hjL/hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjH/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}(hjg/hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjc/ubj1)}(h h]h }(hjt/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjc/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_device_allocasbuh1hhjc/ubj1)}(h h]h }(hj/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjc/ubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjc/ubjE)}(hnph]hnp}(hj/hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjc/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 }(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubjE)}(hbus_idh]hbus_id}(hj0hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_/ubj)}(hstruct device *parenth](j)}(hj"h]hstruct}(hj40hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj00ubj1)}(h h]h }(hjA0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj00ubh)}(hhh]jE)}(hdeviceh]hdevice}(hjR0hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjO0ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjT0modnameN classnameNjbje)}jh]j(/c.of_device_allocasbuh1hhj00ubj1)}(h h]h }(hjp0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj00ubj)}(hjh]h*}(hj~0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj00ubjE)}(hparenth]hparent}(hj0hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj00ubeh}(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 hhhjhNhNubjg)}(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}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj 1hK]hj 1ubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhj 1hK]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}(hj11hhhNhNubah}(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^hj)1ubj)}(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.}(hjH1hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjD1hK^hjE1ubah}(h]h ]h"]h$]h&]uh1jhj)1ubeh}(h]h ]h"]h$]h&]uh1jhjD1hK^hj0ubj)}(h(``struct device *parent`` Parent device.h](j)}(h``struct device *parent``h]j)}(hjh1h]hstruct device *parent}(hjj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjf1ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK`hjb1ubj)}(hhh]jC)}(hParent device.h]hParent device.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK_hj~1ubah}(h]h ]h"]h$]h&]uh1jhjb1ubeh}(h]h ]h"]h$]h&]uh1jhj}1hK`hj0ubeh}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j &of_platform_device_create (C function)c.of_platform_device_createhNtauh1hhjhhhNhNubj)}(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 }(hj2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1hhhj1hKubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1hhhj1hKubj)}(hof_platform_device_createh]jE)}(hj1h]hof_platform_device_create}(hj!2hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj2ubah}(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}(hj<2hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj82ubj1)}(h h]h }(hjI2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj82ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjZ2hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjW2ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj\2modnameN classnameNjbje)}jh]j1c.of_platform_device_createasbuh1hhj82ubj1)}(h h]h }(hjx2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj82ubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj82ubjE)}(hnph]hnp}(hj2hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj82ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj42ubj)}(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&]noemphhhuh1jhj42ubj)}(hstruct device *parenth](j)}(hj"h]hstruct}(hj 3hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj3ubj1)}(h h]h }(hj3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj'3hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj$3ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj)3modnameN classnameNjbje)}jh]j1c.of_platform_device_createasbuh1hhj3ubj1)}(h h]h }(hjE3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3ubj)}(hjh]h*}(hjS3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubjE)}(hparenth]hparent}(hj`3hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj42ubeh}(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}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj3hhubah}(h]h ]h"]h$]h&]uh1j=hj1hhhj1hKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj3jbj3jcjdjeuh1j hhhjhNhNubjg)}(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)}(hj4h]hconst char *bus_id}(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.chKhj3ubj)}(hhh]jC)}(hname to assign deviceh]hname to assign device}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj4hKhj4ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jhj4hKhj3ubj)}(h<``struct device *parent`` Linux device model parent device. h](j)}(h``struct device *parent``h]j)}(hj=4h]hstruct device *parent}(hj?4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;4ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj74ubj)}(hhh]jC)}(h!Linux device model parent device.h]h!Linux device model parent device.}(hjV4hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjR4hKhjS4ubah}(h]h ]h"]h$]h&]uh1jhj74ubeh}(h]h ]h"]h$]h&]uh1jhjR4hKhj3ubeh}(h]h ]h"]h$]h&]uh1jhj3ubjC)}(h **Return**h]jq)}(hjx4h]hReturn}(hjz4hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjv4ubah}(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.}(hj4hhhNhNubah}(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&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j "of_platform_bus_probe (C function)c.of_platform_bus_probehNtauh1hhjhhhNhNubj)}(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 }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4ubh)}(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]jk)}j^j4sbc.of_platform_bus_probeasbuh1hhj4ubj1)}(h h]h }(hj85hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4ubj)}(hjh]h*}(hjF5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubjE)}(hrooth]hroot}(hjS5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj4ubj)}(h"const struct of_device_id *matchesh](j)}(hj\h]hconst}(hjl5hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjh5ubj1)}(h h]h }(hjy5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjh5ubj)}(hj"h]hstruct}(hj5hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjh5ubj1)}(h h]h }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjh5ubh)}(hhh]jE)}(h of_device_idh]h of_device_id}(hj5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj5ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj5modnameN classnameNjbje)}jh]j45c.of_platform_bus_probeasbuh1hhjh5ubj1)}(h h]h }(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjh5ubj)}(hjh]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh5ubjE)}(hmatchesh]hmatches}(hj5hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjh5ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj4ubj)}(hstruct device *parenth](j)}(hj"h]hstruct}(hj5hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj5ubj1)}(h h]h }(hj6hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj6hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj6ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj6modnameN classnameNjbje)}jh]j45c.of_platform_bus_probeasbuh1hhj5ubj1)}(h h]h }(hj36hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5ubj)}(hjh]h*}(hjA6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubjE)}(hparenth]hparent}(hjN6hhhNhNubah}(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}(hjx6hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhju6hhubah}(h]h ]h"]h$]h&]uh1j=hj4hhhj4hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj6jbj6jcjdjeuh1j hhhjhNhNubjg)}(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)}(hj6h]h Parameters}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jphj6ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj6ubj)}(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}(hj 7hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhj7hMhj6ubj)}(hI``struct device *parent`` parent to hook devices from, NULL for toplevel h](j)}(h``struct device *parent``h]j)}(hj+7h]hstruct device *parent}(hj-7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)7ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj%7ubj)}(hhh]jC)}(h.parent to hook devices from, NULL for toplevelh]h.parent to hook devices from, NULL for toplevel}(hjD7hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj@7hMhjA7ubah}(h]h ]h"]h$]h&]uh1jhj%7ubeh}(h]h ]h"]h$]h&]uh1jhj@7hMhj6ubeh}(h]h ]h"]h$]h&]uh1jhj6ubjC)}(h**Description**h]jq)}(hjf7h]h Description}(hjh7hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjd7ubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj6ubjC)}(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.}(hj|7hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj6ubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j !of_platform_populate (C function)c.of_platform_populatehNtauh1hhjhhhNhNubj)}(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}(hj8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj8ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj8modnameN classnameNjbje)}jh]jk)}j^j7sbc.of_platform_populateasbuh1hhj7ubj1)}(h h]h }(hj&8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubj)}(hjh]h*}(hj48hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubjE)}(hrooth]hroot}(hjA8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubj)}(h"const struct of_device_id *matchesh](j)}(hj\h]hconst}(hjZ8hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjV8ubj1)}(h h]h }(hjg8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjV8ubj)}(hj"h]hstruct}(hju8hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjV8ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjV8ubh)}(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]j"8c.of_platform_populateasbuh1hhjV8ubj1)}(h h]h }(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjV8ubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjV8ubjE)}(hmatchesh]hmatches}(hj8hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjV8ubeh}(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}(hj9hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj8ubj1)}(h h]h }(hj 9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj8ubh)}(hhh]jE)}(hof_dev_auxdatah]hof_dev_auxdata}(hj9hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj9ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj 9modnameN classnameNjbje)}jh]j"8c.of_platform_populateasbuh1hhj8ubj1)}(h h]h }(hj<9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj8ubj)}(hjh]h*}(hjJ9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubjE)}(hlookuph]hlookup}(hjW9hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj8ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubj)}(hstruct device *parenth](j)}(hj"h]hstruct}(hjp9hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjl9ubj1)}(h h]h }(hj}9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjl9ubh)}(hhh]jE)}(hdeviceh]hdevice}(hj9hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj9ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj9modnameN classnameNjbje)}jh]j"8c.of_platform_populateasbuh1hhjl9ubj1)}(h h]h }(hj9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjl9ubj)}(hjh]h*}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl9ubjE)}(hparenth]hparent}(hj9hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjl9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubeh}(h]h ]h"]h$]h&]hhuh1jhj7hhhj7hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj7hhhj7hMubah}(h]j7ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj7hMhj7hhubj>)}(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=hj7hhhj7hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj :jbj :jcjdjeuh1j hhhjhNhNubjg)}(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)}(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)}(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)}(hj2:h]hstruct device_node *root}(hj4:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0: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}(hjK:hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjG:hMhjH:ubah}(h]h ]h"]h$]h&]uh1jhj,:ubeh}(h]h ]h"]h$]h&]uh1jhjG: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)}(hjk:h]h"const struct of_device_id *matches}(hjm:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji:ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhje: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&]uh1jhje: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.chMhj: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&]uh1jhj: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&]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)}(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}(hj6;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.chMhj :ubjC)}(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().}(hjO;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)}(hj`;h]hReturn}(hjb;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)}(h0 on success, < 0 on failure.h]h0 on success, < 0 on failure.}(hjv;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&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j #of_platform_depopulate (C function)c.of_platform_depopulatehNtauh1hhjhhhNhNubj)}(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/uh1jj0j1hj;hhhj;hM~ubah}(h]j;ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj;hM~hj;hhubj>)}(hhh]jC)}(h)Remove devices populated from device treeh]h)Remove devices populated from device tree}(hje<hhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chM~hjb<hhubah}(h]h ]h"]h$]h&]uh1j=hj;hhhj;hM~ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj}<jbj}<jcjdjeuh1j hhhjhNhNubjg)}(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)}(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)}(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<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 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&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j &devm_of_platform_populate (C function)c.devm_of_platform_populatehNtauh1hhjhhhNhNubj)}(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 }(hj5=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"=hhhj4=hMubj)}(hdevm_of_platform_populateh]jE)}(hdevm_of_platform_populateh]hdevm_of_platform_populate}(hjG=hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjC=ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj"=hhhj4=hMubj)}(h(struct device *dev)h]j)}(hstruct device *devh](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)}(hdeviceh]hdevice}(hj=hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj~=ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj=modnameN classnameNjbje)}jh]jk)}j^jI=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&]noemphhhuh1jhj[=ubah}(h]h ]h"]h$]h&]hhuh1jhj"=hhhj4=hMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj=hhhj4=hMubah}(h]j=ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj4=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=hhhj4=hMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj=jbj=jcjdjeuh1j hhhjhNhNubjg)}(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)}(hjb>h]h Description}(hjd>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.}(hjx>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)}(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.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&]uh1jfhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j (devm_of_platform_depopulate (C function)c.devm_of_platform_depopulatehNtauh1hhjhhhNhNubj)}(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 }(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?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}(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 hhhjhNhNubjg)}(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&]uh1jfhjhhhNhNubeh}(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}(hjA@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}(hjh@hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjd@hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKubj1)}(h h]h }(hjw@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjd@hhhjv@hKubj)}(hof_resolve_phandlesh]jE)}(hof_resolve_phandlesh]hof_resolve_phandles}(hj@hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj@ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjd@hhhjv@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^j@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&]noemphhhuh1jhj@ubah}(h]h ]h"]h$]h&]hhuh1jhjd@hhhjv@hKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hj`@hhhjv@hKubah}(h]j[@ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjv@hKhj]@hhubj>)}(hhh]jC)}(h.Relocate and resolve overlay against live treeh]h.Relocate and resolve overlay against live tree}(hj(AhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj%Ahhubah}(h]h ]h"]h$]h&]uh1j=hj]@hhhjv@hKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jaj@Ajbj@Ajcjdjeuh1j 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)}(hjJAh]h Parameters}(hjLAhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjHAubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhjDAubj)}(hhh]j)}(hV``struct device_node *overlay`` Pointer to devicetree overlay to relocate and resolve h](j)}(h``struct device_node *overlay``h]j)}(hjiAh]hstruct device_node *overlay}(hjkAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgAubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhjcAubj)}(hhh]jC)}(h5Pointer to devicetree overlay to relocate and resolveh]h5Pointer to devicetree overlay to relocate and resolve}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj~AhKhjAubah}(h]h ]h"]h$]h&]uh1jhjcAubeh}(h]h ]h"]h$]h&]uh1jhj~AhKhj`Aubah}(h]h ]h"]h$]h&]uh1jhjDAubjC)}(h**Description**h]jq)}(hjAh]h Description}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhjDAubjC)}(hXModify (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.h](h.Modify (relocate) values of local phandles in }(hjAhhhNhNubjq)}(h **overlay**h]hoverlay}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubhr to a range that does not conflict with the live expanded devicetree. Update references to the local phandles in }(hjAhhhNhNubjq)}(h **overlay**h]hoverlay}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubh*. Update (resolve) phandle references in }(hjAhhhNhNubjq)}(h **overlay**h]hoverlay}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjAubh, that refer to the live expanded devicetree.}(hjAhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhjDAubjC)}(hX)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.h]hX)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.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhjDAubjC)}(hXThe 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.h]hXThe 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.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhjDAubjC)}(h**overlay** must be detached.h](jq)}(h **overlay**h]hoverlay}(hj!BhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjBubh must be detached.}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhjDAubjC)}(hX1Resolving 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.h](hResolving and applying }(hj:BhhhNhNubjq)}(h **overlay**h]hoverlay}(hjBBhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj:BubhX 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.}(hj:BhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhjDAubjC)}(h **Return**h]jq)}(hj]Bh]hReturn}(hj_BhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj[Bubah}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhjDAubjC)}(h4``0`` on success or a negative error value on error.h](j)}(h``0``h]h0}(hjwBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsBubh/ on success or a negative error value on error.}(hjsBhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhjDAubeh}(h]h ] kernelindentah"]h$]h&]uh1jfhj>@hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](j of_node_get (C function) c.of_node_gethNtauh1hhj>@hhhNhNubj)}(hhh](j)}(h;struct device_node * of_node_get (struct device_node *node)h]j)}(h9struct device_node *of_node_get(struct device_node *node)h](j)}(hj"h]hstruct}(hjBhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjBhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chKubj1)}(h h]h }(hjBhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBhhhjBhKubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjBhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjBubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjBmodnameN classnameNjbje)}jh]jk)}j^ of_node_getsb c.of_node_getasbuh1hhjBhhhjBhKubj1)}(h h]h }(hjBhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBhhhjBhKubj)}(hjh]h*}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBhhhjBhKubj)}(h of_node_geth]jE)}(hjBh]h of_node_get}(hjChhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj Cubah}(h]h ](jjeh"]h$]h&]hhuh1jhjBhhhjBhKubj)}(h(struct device_node *node)h]j)}(hstruct device_node *nodeh](j)}(hj"h]hstruct}(hj*ChhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj&Cubj1)}(h h]h }(hj7ChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj&Cubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjHChhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjECubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjJCmodnameN classnameNjbje)}jh]jB c.of_node_getasbuh1hhj&Cubj1)}(h h]h }(hjfChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj&Cubj)}(hjh]h*}(hjtChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&CubjE)}(hnodeh]hnode}(hjChhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj&Cubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"Cubah}(h]h ]h"]h$]h&]hhuh1jhjBhhhjBhKubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjBhhhjBhKubah}(h]jBah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjBhKhjBhhubj>)}(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}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chKhjDubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhjDhKhjCubah}(h]h ]h"]h$]h&]uh1jhjCubjC)}(h **Return**h]jq)}(hj(Dh]hReturn}(hj*DhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj&Dubah}(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.}(hj>DhhhNhNubah}(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}(hjmDhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjiDhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK+ubj1)}(h h]h }(hj|DhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjiDhhhj{DhK+ubj)}(h of_node_puth]jE)}(h of_node_puth]h of_node_put}(hjDhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjDubah}(h]h ](jjeh"]h$]h&]hhuh1jhjiDhhhj{DhK+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^jDsb 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}(hjEhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjDubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjDubah}(h]h ]h"]h$]h&]hhuh1jhjiDhhhj{DhK+ubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjeDhhhj{DhK+ubah}(h]j`Dah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj{DhK+hjbDhhubj>)}(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+hj*Ehhubah}(h]h ]h"]h$]h&]uh1j=hjbDhhhj{DhK+ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajEEjbjEEjcjdjeuh1j 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)}(hjOEh]h Parameters}(hjQEhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjMEubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK/hjIEubj)}(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)}(hjnEh]hstruct device_node *node}(hjpEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlEubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK,hjhEubj)}(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}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjEhK,hjEubah}(h]h ]h"]h$]h&]uh1jhjhEubeh}(h]h ]h"]h$]h&]uh1jhjEhK,hjeEubah}(h]h ]h"]h$]h&]uh1jhjIEubeh}(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}(hjFhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjFubj1)}(h h]h }(hjFhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjFubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj"FhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjFubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj$FmodnameN classnameNjbje)}jh]jk)}j^jEsbc.of_detach_nodeasbuh1hhjFubj1)}(h h]h }(hjBFhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjFubj)}(hjh]h*}(hjPFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubjE)}(hnph]hnp}(hj]FhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjFubeh}(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.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM-hjFhhubah}(h]h ]h"]h$]h&]uh1j=hjEhhhjEhM-ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajFjbjFjcjdjeuh1j 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}(hj"GhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjGhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj1)}(h h]h }(hj0GhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGhhhj/GhMubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjAGhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj>Gubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjCGmodnameN classnameNjbje)}jh]jk)}j^of_changeset_create_nodesbc.of_changeset_create_nodeasbuh1hhjGhhhj/GhMubj1)}(h h]h }(hjbGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGhhhj/GhMubj)}(hjh]h*}(hjpGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGhhhj/GhMubj)}(hof_changeset_create_nodeh]jE)}(hj_Gh]hof_changeset_create_node}(hjGhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj}Gubah}(h]h ](jjeh"]h$]h&]hhuh1jhjGhhhj/GhMubj)}(hM(struct of_changeset *ocs, struct device_node *parent, const char *full_name)h](j)}(hstruct of_changeset *ocsh](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 of_changeseth]h of_changeset}(hjGhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjGubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjGmodnameN classnameNjbje)}jh]j]Gc.of_changeset_create_nodeasbuh1hhjGubj1)}(h h]h }(hjGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubj)}(hjh]h*}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubjE)}(hocsh]hocs}(hjGhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubj)}(hstruct device_node *parenth](j)}(hj"h]hstruct}(hj HhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjHubj1)}(h h]h }(hjHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjHubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj*HhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj'Hubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj,HmodnameN classnameNjbje)}jh]j]Gc.of_changeset_create_nodeasbuh1hhjHubj1)}(h h]h }(hjHHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjHubj)}(hjh]h*}(hjVHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubjE)}(hparenth]hparent}(hjcHhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjHubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubj)}(hconst char *full_nameh](j)}(hj\h]hconst}(hj|HhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjxHubj1)}(h h]h }(hjHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjxHubj)}(hcharh]hchar}(hjHhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjxHubj1)}(h h]h }(hjHhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjxHubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxHubjE)}(h full_nameh]h full_name}(hjHhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjxHubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubeh}(h]h ]h"]h$]h&]hhuh1jhjGhhhj/GhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjGhhhj/GhMubah}(h]jGah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj/GhMhjGhhubj>)}(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=hjGhhhj/GhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajIjbjIjcjdjeuh1j 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)}(hj Ih]h Parameters}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj Iubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjIubj)}(hhh](j)}(h2``struct of_changeset *ocs`` Pointer to changeset h](j)}(h``struct of_changeset *ocs``h]j)}(hj+Ih]hstruct of_changeset *ocs}(hj-IhhhNhNubah}(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 changeseth]hPointer to changeset}(hjDIhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj@IhMhjAIubah}(h]h ]h"]h$]h&]uh1jhj%Iubeh}(h]h ]h"]h$]h&]uh1jhj@IhMhj"Iubj)}(h=``struct device_node *parent`` Pointer to parent device node h](j)}(h``struct device_node *parent``h]j)}(hjdIh]hstruct device_node *parent}(hjfIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbIubah}(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}(hj}IhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjyIhMhjzIubah}(h]h ]h"]h$]h&]uh1jhj^Iubeh}(h]h ]h"]h$]h&]uh1jhjyIhMhj"Iubj)}(h)``const char *full_name`` Node full name h](j)}(h``const char *full_name``h]j)}(hjIh]hconst char *full_name}(hjIhhhNhNubah}(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)}(hNode full nameh]hNode full name}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjIhMhjIubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjIhMhj"Iubeh}(h]h ]h"]h$]h&]uh1jhjIubjC)}(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.chMhjIubjC)}(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.chMhjIubeh}(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}(hjJhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjJhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj1)}(h h]h }(hj,JhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJhhhj+JhMubj)}(hof_changeset_inith]jE)}(hof_changeset_inith]hof_changeset_init}(hj>JhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj:Jubah}(h]h ](jjeh"]h$]h&]hhuh1jhjJhhhj+JhMubj)}(h(struct of_changeset *ocs)h]j)}(hstruct of_changeset *ocsh](j)}(hj"h]hstruct}(hjZJhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjVJubj1)}(h h]h }(hjgJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVJubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hjxJhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjuJubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjzJmodnameN classnameNjbje)}jh]jk)}j^j@Jsbc.of_changeset_initasbuh1hhjVJubj1)}(h h]h }(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVJubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVJubjE)}(hocsh]hocs}(hjJhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjVJubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjRJubah}(h]h ]h"]h$]h&]hhuh1jhjJhhhj+JhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjJhhhj+JhMubah}(h]jJah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj+JhMhjJhhubj>)}(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=hjJhhhj+JhMubeh}(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}(hjKhhhNhNubah}(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)}(hjKh]hstruct of_changeset *ocs}(hj KhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjKubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hj7KhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj3KhMhj4Kubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhj3KhMhjKubah}(h]h ]h"]h$]h&]uh1jhjJubjC)}(h**Description**h]jq)}(hjYKh]h Description}(hj[KhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjWKubah}(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}(hjoKhhhNhNubah}(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}(hjKhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjKhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj1)}(h h]h }(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjKhhhjKhMubj)}(hof_changeset_destroyh]jE)}(hof_changeset_destroyh]hof_changeset_destroy}(hjKhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjKubah}(h]h ](jjeh"]h$]h&]hhuh1jhjKhhhjKhMubj)}(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 }(hjLhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjKubj)}(hjh]h*}(hj'LhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubjE)}(hocsh]hocs}(hj4LhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjKubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjKubah}(h]h ]h"]h$]h&]hhuh1jhjKhhhjKhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjKhhhjKhMubah}(h]jKah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjKhMhjKhhubj>)}(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.chMhj[Lhhubah}(h]h ]h"]h$]h&]uh1j=hjKhhhjKhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajvLjbjvLjcjdjeuh1j 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)}(hjLh]h Parameters}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj~Lubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjzLubj)}(hhh]j)}(h/``struct of_changeset *ocs`` changeset pointer h](j)}(h``struct of_changeset *ocs``h]j)}(hjLh]hstruct of_changeset *ocs}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjLubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjLhMhjLubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1jhjLhMhjLubah}(h]h ]h"]h$]h&]uh1jhjzLubjC)}(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.chMhjzLubjC)}(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.chMhjzLubeh}(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}(hjMhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjMhhhZ/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&]uh1j0hjMhhhj-MhM ubj)}(hof_changeset_applyh]jE)}(hof_changeset_applyh]hof_changeset_apply}(hj@MhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj)}(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=hjMhhhj-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)}(hjNh]h Parameters}(hjNhhhNhNubah}(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)}(hj Nh]hstruct of_changeset *ocs}(hj"NhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM hjNubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hj9NhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj5NhM hj6Nubah}(h]h ]h"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]uh1jhj5NhM hjNubah}(h]h ]h"]h$]h&]uh1jhjMubjC)}(h**Description**h]jq)}(hj[Nh]h Description}(hj]NhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjYNubah}(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.}(hjqNhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjMubjC)}(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: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.}(hjNhhhNhNubah}(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}(hjOhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjOubj1)}(h h]h }(hjOhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjOubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hj"OhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjOubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj$OmodnameN classnameNjbje)}jh]jk)}j^jNsbc.of_changeset_revertasbuh1hhjOubj1)}(h h]h }(hjBOhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjOubj)}(hjh]h*}(hjPOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubjE)}(hocsh]hocs}(hj]OhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjOubeh}(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}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMjhjOhhubah}(h]h ]h"]h$]h&]uh1j=hjNhhhjNhMjubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajOjbjOjcjdjeuh1j 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)}(hjPh]h Description}(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.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.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMmhjOubjC)}(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: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.}(hj@PhhhNhNubah}(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}(hjoPhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjkPhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj1)}(h h]h }(hj~PhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkPhhhj}PhMubj)}(hof_changeset_actionh]jE)}(hof_changeset_actionh]hof_changeset_action}(hjPhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPubah}(h]h ](jjeh"]h$]h&]hhuh1jhjkPhhhj}PhMubj)}(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^jPsbc.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}(hjQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjPubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hunsigned long actionh](j)}(hunsignedh]hunsigned}(hjQhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjQubj1)}(h h]h }(hj,QhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubj)}(hlongh]hlong}(hj:QhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjQubj1)}(h h]h }(hjHQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubjE)}(hactionh]haction}(hjVQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubj)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hjoQhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjkQubj1)}(h h]h }(hj|QhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkQubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjQmodnameN classnameNjbje)}jh]jPc.of_changeset_actionasbuh1hhjkQubj1)}(h h]h }(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkQubj)}(hjh]h*}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkQubjE)}(hnph]hnp}(hjQhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjkQubeh}(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 }(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubj)}(hjh]h*}(hj)RhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubjE)}(hproph]hprop}(hj6RhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubeh}(h]h ]h"]h$]h&]hhuh1jhjkPhhhj}PhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjgPhhhj}PhMubah}(h]jbPah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj}PhMhjdPhhubj>)}(hhh]jC)}(h/Add an action to the tail of the changeset listh]h/Add an action to the tail of the changeset list}(hj`RhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj]Rhhubah}(h]h ]h"]h$]h&]uh1j=hjdPhhhj}PhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajxRjbjxRjcjdjeuh1j hhhj>@hNhNubjg)}(hX**Parameters** ``struct of_changeset *ocs`` changeset pointer ``unsigned long action`` action to perform ``struct device_node *np`` Pointer to device node ``struct property *prop`` Pointer to property **Description** On action being one of: + OF_RECONFIG_ATTACH_NODE + OF_RECONFIG_DETACH_NODE, + OF_RECONFIG_ADD_PROPERTY + OF_RECONFIG_REMOVE_PROPERTY, + OF_RECONFIG_UPDATE_PROPERTY **Return** 0 on success, a negative error value in case of an error.h](jC)}(h**Parameters**h]jq)}(hjRh]h Parameters}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjRubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj|Rubj)}(hhh](j)}(h/``struct of_changeset *ocs`` changeset pointer h](j)}(h``struct of_changeset *ocs``h]j)}(hjRh]hstruct of_changeset *ocs}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjRubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjRhMhjRubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjRhMhjRubj)}(h+``unsigned long action`` action to perform h](j)}(h``unsigned long action``h]j)}(hjRh]hunsigned long action}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjRubj)}(hhh]jC)}(haction to performh]haction to perform}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjRhMhjRubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjRhMhjRubj)}(h2``struct device_node *np`` Pointer to device node h](j)}(h``struct device_node *np``h]j)}(hjSh]hstruct device_node *np}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj Subj)}(hhh]jC)}(hPointer to device nodeh]hPointer to device node}(hj,ShhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj(ShMhj)Subah}(h]h ]h"]h$]h&]uh1jhj Subeh}(h]h ]h"]h$]h&]uh1jhj(ShMhjRubj)}(h.``struct property *prop`` Pointer to property h](j)}(h``struct property *prop``h]j)}(hjLSh]hstruct property *prop}(hjNShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJSubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjFSubj)}(hhh]jC)}(hPointer to propertyh]hPointer to property}(hjeShhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjaShMhjbSubah}(h]h ]h"]h$]h&]uh1jhjFSubeh}(h]h ]h"]h$]h&]uh1jhjaShMhjRubeh}(h]h ]h"]h$]h&]uh1jhj|RubjC)}(h**Description**h]jq)}(hjSh]h Description}(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.chMhj|RubjC)}(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}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj|RubjC)}(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.chMhj|RubjC)}(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.chMhj|Rubeh}(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 }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjShhhjThMubj)}(hof_changeset_add_prop_stringh]jE)}(hof_changeset_add_prop_stringh]hof_changeset_add_prop_string}(hjThhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjTubah}(h]h ](jjeh"]h$]h&]hhuh1jhjShhhjThMubj)}(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}(hj0ThhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj,Tubj1)}(h h]h }(hj=ThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,Tubh)}(hhh]jE)}(h of_changeseth]h of_changeset}(hjNThhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjKTubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjPTmodnameN classnameNjbje)}jh]jk)}j^jTsbc.of_changeset_add_prop_stringasbuh1hhj,Tubj1)}(h h]h }(hjnThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,Tubj)}(hjh]h*}(hj|ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,TubjE)}(hocsh]hocs}(hjThhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj,Tubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(Tubj)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hjThhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjTubj1)}(h h]h }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTubh)}(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]jjTc.of_changeset_add_prop_stringasbuh1hhjTubj1)}(h h]h }(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubjE)}(hnph]hnp}(hjThhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(Tubj)}(hconst char *prop_nameh](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}(hj-UhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjUubj1)}(h h]h }(hj;UhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubj)}(hjh]h*}(hjIUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubjE)}(h prop_nameh]h prop_name}(hjVUhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(Tubj)}(hconst char *strh](j)}(hj\h]hconst}(hjoUhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjkUubj1)}(h h]h }(hj|UhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkUubj)}(hcharh]hchar}(hjUhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjkUubj1)}(h h]h }(hjUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkUubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkUubjE)}(hstrh]hstr}(hjUhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjkUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(Tubeh}(h]h ]h"]h$]h&]hhuh1jhjShhhjThMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjShhhjThMubah}(h]jSah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjThMhjShhubj>)}(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=hjShhhjThMubeh}(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}(hjVhhhNhNubah}(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)}(hjVh]hstruct of_changeset *ocs}(hj VhhhNhNubah}(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)}(hchangeset pointerh]hchangeset pointer}(hj7VhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj3VhMhj4Vubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jhj3VhMhjVubj)}(h/``struct device_node *np`` device node pointer h](j)}(h``struct device_node *np``h]j)}(hjWVh]hstruct device_node *np}(hjYVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUVubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjQVubj)}(hhh]jC)}(hdevice node pointerh]hdevice node pointer}(hjpVhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjlVhMhjmVubah}(h]h ]h"]h$]h&]uh1jhjQVubeh}(h]h ]h"]h$]h&]uh1jhjlVhMhjVubj)}(h;``const char *prop_name`` name of the property to be added h](j)}(h``const char *prop_name``h]j)}(hjVh]hconst char *prop_name}(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 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&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jhjVhMhjVubj)}(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&]uh1jhjVhMhjVubeh}(h]h ]h"]h$]h&]uh1jhjUubjC)}(h**Description**h]jq)}(hjWh]h Description}(hjWhhhNhNubah}(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)}(h3Create a string property and add it to a changeset.h]h3Create a string property and add it to a changeset.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjUubjC)}(h **Return**h]jq)}(hj+Wh]hReturn}(hj-WhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj)Wubah}(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.}(hjAWhhhNhNubah}(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}(hjpWhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjlWhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj1)}(h h]h }(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlWhhhj~WhMubj)}(h"of_changeset_add_prop_string_arrayh]jE)}(h"of_changeset_add_prop_string_arrayh]h"of_changeset_add_prop_string_array}(hjWhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjWubah}(h]h ](jjeh"]h$]h&]hhuh1jhjlWhhhj~WhMubj)}(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^jWsb$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}(hjXhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjWubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubj)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hjXhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjXubj1)}(h h]h }(hj,XhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj=XhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj:Xubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj?XmodnameN classnameNjbje)}jh]jW$c.of_changeset_add_prop_string_arrayasbuh1hhjXubj1)}(h h]h }(hj[XhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubj)}(hjh]h*}(hjiXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubjE)}(hnph]hnp}(hjvXhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjXubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubj)}(hconst char *prop_nameh](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&]uh1jhjXubjE)}(h prop_nameh]h prop_name}(hjXhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjXubeh}(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}(hjYhhhNhNubah}(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&]uh1jhjXubj)}(hj\h]hconst}(hj0YhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjXubj1)}(h h]h }(hj=YhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubj)}(hjh]h*}(hjKYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubjE)}(h str_arrayh]h str_array}(hjXYhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjXubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubj)}(h size_t szh](h)}(hhh]jE)}(hsize_th]hsize_t}(hjtYhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjqYubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjvYmodnameN classnameNjbje)}jh]jW$c.of_changeset_add_prop_string_arrayasbuh1hhjmYubj1)}(h h]h }(hjYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmYubjE)}(hszh]hsz}(hjYhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjmYubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubeh}(h]h ]h"]h$]h&]hhuh1jhjlWhhhj~WhMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjhWhhhj~WhMubah}(h]jcWah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj~WhMhjeWhhubj>)}(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=hjeWhhhj~WhMubeh}(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)}(hj Zh]hstruct of_changeset *ocs}(hj ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Zubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjZubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hj$ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj ZhMhj!Zubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhj ZhMhjZubj)}(h/``struct device_node *np`` device node pointer h](j)}(h``struct device_node *np``h]j)}(hjDZh]hstruct device_node *np}(hjFZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBZubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj>Zubj)}(hhh]jC)}(hdevice node pointerh]hdevice node pointer}(hj]ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjYZhMhjZZubah}(h]h ]h"]h$]h&]uh1jhj>Zubeh}(h]h ]h"]h$]h&]uh1jhjYZhMhjZubj)}(h;``const char *prop_name`` name of the property to be added h](j)}(h``const char *prop_name``h]j)}(hj}Zh]hconst char *prop_name}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{Zubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjwZubj)}(hhh]jC)}(h name of the property to be addedh]h name of the property to be added}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjZhMhjZubah}(h]h ]h"]h$]h&]uh1jhjwZubeh}(h]h ]h"]h$]h&]uh1jhjZhMhjZubj)}(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&]uh1jhjZhMhjZubj)}(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}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj[hMhj[ubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhj[hMhjZubeh}(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)}(hjQ[h]hReturn}(hjS[hhhNhNubah}(h]h ]h"]h$]h&]uh1jphjO[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.}(hjg[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}(hj[hhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhj[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&]uh1j0hj[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&]hhuh1jhj[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}(hjE\hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjA\ubj1)}(h h]h }(hjR\hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjA\ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjc\hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj`\ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetje\modnameN classnameNjbje)}jh]j \!c.of_changeset_add_prop_u32_arrayasbuh1hhjA\ubj1)}(h h]h }(hj\hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjA\ubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjA\ubjE)}(hnph]hnp}(hj\hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjA\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}(hj0]hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj-]ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj2]modnameN classnameNjbje)}jh]j \!c.of_changeset_add_prop_u32_arrayasbuh1hhj]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)}(harrayh]harray}(hji]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}(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~]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)}(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=hj[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}(hj5^hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj1^hM hj2^ubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jhj1^hM hj^ubj)}(h/``struct device_node *np`` device node pointer h](j)}(h``struct device_node *np``h]j)}(hjU^h]hstruct device_node *np}(hjW^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjS^ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM hjO^ubj)}(hhh]jC)}(hdevice node pointerh]hdevice node pointer}(hjn^hhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjj^hM hjk^ubah}(h]h ]h"]h$]h&]uh1jhjO^ubeh}(h]h ]h"]h$]h&]uh1jhjj^hM hj^ubj)}(h;``const char *prop_name`` name of the property to be added h](j)}(h``const char *prop_name``h]j)}(hj^h]hconst char *prop_name}(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)}(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&]uh1jhj^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&]uh1jphj9_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.}(hjQ_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)}(hjb_h]hReturn}(hjd_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.}(hjx_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*}(hj0`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}(hjV`hhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjR`ubj1)}(h h]h }(hjc`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjR`ubh)}(hhh]jE)}(h device_nodeh]h device_node}(hjt`hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjq`ubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjv`modnameN classnameNjbje)}jh]j`c.of_changeset_add_prop_boolasbuh1hhjR`ubj1)}(h h]h }(hj`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjR`ubj)}(hjh]h*}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjR`ubjE)}(hnph]hnp}(hj`hhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjR`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 ahhhNhNubah}(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]j_ah ](j5j6eh"]h$]h&]j:j;)j<huh1jhj_hM,hj_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.}(hj4ahhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM,hj1ahhubah}(h]h ]h"]h$]h&]uh1j=hj_hhhj_hM,ubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajLajbjLajcjdjeuh1j 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)}(hjVah]h Parameters}(hjXahhhNhNubah}(h]h ]h"]h$]h&]uh1jphjTaubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM0hjPaubj)}(hhh](j)}(h/``struct of_changeset *ocs`` changeset pointer h](j)}(h``struct of_changeset *ocs``h]j)}(hjuah]hstruct of_changeset *ocs}(hjwahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsaubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM/hjoaubj)}(hhh]jC)}(hchangeset pointerh]hchangeset pointer}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjahM/hjaubah}(h]h ]h"]h$]h&]uh1jhjoaubeh}(h]h ]h"]h$]h&]uh1jhjahM/hjlaubj)}(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&]uh1jhjahM0hjlaubj)}(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}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjahM1hjaubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jhjahM1hjlaubeh}(h]h ]h"]h$]h&]uh1jhjPaubjC)}(h**Description**h]jq)}(hj"bh]h Description}(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.chM3hjPaubjC)}(h4Create a boolean property and add it to a changeset.h]h4Create a boolean property and add it to a changeset.}(hj8bhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM2hjPaubjC)}(h **Return**h]jq)}(hjIbh]hReturn}(hjKbhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjGbubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM4hjPaubjC)}(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.chM5hjPaubeh}(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}(hjbhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjbhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMWubj1)}(h h]h }(hjbhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjbhhhjbhMWubj)}(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&]hhuh1jhjbhhhjbhMWubj)}(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 }(hj chhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjbubj)}(hjh]h*}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubjE)}(hocsh]hocs}(hj$chhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjbubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubj)}(hstruct device_node *nph](j)}(hj"h]hstruct}(hj=chhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj9cubj1)}(h h]h }(hjJchhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9cubh)}(hhh]jE)}(h device_nodeh]h device_node}(hj[chhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjXcubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetj]cmodnameN classnameNjbje)}jh]jc!c.of_changeset_update_prop_stringasbuh1hhj9cubj1)}(h h]h }(hjychhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9cubj)}(hjh]h*}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9cubjE)}(hnph]hnp}(hjchhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj9cubeh}(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}(hj dhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjdubj1)}(h h]h }(hjdhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubj)}(hcharh]hchar}(hj%dhhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjdubj1)}(h h]h }(hj3dhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubj)}(hjh]h*}(hjAdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubjE)}(hstrh]hstr}(hjNdhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjdubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubeh}(h]h ]h"]h$]h&]hhuh1jhjbhhhjbhMWubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjbhhhjbhMWubah}(h]jbah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjbhMWhjbhhubj>)}(hhh]jC)}(h+Add a string property update to a changeseth]h+Add a string property update to a changeset}(hjxdhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMWhjudhhubah}(h]h ]h"]h$]h&]uh1j=hjbhhhjbhMWubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajdjbjdjcjdjeuh1j 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)}(hjdh]h Parameters}(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.chM[hjdubj)}(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}(hj ehhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjehMZhjeubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jhjehMZhjdubj)}(h=``const char *prop_name`` name of the property to be updated h](j)}(h``const char *prop_name``h]j)}(hj+eh]hconst char *prop_name}(hj-ehhhNhNubah}(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"name of the property to be updatedh]h"name of the property to be updated}(hjDehhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj@ehM[hjAeubah}(h]h ]h"]h$]h&]uh1jhj%eubeh}(h]h ]h"]h$]h&]uh1jhj@ehM[hjdubj)}(h6``const char *str`` pointer to null terminated string h](j)}(h``const char *str``h]j)}(hjdeh]hconst char *str}(hjfehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbeubah}(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}(hj}ehhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjyehM\hjzeubah}(h]h ]h"]h$]h&]uh1jhj^eubeh}(h]h ]h"]h$]h&]uh1jhjyehM\hjdubeh}(h]h ]h"]h$]h&]uh1jhjdubjC)}(h**Description**h]jq)}(hjeh]h Description}(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^hjdubjC)}(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]hjdubjC)}(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_hjdubjC)}(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`hjdubeh}(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=hjfhhhjfhKubeh}(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)}(hj gh]hstruct notifier_block *nb}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhj gubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjgubj)}(hhh]jC)}(hNotifier block to registerh]hNotifier block to register}(hj%ghhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj!ghKhj"gubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhj!ghKhjgubah}(h]h ]h"]h$]h&]uh1jhjfubjC)}(h**Description**h]jq)}(hjGgh]h Description}(hjIghhhNhNubah}(h]h ]h"]h$]h&]uh1jphjEgubah}(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 }(hj]ghhhNhNubjq)}(h**of_reconfig_change**h]hof_reconfig_change}(hjeghhhNhNubah}(h]h ]h"]h$]h&]uh1jphj]gubhX. The notifier callback furthermore receives a pointer to the affected device tree node.}(hj]ghhhNhNubeh}(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 }(hj~ghhhNhNubjq)}(h**OF_OVERLAY_POST_REMOVE**h]hOF_OVERLAY_POST_REMOVE}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jphj~gubh2 corresponding to the respective node it received.}(hj~ghhhNhNubeh}(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 }(hj hhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjgubh)}(hhh]jE)}(hnotifier_blockh]hnotifier_block}(hjhhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjhubah}(h]h ]h"]h$]h&] refdomainj\reftypej^ reftargetjhmodnameN classnameNjbje)}jh]jk)}j^jgsb c.of_overlay_notifier_unregisterasbuh1hhjgubj1)}(h h]h }(hj:hhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjgubj)}(hjh]h*}(hjHhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubjE)}(hnbh]hnb}(hjUhhhhNhNubah}(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}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhj|hhhubah}(h]h ]h"]h$]h&]uh1j=hjghhhjghKubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajhjbjhjcjdjeuh1j hhhj>@hNhNubjg)}(hL**Parameters** ``struct notifier_block *nb`` Notifier block to unregisterh](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:56: ./drivers/of/overlay.chKhjhubj)}(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&]uh1jhjhubeh}(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}(hjihhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjihhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMubj1)}(h h]h }(hj)ihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjihhhj(ihMubj)}(hof_overlay_fdt_applyh]jE)}(hof_overlay_fdt_applyh]hof_overlay_fdt_apply}(hj;ihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhj7iubah}(h]h ](jjeh"]h$]h&]hhuh1jhjihhhj(ihMubj)}(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}(hjWihhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhjSiubj1)}(h h]h }(hjdihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjSiubj)}(hvoidh]hvoid}(hjrihhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjSiubj1)}(h h]h }(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjSiubj)}(hjh]h*}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSiubjE)}(h overlay_fdth]h overlay_fdt}(hjihhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjSiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjOiubj)}(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^j=isbc.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&]noemphhhuh1jhjOiubj)}(hint *ret_ovcs_idh](j)}(hinth]hint}(hjihhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjiubj1)}(h h]h }(hj jhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjiubj)}(hjh]h*}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubjE)}(h ret_ovcs_idh]h ret_ovcs_id}(hj'jhhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjOiubj)}(hconst struct device_node *baseh](j)}(hj\h]hconst}(hj@jhhhNhNubah}(h]h ]j+ah"]h$]h&]uh1jhj)}(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=hjihhhj(ihMubeh}(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}(hjkhhhNhNubah}(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)}(hjkh]hconst void *overlay_fdt}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$Pa]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjkubj)}(hhh]jC)}(hpointer to overlay FDTh]hpointer to overlay FDT}(hj6khhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj2khMhj3kubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jhj2khMhjkubj)}(h<``u32 overlay_fdt_size`` number of bytes in **overlay_fdt** h](j)}(h``u32 overlay_fdt_size``h]j)}(hjVkh]hu32 overlay_fdt_size}(hjXkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTkubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjPkubj)}(hhh]jC)}(h"number of bytes in **overlay_fdt**h](hnumber of bytes in }(hjokhhhNhNubjq)}(h**overlay_fdt**h]h overlay_fdt}(hjwkhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjokubeh}(h]h ]h"]h$]h&]uh1jBhjkkhMhjlkubah}(h]h ]h"]h$]h&]uh1jhjPkubeh}(h]h ]h"]h$]h&]uh1jhjkkhMhjkubj)}(h@``int *ret_ovcs_id`` pointer for returning created changeset id h](j)}(h``int *ret_ovcs_id``h]j)}(hjkh]hint *ret_ovcs_id}(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 returning created changeset idh]h*pointer for returning created changeset id}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjkhMhjkubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jhjkhMhjkubj)}(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&]uh1jhjkhMhjkubeh}(h]h ]h"]h$]h&]uh1jhjjubjC)}(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:56: ./drivers/of/overlay.chMhjjubjC)}(h)Creates and applies an overlay changeset.h]h)Creates and applies an overlay changeset.}(hj'lhhhNhNubah}(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.}(hj6lhhhNhNubah}(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 }(hjElhhhNhNubjq)}(h***ret_ovcs_id**h]h *ret_ovcs_id}(hjMlhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjElubh.}(hjElhhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjjubjC)}(h **Return**h]jq)}(hjhlh]hReturn}(hjjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjflubah}(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. }(hj~lhhhNhNubjq)}(h***ret_ovcs_id**h]h *ret_ovcs_id}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jphj~lubho is set to the value of overlay changeset id, which can be passed to of_overlay_remove() to remove the overlay.}(hj~lhhhNhNubeh}(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 }(hj mhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlubj)}(hjh]h*}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubjE)}(hovcs_idh]hovcs_id}(hj%mhhhNhNubah}(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}(hjOmhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjLmhhubah}(h]h ]h"]h$]h&]uh1j=hjlhhhjlhMubeh}(h]h ](j\functioneh"]h$]h&]j`j\jajgmjbjgmjcjdjeuh1j 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)}(hjqmh]h Parameters}(hjsmhhhNhNubah}(h]h ]h"]h$]h&]uh1jphjomubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjkmubj)}(hhh]j)}(h1``int *ovcs_id`` Pointer to overlay changeset id h](j)}(h``int *ovcs_id``h]j)}(hjmh]h int *ovcs_id}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjmubj)}(hhh]jC)}(hPointer to overlay changeset idh]hPointer to overlay changeset id}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhjmhMhjmubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjmhMhjmubah}(h]h ]h"]h$]h&]uh1jhjkmubjC)}(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.chMhjkmubjC)}(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.chMhjkmubjC)}(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.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjkmubj)}(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:}(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))}(hparameter checksh]jC)}(hj/nh]hparameter checks}(hj1nhhhNhNubah}(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)hj*nubj))}(h%overlay changeset pre-remove notifierh]jC)}(hjGnh]h%overlay changeset pre-remove notifier}(hjInhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjEnubah}(h]h ]h"]h$]h&]uh1j)hj*nubj))}(hoverlay changeset entry revert h]jC)}(hoverlay changeset entry reverth]hoverlay changeset entry revert}(hjanhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj&nhMhj]nubah}(h]h ]h"]h$]h&]uh1j)hj*nubeh}(h]h ]h"]h$]h&]j*-uh1j)hj>nhMhj'nubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhj&nhMhjnubah}(h]h ]h"]h$]h&]uh1jhjkmubjC)}(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.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjkmubjC)}(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.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjkmubj)}(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*j{nuh1j)hjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjkmubjC)}(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.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjkmubjC)}(h **Return**h]jq)}(hj!oh]hReturn}(hj#ohhhNhNubah}(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.chMhjkmubjC)}(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. }(hj7ohhhNhNubjq)}(h ***ovcs_id**h]h*ovcs_id}(hj?ohhhNhNubah}(h]h ]h"]h$]h&]uh1jphj7oubhQ is set to zero after reverting the changeset, even if a subsequent error occurs.}(hj7ohhhNhNubeh}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjkmubeh}(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}(hjxohhhNhNubah}(h]h ]j'ah"]h$]h&]uh1jhjtohhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMubj1)}(h h]h }(hjohhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjtohhhjohMubj)}(hof_overlay_remove_allh]jE)}(hof_overlay_remove_allh]hof_overlay_remove_all}(hjohhhNhNubah}(h]h ]jQah"]h$]h&]uh1jDhjoubah}(h]h ](jjeh"]h$]h&]hhuh1jhjtohhhjohMubj)}(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&]hhuh1jhjtohhhjohMubeh}(h]h ]h"]h$]h&]hhj/uh1jj0j1hjpohhhjohMubah}(h]jkoah ](j5j6eh"]h$]h&]j:j;)j<huh1jhjohMhjmohhubj>)}(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=hjmohhhjohMubeh}(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)}(hjph]h Parameters}(hjphhhNhNubah}(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)}(hj ph]hvoid}(hj"phhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjpubj)}(hhh]jC)}(h no argumentsh]h no arguments}(hj9phhhNhNubah}(h]h ]h"]h$]h&]uh1jBhj5phKhj6pubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhj5phKhjpubah}(h]h ]h"]h$]h&]uh1jhjoubjC)}(h**Description**h]jq)}(hj[ph]h Description}(hj]phhhNhNubah}(h]h ]h"]h$]h&]uh1jphjYpubah}(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.}(hjqphhhNhNubah}(h]h ]h"]h$]h&]uh1jBhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjoubjC)}(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:56: ./drivers/of/overlay.chMhjoubjC)}(h(0 on success, or a negative error numberh]h(0 on success, or a negative error number}(hjphhhNhNubah}(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}(jphjpjpjjj;@j8@jpjpu nametypes}(jpjpjj;@jpuh}(hhjphjhj 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>jDCjICj FjFjHjHj:Jj?JjLjLjMjNjPjPjVjVjYjYj]j]jz_j_j`j`jcjcjhjhj9lj>lj'pj,pjrjrjtjtj8wj=wjyjyj{j{jyj~jҁjׁjLjQjjj^jcjjjjjj jjjJjOjjj jjdjijjjآjݢjOjTjƩj˩j=jBjjjjj,j1j%j*jj jjj/j4jj#jjj9j>jvj{jAjFjjjejjjjjjjjjjjjjYj^jjjjj\jajjjjjjjjjj"jjjDjIjRjWj]jbjjjjjtjyjjj j j j jFjKjjjj jYj^jxj}j8@jjjjjj!j!j$j$jK'jP'jj)jo)j*j*j,j-j.j.j1j1j4j4j7j7j;j;j=j=j>j>jpj>@j[@j`@jBjBj`DjeDjEjEjGjGjJjJjKjKjMjMjNjNjbPjgPjSjSjcWjhWj[j[j_j_jbjbjejfjgjgj ijijljljkojpou 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.}hjPqsbah}(h]h ]h"]h$]h&]uh1jBhjMqubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehnjlineKuh1jKquba transformerN include_log] decorationNhhub.